goodGstudy 发表于 2008-8-19 20:00

关于IAP的问题,谢谢

我用的是LPCC2148芯片,程序如下:<br />#define&nbsp;iap_entry(a,b)&nbsp;&nbsp;((void&nbsp;*)())(0x7ffffff1))(a,b)<br />writeflash(uint32&nbsp;dst,uint32&nbsp;src,uint32&nbsp;number)<br />{<br />&nbsp;&nbsp;&nbsp;__disable_interrupt();<br />&nbsp;&nbsp;&nbsp;mamcr=0;<br />&nbsp;&nbsp;&nbsp;pllcon=0;<br />&nbsp;&nbsp;&nbsp;pllfeed=0xaa;<br />&nbsp;&nbsp;&nbsp;pllfeed=0x55;<br /><br />&nbsp;&nbsp;selectsector(12,12);//对FLASH选择后在进行擦除<br /><br />&nbsp;&nbsp;..........<br /><br />}<br />void&nbsp;selectsector(dst,rst)<br />{<br />&nbsp;&nbsp;&nbsp;paramin=54;<br />&nbsp;&nbsp;&nbsp;paramin=12;<br />&nbsp;&nbsp;&nbsp;paramin=12;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;iap_entry(paramin,paramout);<br />}<br />但是当我在计算机上进行simulator的时候,进入iap_entry()函数后就跑飞了,再单步执行后发现执行到:<br />..................<br />80B7D92&nbsp;&nbsp;0000&nbsp;LSL&nbsp;&nbsp;R0,R0,#0<br />...................<br /><br />请问各位大侠,这是什么原因啊?是不是对FLASH&nbsp;的操作必须在仿真板上完成?不能用simulator实现?<br /><br />谢谢各位!<br />

xwj 发表于 2008-8-19 20:45

IAP的基本原则:不能写自己这一块

因为被写的块肯定不能同时读取,除非有特别的锁定逻辑,否则肯定跑飞<br /><br /><br />所以IAP程序一般要放在其他的FLASH块或RAM上执行

goodGstudy 发表于 2008-8-19 21:03

IAP程序一般要放在其他的FLASH块或RAM上执行?

IAP程序一般要放在其他的FLASH块或RAM上执行?<br />你的意思是说在IAR软件环境中仿真不能实现对FLASH的操作吗?必须把程序下载到RAM中调试?<br /><br />谢谢你啊<br />

goodGstudy 发表于 2008-8-19 21:05

我写的FLASH块不是被程序占据

yugen 发表于 2008-8-22 14:36

不能软件模拟

iap是调用芯片内的固件来实现的,所以不能用软件模拟,必须在真实的芯片中才行。

goodGstudy 发表于 2008-8-22 22:08

谢谢 大家啊

我是最近才开始做ARM相关的项目,我现在才明白为什么我在软件中不能仿真了,下一步我就想办法搞块开发板子来仿真了。<br />谢谢啊
页: [1]
查看完整版本: 关于IAP的问题,谢谢