OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10263|回复: 34

继续是iap升级问题?

[复制链接]

11

主题

36

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2012-8-22
在线时间
0 小时
发表于 2012-10-30 08:49:10 | 显示全部楼层 |阅读模式
这个是FLASH 中的
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX. 
{   
iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);//更新FLASH代码    
LCD_ShowString(60,210,200,16,16,"Copy APP Successed!!"); 
printf("固件更新完成!\r\n");
}else  

LCD_ShowString(60,210,200,16,16,"Illegal FLASH APP!  ");     
printf("非FLASH应用程序!\r\n"); 



这个是RAM 中的 
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x20000000)//判断是否为0X20XXXXXX. 
{   
iap_load_app(0X20001000);//SRAM地址 
}else  

printf("非SRAM应用程序,无法执行!\r\n"); 
LCD_ShowString(60,210,200,16,16,"Illegal SRAM APP!");     
}   
clearflag=7;//标志更新了显示,并且设置7*300ms后清除显示 

问题:起始四个字节为何都是(0X20001000+4)?





成功的欲望强烈到一定程度的时候足够征服世界。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-10-30 10:36:41 | 显示全部楼层
回复【楼主位】强子:
---------------------------------
串口发送过来的数据,是先保存在SRAM里面的。不直接写入FLASH!这里的地址是数据保存区的首地址。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

36

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2012-8-22
在线时间
0 小时
 楼主| 发表于 2012-10-30 12:38:39 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
多谢原子哥。来到本论坛后,学了不少知识。再次感谢。
成功的欲望强烈到一定程度的时候足够征服世界。
回复 支持 反对

使用道具 举报

11

主题

36

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2012-8-22
在线时间
0 小时
 楼主| 发表于 2012-10-30 22:33:24 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
为何发送到SRAM中的数据,要从0x0X20001000开始读取?
成功的欲望强烈到一定程度的时候足够征服世界。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-10-31 00:12:33 | 显示全部楼层
回复【4楼】强子:
---------------------------------
那你认为呢?该从哪里开始?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

36

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2012-8-22
在线时间
0 小时
 楼主| 发表于 2012-10-31 18:03:22 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原来usart.c中要这么一段代码

u8 USART_RX_BUF[USART_BUF_MAX] __attribute__ ((at(0X20001000)));//接收缓冲,最大USART_REC_LEN个字节,起始地址为0X20001000.   


成功的欲望强烈到一定程度的时候足够征服世界。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2011-11-1
在线时间
3 小时
发表于 2012-11-25 15:05:19 | 显示全部楼层
回复【楼主位】强子:
---------------------------------
楼主:请问一下(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000这里为什么是等于0x08000000。在(0X20001000+4)这个地址里面的数据这么是0x08000000呢?不明白,能不能解释一下,谢谢
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2011-11-1
在线时间
3 小时
发表于 2012-11-27 09:16:55 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥:请问一下(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000这里为什么是等于0x08000000。在(0X20001000+4)这个地址里面的数据这么是0x08000000呢?有点不明白,能不能解释一下,谢谢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-11-27 10:33:15 | 显示全部楼层
因为flash运行地址必须是0X08xxxxxx开始的!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2011-11-1
在线时间
3 小时
发表于 2012-12-12 18:16:55 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
明白了,我多想了,呵呵,谢谢原子哥!
回复 支持 反对

使用道具 举报

18

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2013-10-17
在线时间
0 小时
发表于 2013-12-18 17:44:42 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,请教个问题啊,就是SRAM APP,程序一开始都是从0x08000000开始执行的是吗?我们设置SRAM是从0X20001000开始的,那前面的0x00001000是存放Bootloader的,那程序一开始不是从0x08000000开始执行的吗,还要那个0x00001000干嘛啊,不懂啊????
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-18 21:04:04 | 显示全部楼层
回复【11楼】summerxiehao:
---------------------------------
SRAM APP,程序不是从0X0800 0000开始执行的。
而是从你设置的起始地址开始。
至于0X1000,是因为我们的SRAM APP代码在Bootloader程序里面,就是存放在0X2000 1000这个地址开始的数组里面的,所以才是0X1000。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2013-10-17
在线时间
0 小时
发表于 2013-12-18 23:06:49 | 显示全部楼层
谢谢原子哥的回复,但我还是没弄明白SRAM APP 的bootloader程序是存放在哪里的啊,是0x20000000到0x20001000吗?
一开始(bootloader)程序从哪开始运行的啊?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-18 23:23:53 | 显示全部楼层
回复【13楼】summerxiehao:
---------------------------------
存放在flash里面的,就是我们例程的IAP那个代码啊....
0X2000 0000到0X2000 1000是用来存放IAP代码的全局变量的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2013-10-17
在线时间
0 小时
发表于 2013-12-19 08:49:46 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
谢谢原子哥,这次我知道了,嘿嘿
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-2-21
在线时间
0 小时
发表于 2014-2-21 15:34:05 | 显示全部楼层
原子哥,请问你的IAP里面WriteAddr+=secremain; 这句,我怎么觉得应该是WriteAddr+=2*secremain;
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-2-21 16:24:51 | 显示全部楼层
回复【16楼】香浓苦咖啡:
---------------------------------
是的,这个之前有网友提出来过,是应该*2的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-2-21
在线时间
0 小时
发表于 2014-2-21 17:21:21 | 显示全部楼层
非常感谢原子哥的回答,我想说一下我对IAP的理解,请原子哥指点我理解的对不对,因为我的程序就是不能实现功能。
1、IAP程序跟普通程序没区别
2、APP程序需要更改程序保存位置(如0X08010000),同样程序的指针向量地址也要偏移10000,这样来中断的时候,程序就能根据偏移地址找到正确的中断函数
3、BIN文件里第一个字保存的是存放堆栈的地址,第二个字保存的是复位中断函数的地址
4、要设置的地方:APP函数在flash中起始地址、APP函数指针向量偏移量,就这些吧
我的程序一直搞不好,不知道是不是我理解哪里有问题,或哪里没设置,恳请原子哥指教
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-2-21 21:49:29 | 显示全部楼层
回复【18楼】香浓苦咖啡:
---------------------------------
没问题啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

87

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-4-2
在线时间
0 小时
发表于 2014-5-22 09:43:54 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
if(key==KEY_UP)
{
   if(applenth)
    {
       printf("开始更新固件...\r\n");
      LCD_ShowString(60,210,200,16,16,"Copying APP2FLASH...");
      if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)
      //判断是否为 0X08XXXXXX.

if(key==KEY_RIGHT)
{
     printf("开始执行 SRAM 用户代码!!\r\n");
     if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x20000000)
   //判断是否为 0X20XXXXXX.
-----------------------------------------
请问同一个地址(0x20001004)为什么会有不同的指针呢(0X08XXXXXX和0X20XXXXXX?)
还是说,串口只能一次接收一种类型(flash或sram)app程序?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-22 20:28:11 | 显示全部楼层
回复【20楼】chengmingluo:
---------------------------------
不同的APP程序,起始地址就可能不一样,比如你说的FLASH/SRAM就不一样.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-7-3
在线时间
2 小时
发表于 2014-8-6 19:45:51 | 显示全部楼层
我用MDK生成bin文件为啥是乱码的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-6 22:48:43 | 显示全部楼层
回复【22楼】偶然~十字路:
---------------------------------
bin文件就是二进制文件,用txt打开,自然是乱码.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-7-3
在线时间
2 小时
发表于 2014-8-7 20:08:12 | 显示全部楼层
回复【23楼】正点原子:
---------------------------------
我同事用上位机把HEX转BIN文件可以打开的用于CAN IAP 想对照一下他生成的有没错,要用什么软件么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-7 22:58:40 | 显示全部楼层
回复【24楼】偶然~十字路:
---------------------------------
 WINHEX
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-11-13
在线时间
10 小时
发表于 2014-12-9 22:13:40 | 显示全部楼层
原子哥  有个问题哈  可不可以让iap何app写成一个程序 从0x0800 0000地址存放
站在巨人的肩膀上,奋力向前!
回复 支持 反对

使用道具 举报

13

主题

225

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2013-11-12
在线时间
29 小时
发表于 2015-2-2 20:39:35 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
为什么我的if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//??????·???0X08XXXXXX.这句话判断不成功,进不去就写不进Flash
我的是vct6
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-3 00:15:22 | 显示全部楼层
回复【27楼】jiushibuzhidao:
---------------------------------
说明你 的地址范围不是从0x08000000开始的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

225

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2013-11-12
在线时间
29 小时
发表于 2015-2-5 20:45:18 | 显示全部楼层
回复【28楼】正点原子:
---------------------------------
那为什么要先做这个判断啊?
如果我加入协议,串口一次接受一串数据校验后再写进去,再进行下一串数据的接收和写进Flash,这句话应该怎么写啊?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-5 22:26:37 | 显示全部楼层
回复【29楼】jiushibuzhidao:
---------------------------------
确认下而已,你可以不加
加入协议,你可以自己随意规定。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

225

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2013-11-12
在线时间
29 小时
发表于 2015-2-6 21:44:37 | 显示全部楼层
回复【30楼】正点原子:
---------------------------------
我就是要加入协议,这句话需要改不啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-6 22:36:37 | 显示全部楼层
回复【31楼】jiushibuzhidao:
---------------------------------
这句话和你的协议无关。不需要改
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2014-10-9
在线时间
11 小时
发表于 2015-2-15 14:54:32 | 显示全部楼层
回复【32楼】正点原子:
---------------------------------
sram为掉电丢失,为什么还要把 APP程序存在SRAM里呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-21 12:42:55 | 显示全部楼层
回复【33楼】yudianerr:
---------------------------------
因为不需要保存。如果你要保存,下次上点还是跑app,那么直接下载对应的标准例程即可。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

50

主题

134

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2014-5-21
在线时间
84 小时
发表于 2016-2-19 14:10:38 | 显示全部楼层
正点原子 发表于 2015-2-3 00:15
回复【27楼】jiushibuzhidao:
---------------------------------
说明你 的地址范围不是从0x08000000 ...

和27楼的现象相同,仿真的话那个地址不是固定的。不知道是什么原因
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 02:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表