你(们)好
我将在定制板上使用 CCS11和 SDK5.30为 CC1312R 制作引导加载程序。
引导加载程序现在能够使用应用程序对闪存进行编程、然后跳转到其开始位置、但随后会崩溃。
当我单步使用调试器时、我看到:
00012450:B508推{R3、r14}
00012452:F000F873 BL #0x1253c
00012456:F7FEFC95 BL #0x10d84
0001245a:F7FFBE0B b.w #0x12074 <<-此调用崩溃
以下代码用于:
resetISR():
00012450:B508推{R3、r14}
00012452:F000F873 BL NOROM_CPUCPsid
00012456:F7FEFC95 BL NOROM_SetupTrimDevice
0001245a:F7FFBE0B b.w _c_int00 <<-这是崩溃的调用、C 初始化
0001245e:F7FFFDA8 BL FAULTISR
00012462:BD08 POP{R3、PC}
最后是:
000122a6: E7FE B intDefaultHandler
对应于.map 文件的是:
000122a6 00000002 nortos_cc13x2.a:startup_cc13x2_cc26x2_ccs.oem4f (.text:intDefaultHandler)
我的 JUMP 将 MSP、VTOR 和 PC 设置为:
void App_jump (void)
{
__Set_MSP (*((UINT32_t*) app_address )));
*((unsigned long *) 0xE000ED08/* VTOR *)=(unsigned long) app_address;
(*((App_VectorTable_Reset_t)(*(uint32_t*)(app_address +4))))();
}
有人能 不能给我一些想法 、为什么应用程序在_c_int00中崩溃、以 intDefaultHandler 结尾?
应用程序在其起始地址位于闪存的0x0时运行正常。 当应用程序在引导加载程序下运行时、需要使用0x10000的起始地址重新编译。 此外、闪存的大小也减小到 0x00046000。 前64K 用于引导加载程序、后8K 包含器件配置、因此 Flash 页面保持不变。
#define FLASH_base 0x00010000
#define FLASH_SIZE 0x00046000 //引导加载程序限制为64K。 总闪存为352K、0x58000。 最后8K 由器件配置使用。 *
最后对.ccfg 部分进行了注释、以便应用程序使用器件配置字节而不是自己的字节。 无论如何、它们都是相同的。
/*.ccfg:> FLASH (高电平)*/
我找到了该文件:
C:\ti\simplelink_cc13xx_cc26xx_sdk_5_30_01_01\kernel\nortos\startup\startup_cc13x2_cc26x2_ccs.c
这似乎是 CC1312R 的启动。 如何确保这是正确的文件? 如何将文件包含到工程中以便进行调试?
但我仍然找不到 _c_int00的代码。 这是在哪里?