[应用相关] 请教香版和做过IAP的朋友两个关于IAP的问题

[复制链接]
3015|8
 楼主| myworkmail 发表于 2009-2-23 16:29 | 显示全部楼层 |阅读模式
__________________
                  |
                  |
用户程序          |
(应用程序1)       |
                  |
------------------                  
中断向量表      |
(中断向量表2)   |
-------------------0X08002000                
  IAP-BootLoader  |
------------------                  
程序中断向量表    |
(中断向量表1)   |                
-------------------0X08000000


请问

1 。我在做CM3的IAP升级程序的时候,我把BOOT程序放在从0X08000000开始的地方,应用程序放在0X08002000开始的地方,也就是不从0X08000000开始,可是程序中断向量表却在0X08000000开始,也就是说应用程序一旦发生中断,比如TIMER中

断,程序就跳到0X08000000到0X080000E8中的一行即跳到中断向量表1了,可这已是BOOT程序了呀?也就是说:在用户程序(应用程序1)中,进不了中断了,我怎么改,要应用程序1在产生中断的时候跳到中断向量表2,而中断向量表2中有一

条跳转指令,跳转到对应的中断服务程序中。
2。关于烧写的问题,如何能在FLASH中把程序烧成如上图所示的样子,是否是这样分别建两个工程,把着两个工程lnkarm_flash.xcl的-DROMSTART分别设为-DROMSTART=0x08002000和-DROMSTART=0x08002000,就可以了吗?

 楼主| myworkmail 发表于 2009-2-23 16:35 | 显示全部楼层

还有在笔记AN2557中提到的上位机程序

还有在笔记AN2557中提到的上位机程序(串口中端)在哪有的下载啊?是否随便一个串口终端都可以呢?
 楼主| myworkmail 发表于 2009-2-23 16:38 | 显示全部楼层

笔记AN2557中的程序只能用IAR FOR ARM 5.2打开吧

笔记AN2557中的程序只能用IAR FOR ARM 5.2打开吧,4.22好象打不开
ST_ARM 发表于 2009-2-23 16:48 | 显示全部楼层

请参考ST的IAP应用文档:AN2557

你的两个问题在该文档里都有解答。
 楼主| myworkmail 发表于 2009-2-23 16:49 | 显示全部楼层

补充一下

补充一下,我在第二个工程中把,
NVIC_SetVectorTabl(NVIC_VectTab_FLASH, 0x00002000); 改了
 楼主| myworkmail 发表于 2009-2-23 17:17 | 显示全部楼层

AN2557中那个PDF中有答案?

AN2557中那个PDF中有答案?
香水城 发表于 2009-2-23 18:27 | 显示全部楼层
ST_ARM 发表于 2009-2-24 09:45 | 显示全部楼层

为何要改?

NVIC_SetVectorTabl(NVIC_VectTab_FLASH, 0x00002000); 改为什么了?

1 。我在做CM3的IAP升级程序的时候,我把BOOT程序放在从0X08000000开始的地方,应用程序放在0X08002000开始的地方,也就是不从0X08000000开始,可是程序中断向量表却在0X08000000开始,也就是说应用程序一旦发生中断,比如TIMER中
断,程序就跳到0X08000000到0X080000E8中的一行即跳到中断向量表1了,可这已是BOOT程序了呀?也就是说:在用户程序(应用程序1)中,进不了中断了,我怎么改,要应用程序1在产生中断的时候跳到中断向量表2,而中断向量表2中有一条跳转指令,跳转到对应的中断服务程序中

答:在用户程序中,运行了NVIC_SetVectorTabl(NVIC_VectTab_FLASH, 0x00002000);,系统就将Cortex-M3的中断跳转地址变为以0x2000为相对起始地址,当发生中断时,中断将跳转到Flash中以0x2000+相对偏移量的地址,以Timer为例,就跳到0X080020E8,而不是0X080000E8。


2。关于烧写的问题,如何能在FLASH中把程序烧成如上图所示的样子,是否是这样分别建两个工程,把着两个工程lnkarm_flash.xcl的-DROMSTART分别设为
-DROMSTART=0x08002000 和
-DROMSTART=0x08002000,就可以了吗?
你的两个工程为什么是一样的?
 楼主| myworkmail 发表于 2009-2-24 15:46 | 显示全部楼层

回ST_ARM:打错字了

回ST_ARM:打错字了
        1。  关于烧写的问题,如何能在FLASH中把程序烧成如上图所示的样子,是否是这样分别建两个工程(IAP-BootLoader工程  和用户程序工程)
把着两个工程lnkarm_flash.xcl的-DROMSTART分别设为
IAP-BootLoader工程的 -DROMSTART=0x08002000 和
用户程序工程 -DROMSTART=0x08002000,就可以了吗?我用的的力源的烧写软件。程序在FLASH中结构如1楼的图所示。
2。文档AN2557我看了,怎么设置PC上的终端软件是说了,可那个PC上的终端软件叫什么名字,在哪下载啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

100

帖子

0

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