7.9.6.将 GEL 初始化移动到生产代码

在工程的调试阶段,依靠 GEL 文件执行 EMIF 初始化等任务非常方便。但是,当应用接近生产时,由 GEL 脚本执行的硬件初始化设置需要移至引导加载或其他初始化代码,并且需要删除任何内在宏或其他面向调试的构建。

通常,硬件初始化函数是从 OnTargetConnect() 回调函数内部调用的,但其他函数也可能出现在 OnReset()OnFileLoaded() 上。仔细检查启用内部外围设备或外部设备的例程(DDR、MAC PHY、PMIC、看门狗等)– 幸运的是,GEL 语法与标准 C 语法相匹配,因此绝大多数典型 init_emif()watchdog_disable() 例程可以移至 .c 文件并与应用链接在一起。

当需要访问存储器映射的寄存器时,最好添加“volatile”限定符,以确保编译器不会删除存储器引用。

*(volatile int *)EMIFA_SDRAMTIM = 0x00000618; /* SDRAM timing (refresh) */

删除或注释掉所有对 GEL 宏内置 GEL 函数的引用,因为它们与目标硬件无关。

  • 考虑创建一个单独的 GEL 文件,该文件仅通过 GEL_MapAdd() API 设置存储器映射,以启用 CCS 调试,但不再执行硬件初始化例程。

应用手册创建器件初始化 GEL 文件 (spraa74a) 的第 5 节包含一些附加信息。