[其他ST产品] 苍天呀,大地呀,就没人和我遇到同样问题吗????

[复制链接]
3670|9
 楼主| siler 发表于 2007-11-16 14:39 | 显示全部楼层 |阅读模式
全速不好使.单步执行IAP,写XFLASH,但执行到 call [0xBE.w]  时总提示我一个警告,然后stvd7就死了。程序如下
do  //烧写xflash
    {    
       if ( BytesLeft <= 32 ) BlockBytes = BytesLeft;
       else BlockBytes = 32; 
       
       IAP_FLASH_PTR    = Flash + BufferOffset;      
       IAP_DATA_PTR  = (unsigned int)&(unsigned char)*Buffer + BufferOffset;      
      IAP_DATA_NB      = BlockBytes;    
             
       #ifdef COSMIC        //调用 写入 ram 中的 xflashwriter
       #asm
           call [0xBE.w]  
       #endasm  
       #endif     
       BytesLeft-=32;
       BufferOffset+=BlockBytes;
                
     } while (BytesLeft > 0 &&  BytesLeft < ByteNb );
 楼主| siler 发表于 2007-11-16 14:45 | 显示全部楼层

??

IAP_FLASH_PTR  为FLASH起始地址    
IAP_DATA_PTR 为写入数据的起始地址      
IAP_DATA_NB      为字节数

使用st7lite09 ,RAM只有128bytes,将driver变量存在B9--BF
XflashWrite()放在RAM A4--B8占20bytes,,0xBE里方的就是XflashWrite()在RAM里的首地址
call [0xBE.w]   调用。
 楼主| siler 发表于 2007-11-17 09:30 | 显示全部楼层

是不能用仿真吗?????

??????
本身InDart使用的是ICP,他会在RAM page0有一段程序,而我自己要是用IAP在RAM写一段程序的话,覆盖了ICP所以仿真不能用,是吗??????
 楼主| siler 发表于 2007-11-17 14:40 | 显示全部楼层

??????

我已经将XFlashWrite() XFlashWriteBlock()定位到flash sector0

将flash写目标地址定位在sector1。

浪淘沙 发表于 2007-11-21 15:18 | 显示全部楼层

请不要单步调试与Flash操作有关的任何系统代码

Flash的烧写有其特殊性,不支持单步调试!
 楼主| siler 发表于 2007-11-22 10:42 | 显示全部楼层

感谢浪淘沙的回应

但是现在,
程序全速执行或烧程序后,也不能执行call [0xbe.w].应该也是死在这了
AES_SEA 发表于 2007-11-22 13:09 | 显示全部楼层

re:

0Xbe里的程序是什么,检查过吗?可以先用SIMULATOR 单步跑一下,确认一下程序是否能正常返回
 楼主| siler 发表于 2007-11-23 08:24 | 显示全部楼层

怎么simulator

我这个怎么选不了sim呀,
call[0xbe]程序可以跳到那个地址,但是再往下就不行了
浪淘沙 发表于 2007-11-23 10:48 | 显示全部楼层

调用写入RAM中的xflashwriter(),请问你是否把这段程序放到RAM

call[0xbe]程序可以跳到那个地址,但你要查查这个地址中有程序吗?如果程序没有拷贝进去,当然要死机了。
 楼主| siler 发表于 2007-11-23 11:43 | 显示全部楼层

我查过里边是有程序的

我检查了[0xbe]ram里的程序与XflashWrite();是一样的。。

我在3楼的那个想法可能吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部