我按照TI的文档,烧写flash编译都没有问题,即没有错误也没有警告,但是烧写后程序不运行。于是又对照文档仔细看了一遍,怀疑是看门狗在C程序初始化之前就溢出了。因为我按照文档上的说明,执行以下步骤:
1、File-->Load symbols-->Load symbols only;
2、Debug-->Reset CPU;
3、Debug-->Go main(根据说明,因为我是从flash启动,所以没有执行Restart)
如果程序没有跳到main函数处,说明看门狗溢出。而我的程序执行完上面三步之后就直接running了,停止运行指针就停在Memcpy函数处,怎么也跳不出来。所以我怀疑我烧写不成功是因为程序在C程序初始化之前看门狗已经溢出。于是按照文档说明,添加了Codestart.asm,文件中有对看门狗溢出进行处理的语句。但我执行上面三个步骤还是不能进入到主函数处。所以想问问到底是什么原因?我上面的判断有没有错误或者考虑不全的地方?谢谢!
代码里有没有加上flash init()的代码,把flash提一下速。
我加了initflash的代码啊,我都是按照TI那个文档来执行的,难道是flash没有提速造成的吗?tonyzheng你说的提速怎么提啊?我觉得还是看门狗问题啊,就是不清楚为什么我加了禁止看门狗的语句在load symbols后还是无法Go main,知道的或者碰到过类似问题的同志们给我点建议吧,先谢谢了!
我把我的问题再描述清楚一点,为了关闭看门狗,我在Codestart.asm文件中是这样写的:
WD_DISABLE .set 1
.ref _c_int00
.def codestart
.sect "codestart"
codestart:
.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:
EALLOW
MOVZ DP, #7029h>>6 ;Set data page for WDCR register
MOV @7029h, #0068h ;Set WDDIS bit in WDCR to disable WD
EDIS
LB _c_int00 ;Branch to start of boot.asm in RTS library
.endif
.end
完全是按照TI描述的那样修改的,load symbols后还是无法go main,请EEWORLD的老师给我点建议吧。
flash初始化的代码里有加速寄存器的设置,你加了这部分需要copy到ram运行的。
Codestart这部分直接用ti例程的代码就可以了。