您好、查姆斯、
我的客户希望在 CM4中实现引导加载程序、他为引导和应用代码削减闪存。 应用代码.reshtisr 的地址为0x00210000、入口点为0x002103C5。
如果软件分支到.reshtisr、则引导代码无法分支到应用代码、如果直接分支到入口点、则启动代码运行良好。 当我们研究这个问题时、发现当我们分支到.reshtisr 时、PC 的内容为0x002103C4 (应用代码将立即分支到_c_int00_noinit_noargs )、而不是0x002103C5。
我们检查.map 文件并发现 有两个不同的地址_c_int00_noinit_noargs、这个 问题似乎是由于 ARM Thumb 模式引起的、我是不是正确的? 我们应该怎么做才能使 CM4分支到应用代码.reshtisr 并 顺利执行?
部分分配映射
输出 属性/
段 页 原点 长度 输入段
---- -------- ------ --------
重新密封
* 0 00210000 00000006
00210000 00000006 startup_cm.obj (.resettisr:resetISR)
text.1 0 0021017c 00000284
0021017c 0000009c rtsv7M4_T_le_eabi.lib:memcpy_t2.asm.obj (.text)
00210218 00000094 app_led_blinky_cm.obj (.text:GPIO_writePin)
002102ac 00000076 cm.obj (.text:cm_enableAllPeripherals)
00210322 00000002 startup_cm.obj (.text:defaultISR)
00210324 00000050 app_led_blinky_cm.obj (.text:main)
00210374 00000008 driverlib_cm.lib:sysctl.obj (.tramp.sysctl_delay.1)
0021037c 00000048 :sysctl.obj (.text:sysctl_enablePeripheral)
002103c4 00000020 rtsv7M4_T_le_eabi.lib:boot_cortex_m.c.obj (.text:_c_int00_noinit_noargs:_c_int00_noinit_noargs)
002103e4 0000001a app_led_blinky_cm.obj (.text:GPIO_isPinValid)
002103fe 00000002 startup_cm.obj (.text:faultISR)
全局符号:按名称按字母顺序排序
地址名称
---- ----
002103c5 _c_int00_noinit_noargs
002105db _system_pre_init
002105df 中止
感谢您的帮助、
Luke