DSP上电复位后,会触发RESET中断,中断指向固化在片内ROM中的Bootloader代码。这是出厂就存在的引导程序,不可修改。
RESET向量位于固化在boot ROM中的CPU Vector Table。TMS320x2803x的CPU Vector Table位于地址0x3F E000 - 0x3F FFFF。
RESET以后,启动Initboot。Initboot位于BootLoader function区,在程序debug运行时候查看内存图。
地址位于0X003FF8A1.
然后执行这段程序,程序逻辑如下
当仅使用一次引导的程序跳转功能,不使用一次引导复制程序时,上图中条件判断“Call Get_Mode()?”和“Call Boot Loader?”将不被满足,从而执行“No”分支,最终默认配置将进入FLASH区域的BEGIN区(地址0x3F 7FF6)。
在利用仿真器运行程序时候,我们能看到的最开始的起始程序地址就是0x3F 7FF6
然后运行跳转到codestart,
程序位于DSP2803x_CodeStartBranch.asm,这段程序可以自己改,最终这段程序运行完就跳转到_c_int00
_c_int00为了c语言运行做准备。主要完成了
1) 定义系统栈.stack,并初始化栈指针,配置相关寄存器
2) 初始化全局变量(.cinit)
3) 若使用C++,还会完成全局对象构造(.pinit)
4) 调用main函数运行C程序
5) 当main函数return时,调用exit函数
之后就跳转到main函数