DSP2812的启动过程

[复制链接]
6273|3
 楼主| lfzhou1006 发表于 2011-10-9 15:19 | 显示全部楼层 |阅读模式
a)程序硬件复位或者软件复位
b)判断mp/mc是否为0,微计算机模式(为1,当为微处理器模式时,2812内部的bootrom被禁止,通过zone7从外部调引导程序启动。这个比较适合flash引导的启动。)
c)为0则从boot rom启动,否则从外部启动(0x3F FC00)
d)到boot rom的0x3F FC00处取出复位向量,跳到boot函数:2812有一块flash地址从0x3F F000-0x3F FFFF在出厂时ti已经固化好了引导程序initboot:Iniboot函数判断几个GPIO引脚来判断使用哪一种引导模式,比如flash boot模式,检测SPICLKA,SCITXA,GPIO34的电平,当都为高电平时表明是片内flash boot模式,那么initboot执行完后跳转到0x3F 7FF6处,这个时候指令占据两个字节,刚好在代码模块之前。一定是是跳转指令才行。。。)
e)采集io管脚状态,确定启动模式。2812提供几种启动模式:
SCITXDA(GPIOF4) MDXA(GPIOF12) SPISTEA(GPIOF3) SPICLK(GPIOF2)
1 x x x FLASH启动
0 1 x x SPI启动
0 0 1 1 SCI启动
0 0 0 0 PARALLEL启动

f)根据io状态选择boot方式
g)如果是flash,程序退出boot函数,跳转到0x3F 7FF6(codestart)
h)取出跳转指令,跳转到自己的指定地址或者C初始化的入口_C_INT00(0x3F6000)处(DSP281x_CodeStartBranch.asm中)
i)在C初始化的入口_C_INT00对一些变量,堆栈和寄存器进行必要的设置,该函数在c的库函数内(RTS Library)
j)进入main函数(0x3F658E,这个地址不是固定的。但是在flash里面。)


注:根据TI中文手册总结如上。。。。。



3F8238
_c_int00: 这个地址是我一次程序运行观测到的。这个地址会随时的变化,但是总在3F8000到3FA 000 之间,也就是在H0 SRAM中间。
具体的可以参照TMS320F2812的存储器的空间。。
3B1105 发表于 2011-10-30 16:54 | 显示全部楼层
很好,不错!
huangzhezhi 发表于 2013-8-16 00:25 | 显示全部楼层
能否提供实例代码程序?
xklzw 发表于 2014-8-21 10:48 | 显示全部楼层
对我有点启发 但是还是懵懵懂懂的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

340

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部