打印

关于2812上电引导过程

[复制链接]
853|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Sode|  楼主 | 2017-10-13 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于2812上电引导过程


2812有两种运行模式,微处理器(Microprocessor)模式和微计算机(Microcomputer)模式,复位时,芯片判断XMP/MC引脚上的电平,当该引脚为高电平时,芯片进入微处理器模式,当为低电平时则进入微计算机模式。在微处理器模式下,芯片需要从第7外部接口区引导运行(XINTF Zone 7)。只有在微计算机模式下,芯片才会从内部Boot Rom引导。XMP/MC引脚的状态在复位时锁存入芯片配置寄存器XINTCNF2中MP/MC位,复位后,XMP/MC引脚上的电平就不再有效,芯片将不再关心其状态。用户可以通过改变XINTCNF2的MP/MC位来重新配置芯片运行模式。

说的明白易懂一点,XMP/MC的值影响的是在0x3FFFC0--0x3FFFFF的地址范围上映射的是BROM向量(从ROM中获取)还是XINTF向量(从XINTF Zone7中获取):0为BROM向量,1为XINTF向量;

当为微计算机模式,芯片从内部Boot Rom引导;Bootloader通过检测四个通用IO口得状态来确定使用哪种引导模式。四个IO状态及对应的引导模式如下表所示:
GPIOF4(SCITXDA)GPIOF12(MDXA)GPIOF3(SPISTEA)GPIOF2(SPICLK)引导模式
PUNo PUNo PUNo PUGPIO是否内部拉高
1XXXFlash引导模式,跳转到Flash地址X3F7FF6
01XXSPI引导模式,调用SPI_Boot,从外部串行SPI EEPROM 启动
0011SCI引导模式,调用SCI_Boot从SCI-A引导启动
0010H0 SARAM引导模式,跳转到H0 SARAM地址0x3F8000
0001OPT引导模式,跳转到OPT地址0x3D7800
0000并行引导模式,调用Parallel_Boot从通用IO口B口启动


最常用的为Flash引导模式,硬件上确保DSP的XMP/MC管脚接地,且SCIATXDA脚不被拉低;

当XMP/MC接低电平,表示微计算机模式,那么0x3FFFC0指向的是2812的片内Flash的地址。上电复位后,复位向量是指向片内Flash的0x3FFFC0。2812有一块Boot Rom,地址为0x3FF000--0x3FFFFF,在出厂时已经固化好了引导程序。在0x3FFFC0处是一条跳转指令,跳到iniboot(地址0x3FFB50)函数处执行iniboot代码,该iniboot代码在出厂时已固化在Flash中。iniboot函数判断4个GPIO引脚来判断使用哪一种引导模式,比如Flash boot模式,当SCITXDA为高电平时表明是片内Flash boot模式,那么iniboot执行后跳转到0x3F7FF6处,此位置刚好在128位密码位置之前,你需要自己在0x3F7FF6处放置跳转指令(GEGIN :origin=0x3F7FF6,length=0x000002;codestart :>BEGIN PAGE=0)

codestart函数在文件DSP281x_CodeStartBranch.asm中用汇编语言实现的。如下:

/**************************************************************/

.sect "codestart"
code_start:
.if WD_DISABLE == 1
LB wd_disable ;Branch to watchdog disable code
.else
LB _c_int00 ;Branch to start of boot.asm in RTS library
.endif
.if WD_DISABLE == 1
.text
wd_disable:
SETC OBJMODE
EALLOW
MOVZ DP, #7029h>>6
MOV @7029h, #0068h
EDIS
LB _c_int00
.endif
.end


在0x3F7FF6取出跳转指令,跳转到自己的制定地址或者C初始化的入口_C_INT00处,在C初始化的入口_C_INT00对一些变量,堆栈和寄存器进行必要的设置,该函数在C的库函数内,最后进入Main函数;

以上纯属个人理解,有不对的或是需要补充的欢迎回复!

相关帖子

沙发
angerbird| | 2017-10-13 19:36 | 只看该作者
2812有两种运行模式,微处理器(Microprocessor)模式和微计算机(Microcomputer)模式,就看具体的应用的。

使用特权

评论回复
板凳
sanfuzi| | 2017-10-13 22:20 | 只看该作者
还真不知道运行分为模式的呢。

使用特权

评论回复
地板
sanfuzi| | 2017-10-13 22:37 | 只看该作者
微处理器模式和微计算机模式运行的时候能够切换吗?

使用特权

评论回复
5
smilingangel| | 2017-10-13 22:57 | 只看该作者
Bootloader通过检测四个通用IO口得状态来确定使用哪种引导模式,,也就是说通过IO口的哦诶之就可以进入到对应的模式中。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1049

主题

1522

帖子

8

粉丝