请教2812烧写时看门狗溢出问题

rwlggd   2010-3-2 10:33 楼主
我按照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,文件中有对看门狗溢出进行处理的语句。但我执行上面三个步骤还是不能进入到主函数处。所以想问问到底是什么原因?我上面的判断有没有错误或者考虑不全的地方?谢谢!

回复评论 (4)

代码里有没有加上flash init()的代码,把flash提一下速。
点赞  2010-3-3 02:08
我加了initflash的代码啊,我都是按照TI那个文档来执行的,难道是flash没有提速造成的吗?tonyzheng你说的提速怎么提啊?我觉得还是看门狗问题啊,就是不清楚为什么我加了禁止看门狗的语句在load symbols后还是无法Go main,知道的或者碰到过类似问题的同志们给我点建议吧,先谢谢了!
点赞  2010-3-3 03:35
我把我的问题再描述清楚一点,为了关闭看门狗,我在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的老师给我点建议吧。
点赞  2010-3-3 06:46
flash初始化的代码里有加速寄存器的设置,你加了这部分需要copy到ram运行的。
Codestart这部分直接用ti例程的代码就可以了。
点赞  2010-3-4 09:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复