1、一般不用你换 GEL.LIB 文件,用原来的就可以.
2、换完 FLASH 的 CMD 后,不要烧写,看下.MAP 文件,主要是看 0X3F 7FF8 处有没有烧内容.如果有别烧,
改,直到这处没有烧入内容.
3、如果没有烧入其他的内容,则可以烧了.烧完后,RESET CPU 看是不是到 0X3F FFC0 处,如果不是,看 是
不是你的 MP/MC=0 了,并且是不是 FLASH 启动模式,即所有 4 个脚都是高(只要第一个脚是高就可以,即
1XXX)
4、如果 RESET CPU 是到 0X3F FFC0 处,即可以断电,并且拔掉与板子相连的仿真器接口(注意拔电脑上的
USB 不好使),然后上电,自动运行.
注意:其中遇到的问题:
烧写\时说 初始化 RAM,和寻找 BOOT.ASM 都不用管_
如果说是 NOT AN execuTivefile ,则在 PROJECT_BULIT OPTION_LINK_OUT MODLE
_absolute file
最重要是可以断电,并且拔掉与板子相连的仿真器接口(注意拔电脑上的 USB 不好使),然后上
电,自动运行.我遇到的是这些,我用以上方法解决了,但不知道为什么,所以大家都说说经验,让
新手烧走弯路,少 LOCK2812
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)
2812 上电引导过程
从上电到我们的主函数运行之间这段时间里 2812到底做了些什么?2812是怎样引导程序运行的?下面叙述
其启动过程。
在 2812 中引脚 XMP/~MC,当该引脚的为高电平时表示是微处理器模式(microprocessor),为低
电平时表示微机算计模式(microcomputer),当为微处理器模式时,2812 内部的 bootrom 背禁止,通过 zone7