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 节包含一些附加信息。