重剑无锋 https://bbs.21ic.com/?425187 [收藏] [复制] [RSS]

日志

2812从内部flash启动的过程

已有 1852 次阅读2007-6-29 13:37 |个人分类:DSP|系统分类:DSP| 2812从内部flash启动的过程

         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)。

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)