主题中讨论的其他器件: EK-TM4C123GXL、 DK-TM4C123G
我想为 Tiva c 系列(TM4C123GH6PM)评估板编写一个引导加载程序。 我阅读了 TI 的一些文档、例如 ARM 汇编语言工具用户指南和 TivaWare 引导加载程序用户指南。
我对这个概念和细节有一些疑问、我希望有人能帮我解决这些问题。
评估套件:EK-TM4C123GXL
CCS 版本:7.4.0.00015
1.如何知道从 PC 获得复位矢量地址到执行 main()的程序流程。
我想知道在执行 main 函数之前、所有设置和进程都发生了什么。
我尝试在 tm4c123gh6m_startup_ccs.c 文件中添加一个断点、该文件具有_c_int00函数、这是在 ResetISR 中调用的函数。
但是控制没有在断点停止、它直接进入 main。
根据我的理解、Cortex-M4微处理器的矢量表包含四个必需的条目、起始格式为地址0:初始堆栈
复位处理程序地址、NMI 处理程序地址和硬故障处理程序地址。 当处理器复位时、它跳转到复位矢量
该地址将是引导加载程序的起始点。 然后、引导加载程序将自身和矢量表复制到 SRAM、然后从该 SRAM 执行。
在哪里可以找到该操作的代码、以便可以在引导加载程序中实现该操作。
3.我在 CCS 中创建了一个测试项目、在这里我更改了 tm4c123gh6m_startup_ccs.c 文件中的 ResetISR 函数、并使其跳转到我的函数(test 函数)而不是_c_int00函数。
当我运行程序时、控件进入 main、而不进入测试函数、这是为什么会发生这种情况。
这是我的 ResetISR 函数
无效
ResetISR (空)
{
_asm (" .global testFunc\n"
" b.w testFunc");
}
4. TivaWare 引导加载程序用户指南中显示 CCS 的启动代码将位于文件 BL_STARTUP_CCS.s 中、在哪里可以找到该文件?
如果我的理解有任何错误、请告诉我。
提前感谢。
