打印
[ZLG-ARM]

调试LPC2132的IAP时,出现一个非常奇怪的现象:

[复制链接]
1801|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wxbhlj|  楼主 | 2011-9-14 11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
按照 SelSector(1,1)  -->  EraseSector(1,1)  --> SelSector(1,1)  -->  RamToFlash(dst, src, 256) 的逻辑顺序执行,均正确,返回的状态调用的各个函数返回的状态字也是“CMD_SUCCESS”,即成功的!但是程序执行完这四个函数后,就停在这里了,好像是“死机”似的,再无任何 反应。当LPC2132板子重启后能够看到上次写入到Flash里的信息是正确的。

相关帖子

沙发
wxbhlj|  楼主 | 2011-9-14 11:06 | 只看该作者
继续上面主题:然后单步跟踪上面的四个函数,发现进入 SelSector(1,1) 函数执行第一条语句“paramin[0] = IAP_SELECTOR;” 后,主程序就会出现上面提及的“死机”现象,尽管仍然会把4个函数跑完并返回的状态字也正确的。我作了一个实验,把“paramin[0] = IAP_SELECTOR;” 这条语句注释后,其它不做任何改变,程序完全正常运转!这是什么原因?非常郁闷!!

使用特权

评论回复
板凳
wxbhlj|  楼主 | 2011-9-14 11:07 | 只看该作者
继续上面主题:附:我在 “mem_c.scf” 等三个文件中使用如下分散加载的方式,不知正确否?【因为我的主程序有50.6k,所以采用分散加载,选择扇区1来保存“PC机下发的一些配置信息”】。请大侠指导,问题到底出现在哪里?

     

ROM_LOAD 0x0
{
    ROM_EXEC 0x00000000
    {
        Startup.o (vectors, +First)     
    }

    ROM_EXE1 0x00002000  FIXED
    {      
        * (+RO)
    }
   
    IRAM 0x40000000
    {
        Startup.o (MyStacks)
        * (+RW,+ZI)
    }

    HEAP +0 UNINIT
    {
        Startup.o (Heap)
    }

    STACKS 0x40004000 UNINIT
    {
        Startup.o (Stacks)
    }
}

使用特权

评论回复
地板
wxbhlj|  楼主 | 2011-9-14 18:07 | 只看该作者
请高手指教,谢谢!

使用特权

评论回复
5
金鱼木鱼| | 2011-9-15 00:43 | 只看该作者
学习了,不错!

使用特权

评论回复
6
wxbhlj|  楼主 | 2011-9-15 09:58 | 只看该作者
ding

使用特权

评论回复
7
wxbhlj|  楼主 | 2011-9-15 20:43 | 只看该作者
help

使用特权

评论回复
8
joinecy008| | 2011-9-28 15:17 | 只看该作者
IAP调用时,RAM最顶端的32个字节不能用

使用特权

评论回复
9
joinecy008| | 2011-9-28 15:17 | 只看该作者
;Build the SYS stack
;设置系统模式堆栈
        MSR     CPSR_c, #0xd0
        LDR     SP, =StackUsr-32              
        MOV     PC, R0

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

30

帖子

1

粉丝