这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » IAP 关于IAP调试过程中的一堆疑问

共2条 1/1 1 跳转至

IAP 关于IAP调试过程中的一堆疑问

院士
2006-09-17 18:14:16     打赏
IAP 关于IAP调试过程中的一堆疑问



关键词: 关于     调试     过程     中的     一堆     疑问    

院士
2006-12-22 22:43:00     打赏
2楼
问        2100板,用你们的所给的例子程序,调试
有如下疑问:
1:isp软件中bootid为:1.61
而iap程序中通过此句BootCodeID();    //读取boot代码的版本号
得到的是317  ,如何解释?

2:
在调试时,进入main入口后,为什么不能修改地址0x00002000及后续地址的值?
我修改了地址 0x40000000及后续地址的值,执行
RamToFlash(0x00002000, 0x40000000, 512);
一句之后发现地址0x00002000及后续4个地址的值与地址 0x40000000及后续4个地址的值不一样,在执行Compare(0x00002000, 0x40000000,512);
一句后发现Paramout[0]为状态代码COMPARE_ERROR,请问这是为什么,如何做使源和目标的值相同?

3:
还有,我设了指针,想读出地址 0x40000000及后续地址的值,如下:
uint32 *p = (uint32*) 0x00002000;
RamToFlash(0x00002000, 0x40000000, 512);
....
  for (i=0; i<4*4; i=i+4)
   {
         a[i/4]=*(p+i);
     
   }
发现取出来的值:为0x00000033,0x00002b33,0x00000000,0x00000000,
而这四个值却是 地址0x00002000,0x00002010,0x00002020,0x00002030的值,与我的程序(应该是不一致地址0x00002000,0x00002004,0x00002008,0x00002012的值),如何解释出现这种情况?

烦请一一作答。 1: 自己顶 2: 为什么不回答? 3: 顶 4: 为什么不回答? 5: re:1. 应该是ISP和IAP程序都有一个版本号。
2. 调试是使用DebugInRAM进行调试,0x40000000为程序代码空间,不要去修改。这个例子只是简单的使用0x40000000地址上的数据而已,如果真正使用IAP,可以定义一个512字节的数据缓冲区(数组),然后设置相应的数据再IAP写入即可。
3. 程序要自己DEBUG,可以参考以下代码
    unsigned int i;
    uint32 *cp1, *cp2;
    extern void Reset(void);
    
    cp1 = (uint32 *)Reset;
    cp2 = (uint32 *)0x40000000;
    for (i = 0; i < 16; i++)
    {
        *cp2++ = *cp1++;
    }
......

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]