打印
[应用相关]

请教香版和做过IAP的朋友两个关于IAP的问题

[复制链接]
2202|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

你的两个问题在该文档里都有解答。

使用特权

评论回复
5
myworkmail|  楼主 | 2009-2-23 16:49 | 只看该作者

补充一下

补充一下,我在第二个工程中把,
NVIC_SetVectorTabl(NVIC_VectTab_FLASH, 0x00002000); 改了

使用特权

评论回复
6
myworkmail|  楼主 | 2009-2-23 17:17 | 只看该作者

AN2557中那个PDF中有答案?

AN2557中那个PDF中有答案?

使用特权

评论回复
7
香水城| | 2009-2-23 18:27 | 只看该作者

AN2557

使用特权

评论回复
8
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,就可以了吗?
你的两个工程为什么是一样的?

使用特权

评论回复
9
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

粉丝