尊敬的TI团队:
跳转至应用地址的分支组装说明。
要从Bootloader跳转至应用程序代码,应使用哪个程序集指令以及如何使用该程序集指令。 装配说明必须写入C文件。
谢谢,此致,
Vijay B. Shinde
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的TI团队:
跳转至应用地址的分支组装说明。
要从Bootloader跳转至应用程序代码,应使用哪个程序集指令以及如何使用该程序集指令。 装配说明必须写入C文件。
谢谢,此致,
Vijay B. Shinde
1)此1227此符号404.8255万符号定义404.8255万定义的方式和位置[/rm]RM是任何MCU通用寄存器。
[/quote][/quote]应用1227应用程序404.8255万程序代码404.8255万代码地址在ASM/BL800X中开始,请引用/BL800X,如何在上面的配置文件中定义。asm (" mov R12,#0x8万");
ASM (" blx R12");
[/quote]2) ((void/ifue)1227((void/ifue)</s>404.8255万 404.8255万不,这是来自我的bootloader示例项目。 g_ulTransferAddress是应用程序的启动地址。
尊敬的QJ Wang:
感谢您的回复。 但下面仍有一些疑虑。
1) ASM (" mov R12,#0x20万");
ASM (" blx R12");
在CCS编译器中无法正常工作
在此行进行调试时,我们也不能放置断点。
2) 请您提供相应程序的定义:
#define app_start_address 0x2万U
G_ulTransferAddress =(UINT32_t) app_start_address;
(void (*)(void)) g_ulTransferAddress)();
谢谢,此致,
Vijay B. Shinde
您好,Vijay,
1) ASM (" mov R12,0x2万");
ASM (" blx R12");
应该正常工作。
这是一个示例。 0x5960是sciInit()的地址。
2)
请1227请提供404.9976万提供相应404.9976万相应例程的定义[/报价]:((void (*)(void)) 0x2万)();
在上述函数调用中,(void (*)(void))是数据类型:指向不接受参数且返回void的函数的指针。
0x2万是要转换的地址。 类型转换后,函数指针指向地址0x2万。 请注意,我们在 数据类型和0x2万周围放置了括号()。 如果我们只想将0x2万类型转换为函数指针,则不需要这样做。 但是,由于我们将调用该函数,因此需要使用这些括号。
将数字常量转换为指针与通过指针调用函数不同。 为此,我们必须指定参数列表。 这就是行末尾的()的作用。
请注意,此表达式中的所有括号都是必需的。 分组和优先顺序非常重要。