[ZLG-ARM] 编译影响IAP问题

[复制链接]
2293|1
 楼主| yanghuyue 发表于 2007-7-19 13:31 | 显示全部楼层 |阅读模式
我想用IAP在程序运行中升级程序<br />分散加载文件如下:<br />ROM_LOAD&nbsp;0x0<br />&nbsp;&nbsp;&nbsp;这个运行区中的文件是独立的。用于升级程序,只有在main文件中调用了main_user文件中的main_user涵数,这里面的文件是不会动的。生成的HEX文件为&nbsp;&nbsp;&nbsp;&nbsp;ROM_EXEC.hex<br /><br />ROM_LOAD1&nbsp;0x00004000&nbsp;<br />&nbsp;&nbsp;&nbsp;这个运行区是我的应用程序,这里面的程序要改变,但我的main_user文件不会改变。生成的HEX文件为&nbsp;&nbsp;&nbsp;&nbsp;ROM_EXEC1.hex<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;我通过改变ROM_LOAD1&nbsp;0x00004000&nbsp;文件内容。用ROM_LOAD&nbsp;0x0中的程序升级ROM_LOAD1&nbsp;0x00004000&nbsp;区。<br />&nbsp;&nbsp;现在我改别ROM_LOAD1&nbsp;中的其他文件(此时ROM_LOAD&nbsp;0x0区的文件没有动),编译后ROM_EXEC1.hex和ROM_EXEC.hex都发生变化。这样就不能用用ROM_LOAD&nbsp;0x0中的程序升级ROM_LOAD1&nbsp;0x00004000&nbsp;区。因为ROM_EXEC1.hex和ROM_EXEC.hex都发生变化。<br />请教:<br />1:为什么我没有改变ROM_LOAD&nbsp;0x0的内容为何ROM_EXEC.hex的内容发生变化?2:如何实现任意改变ROM_LOAD1&nbsp;0x00004000&nbsp;区内容而ROM_LOAD&nbsp;0x0内容不变:<br />附:<br />ROM_LOAD&nbsp;0x0<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;ROM_EXEC&nbsp;0x00000000&nbsp;0x00004000<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(vectors,&nbsp;+First)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CFlash_Fix.o&nbsp;(+RO)&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CIap.o(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CGPIOOUT_Fix.o&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CGPIOIN_Fix.o&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CGPIOINOUT_Fix.o&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSMISPI_Fix.o(+Ro)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.o(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;}<br /><br />ROM_LOAD1&nbsp;0x00004000&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;ROM_EXEC1&nbsp;+0&nbsp;FIXED<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main_user.o(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;IRAM&nbsp;0x40000000<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(MyStacks)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RW,+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;HEAP&nbsp;+0&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(Heap)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;STACKS&nbsp;0x40008000&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(Stacks)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />//main在ROM_LOAD&nbsp;0x0区运行<br />&nbsp;int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(INT8U&nbsp;i=0;i&lt20;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Xms_Fix(100);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WatchDog();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />UpProgram();<br /><br />main_user();<br /><br />}<br />//main_user&nbsp;在ROM_LOAD1&nbsp;0x00004000&nbsp;区运行<br />int&nbsp;main_user&nbsp;(void)<br />{<br />&nbsp;//CDesPassword&nbsp;padeal;<br />&nbsp;//&nbsp;padeal.deskey(key,0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;padeal.des(proc,&nbsp;temppwd);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(INT8U&nbsp;i=0;i&lt20;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Xms(100);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WatchDog_Task();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;OSInit();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;GUart0Sem&nbsp;=&nbsp;OSSemCreate(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;GUart1Sem&nbsp;=&nbsp;OSSemCreate(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;GSPISem&nbsp;=&nbsp;OSSemCreate(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;GI2CSem&nbsp;=&nbsp;OSSemCreate(1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(4)<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;OSTaskCreate&nbsp;(TaskWatchDog,(void&nbsp;*)0,&nbsp;&TaskWatchDogStk[TaskwatchDogStkSize-1],&nbsp;TaskWatchDogPro);<br />&nbsp;&nbsp;&nbsp;OSTaskCreate&nbsp;(Task9,(void&nbsp;*)0,&nbsp;&Task9Stk[Task9StkSize-1],&nbsp;Task9Pro);<br />&nbsp;&nbsp;&nbsp;OSTaskCreate&nbsp;(Task8,(void&nbsp;*)0,&nbsp;&Task8Stk[Task8StkSize-1],&nbsp;Task8Pro);<br />&nbsp;&nbsp;&nbsp;OSTaskCreate&nbsp;(TaskWorkModeLed,(void&nbsp;*)0,&nbsp;&TaskWorkModeLedStk&nbsp;[TaskWorkModeLedStkSize-1],&nbsp;TaskWorkModeLedPro);&nbsp;&nbsp;&nbsp;&nbsp;//(5)<br />&nbsp;&nbsp;&nbsp;OSTaskCreate&nbsp;(TaskIPOKLed,(void&nbsp;*)0,&nbsp;&TaskIPOKLedStk&nbsp;[TaskIPOKLedStkSize-1],&nbsp;TaskIPOKLedPro);&nbsp;&nbsp;&nbsp;&nbsp;//(5)<br />&nbsp;&nbsp;&nbsp;OSTaskCreate(TaskUart0,(void*)0,&Taskuart0Stk[Taskuart0StkSize-1],Taskuart0Pro&nbsp;);<br />&nbsp;&nbsp;&nbsp;OSTaskCreate(TaskUart1,(void*)0,&Taskuart1Stk[Taskuart1StkSize-1],Taskuart1Pro&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;OSStart();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(6)<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(7)<br />}
 楼主| yanghuyue 发表于 2007-7-19 14:43 | 显示全部楼层

好同志们,帮帮忙了

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

23

帖子

0

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