这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 2812从内部flash启动的过程

共3条 1/1 1 跳转至

2812从内部flash启动的过程

工程师
2015-01-03 20:20:15     打赏
a)程序硬件复位或者软件复位
         b)判断mp/mc是否为0,微计算机模式(为1,当为微处理器模式时,2812内部的bootrom被禁止,通过zone7从外部调引导程序启动。)
         c)为0则从boot rom启动,否则从外部启动(0x3F FC00)
         d)到boot rom的0x3F FC00处取出复位向量,跳到boot函数:2812有一块flash地址从0x3F F000-0x3F FFFF在出厂时ti已经固化好了引导程序iniboot: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)

 
注:1》根据INTER NET上别人的资料,以及针对程序的推敲,总结如上。
        2》地址均为我程序实际观测到的值,和网上别人所言有出入。如:有言boot rom地址为0x3F FFC0,iniboot(起始地址0x3F FB50)。

高工
2021-03-01 16:14:29     打赏
2楼

谢谢分享


工程师
2021-03-01 22:53:27     打赏
3楼

确实蛮不错的


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]