DSP|DSP启动流程
【DSP|DSP启动流程】
TI支持很多种方式的boot,内部的ram(saram),flash,sci,spi等等,但无论哪种启动都遵循下面的流程。
而该流程中的reset,initboot,call selectbootmode, read i/o state, call boot loader这些步骤都是固化在芯片内的程序自己执行的,也就是说这些代码在出厂的时候已经在TI的芯片内。在28335中是一段的8k*16的read-only的memory,地址位于0x3fe000-0x3fffff,见下图:
根据上面的流程图和rom分布图,详细的解释一下流程:
1.在3f ffc0到3f ffff其实是放了中断向量表的地方:系统一开机当然是处于reset中断,因此直接跳至reset的地方执行(0x3f ffc0)。而这个地方的两个字节只是放了一条指令,就是跳至initboot函数,也就是3f f34c的地址执行boot load.
2.在3f f34c的bootloader操作中会去检测外部GPIO口的状态,从而判断是哪种方式的启动:
3. 然后根据相依的启动方式跳至相应的入口地址:比如FLASH启动就是0x33fff6, 内部SARAM启动就是0x0.
4. 而这里的入口地址就是cmd文件中定义的begin段。因此对于flash启动和ram启动,begin的定义是不同的,在flash启动时begin就是 0x33fff6 ,而ram启动begin就是0x0. 这个2个字的区间也就是放了我们程序最初执行的第一条指令(通常是code_start).
因为
CSM_PWL
的存放位置是在
0x33fff8,
因此只有
2
个
words
空间来存放跳转指令。而一条长跳转指令
LB
刚好占两个字节(这摆明着是
ti
精心设计的)
推荐阅读
- Hive常见问题汇总
- 注册分销商的骄傲
- 迅捷流程图制作软件的使用方法!
- 如何启动改变
- spring|spring boot项目启动websocket
- Android系统启动之init.rc文件解析过程
- Python专栏|数据分析的常规流程
- mysql提示无法找到句饼_找不到数据库启动句柄
- 2018-03-11|2018-03-11 存储过程
- 简述JavaEE学习流程