工具/软件:Code Composer Studio
大家好、团队、
“我有一位客户对 CCS 内部的 TMS320F28375D 初始化有疑问。”
我的问题
我有不同的全局变量声明为通过 EMIF 总线连接到 Delfino TMS320F28375D 的外部存储器(我使用的是编译器版本 TI v18.1.3.LTS)。 EMIF 总线初始化在引导中的 globval 变量初始化之后发生。 这是我的问题、因为当我需要使用这些全局变量(在外部存储器中定义并在定义中使用特定值初始化)时、它们没有初始化值、因为 EMIF 总线初始化在全局变量初始化之后发生。
我的解决方案
在 TI 编译器文档中、我发现我可以通过使用_system_pre_init ()函数的自定义动词(存在于 pre_init.c TI 文件中)来解决我的问题。 实际上、通过将 EMIF 总线初始化函数放置在该函数中、该总线初始化将在引导中进行全局变量初始化之前发生。
我遇到的问题
我通过将 pre_init.c 文件链接到工程将这个定制的_system_pre_init()函数连接到工程,我在其中插入了 InitEmif()函数并编译工程。 通过这种方式,运行时库将调用我的自定义_system_pre_init()函数(这是我在论坛中读取的内容)。 它实际上在引导期间被调用,但请将附件的图片作为参考,当执行第125行的指令时,调用_system_pre_init()。 但是、当 PC 开始执行该指令时、第58行是调试器运行的该指令的最后位置。 从不调用 InitEmif(),因为_system_pre_init()在运行第58行后退出。 我不明白为什么永不调用 InitEmif()并且_system_pre_init()立即存在。
是否有一些说明_system_pre_init()函数用法的文档或示例?
