DSP2812启动过程.docVIP

  • 45
  • 0
  • 约1.55万字
  • 约 13页
  • 2017-07-03 发布于湖北
  • 举报
DSP2812启动过程概要1

2812的内部lash启动过程 2812flash启动过程 2812从内部flash启动的详细流程说明: a)程序硬件复位或者软件复位 b)判断mp/mc是否为0 c)为0则从boot rom启动,否则从外部启动 d)到boot rom的0x3F FFC0处取出复位向量,跳到boot函数 e)采集IO管脚状态, f)根据IO状态选择boot方式 g)如果是flash,程序退出boot函数,跳转到0x3F 7FF6 h)取出跳转指令,跳转到自己的指定地址或者C初始化的入口_C_INT00处 i)在C初始化的入口_C_INT00对一些变量,堆栈和寄存器进行必要的设置,该函数在c的库函数内 j)进入main函数 从上电到我们的主函数运行之间这段时间里2812到底做了些什么?2812是怎样引导程序运行的?下面叙述其启动过程。 ? 在2812中引脚XMP/~MC,当该引脚的为高电平时表示是微处理器模式(microprocessor),为低电平时表示微机算计模式(microcomputer),当为微处理器模式时,2812内部的bootrom被禁止,通过zone7(0x3F C00)2812复位以后,其复位向量是固定的0x3FFFC0,如果为微处理器模式,那么复位后的复位向量指向的外部的地址,即0x3FFFC0是zone7处的地址,若为微机算计模式,那么0x3FFFC0指向的是2812的片内FLASH的地址。下面就以微机算计模式加以说明其过程。 上电复位后,复位向量是指向片内Flash的0x3F FFC0,2812有一块flash地址从0x3F F000-0x3F FFFF在出厂时已经固化好了引导程序。在0x3F FFC0处是一条跳转指令,跳到iniboot(地址0x3F FC00)函数处执行iniboot代码,该iniboot代码就是TI在dsp出厂时固化在flash中的。InitBoot assembly Routine将选择SelectBootMode function启动模式函数。这个函数由GPIO 引脚的状态决定启动类型。 引导模式选择 GPIOF4 GPIOF12 GPIOF3 GPIOF2 (SCITXDA) (MDXA) (SPISTEA) (SPICLK) PU No PU No PU No PU Mode Selected 1 X X X 跳转到地址为0x3F7FF6的Flash,用户必须在这里编写分支语句优先于复位,以按需要重新定位代码的执行. 0 1 X X 调用SPI_Boot 以从外部的EEPROM载入 0 0 1 1 调用SCI_Boot 以从SCI-A载入 0 0 1 0 J跳转到 H0 SARAM 0x3F 8000 0 0 0 1 跳转到OTP地址 0x3D 7800 0 0 0 0 调用Parallel_Boot从GPIO 端口B载入 一旦启动结束,选择启动模式函数返回一入口地址给InitBoot函数。入口地址是退出bootloader之后代码开始执行的起始点。InitBoot接着将会调用ExitBoot子程序,把CPU寄存器的状态恢复到复位状态。比如flash boot模式,那么initboot执行完后跳转到0x3F 7FF6处(codestart处),此位置刚好在128位(CSM)密码位置之前,你要在0x3F 7FF6处放置跳转指令,以跳转到你要去的地方,比如是boot loader或应用代码,通常的跳转去处是_c_int00。在0x3F 7FF6 处放置跳转指令的方法如下(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, #7029h6? ? ? MOV @7029h, #0068h? ? ? EDIS? ? ? ? ? ? ? ? ? ? LB _c_int00? ? ? ? .endif .end MEMERY ?{ ? ? ? ? Page 0: ? ? ? ? ? ?……….. RAML0 : origin = 0x

文档评论(0)

1亿VIP精品文档

相关文档