OpenEdv-开源电子网

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

请教原子哥关于串口IAP实验的一些疑惑?

[复制链接]

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2012-10-11
在线时间
15 小时
发表于 2013-8-24 12:18:08 | 显示全部楼层 |阅读模式

 if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
{  
printf("%x\n",(*(vu32*)(0X20001000+4)));  //获取(*(vu32*)(0X20001000+4))里面的信息值
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");
}
我通过串口打印出(*(vu32*)(0X20001000+4))里面的数据是0X0800523f这个应该是个地址信息吧,
FLASH用户代码的起始地址不是0X08005000吗即使(0X08005000+4) 最开始的4个字节为程序起始地址 ,但是怎么串口打印出的数据为0X0800523f呢?那这个的偏移地址怎么到了23f 原子哥能不能帮我解答一下啊.地址23f以前的这些是用来做什么的啊。





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2013-8-24 14:14:33 | 显示全部楼层
前面是中断向量的地址,并不是实际执行程序的入口地址。
1-1
回复 支持 反对

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2012-10-11
在线时间
15 小时
 楼主| 发表于 2013-8-24 15:18:41 | 显示全部楼层
那为什么(*(vu32*)(0X20001000+4))里面的数据是0X0800523f 而不是中断的中断向量的地址啊!对于这个我已经看了很久了还是不是很明白啊!按照mygod 大哥的说法那 (*(vu32*)(0X20001000+4))里面的数据装的是程序的入口地址对吗?
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2013-8-24 16:28:32 | 显示全部楼层
回复【3楼】MDC012170:
---------------------------------
可以 这么认为
1-1
回复 支持 反对

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2012-10-11
在线时间
15 小时
 楼主| 发表于 2013-8-24 16:59:51 | 显示全部楼层
回复【4楼】mygod:
---------------------------------
我还是不是很明白 (*(vu32*)(0X20001000+4))这个是取地址(0X20001000+4)里面的数据 那么通过串口打印出来的0X0800523f这个是个地址的值,就是程序的入口地址  那我得怎样设置才能知道中断向量的入口地址。那如果要知道中断向量的入口地址 这个(*(vu32*)(0X20001000+4)) 这句该怎么修改啊。还有我们是通过串口发送BIN文件过来发送过来的数据里是不是也有中断向量表的信息啊
还有就是我们这里面的(0X20001000+4)和我我们再SRAM里的起始地址 0X20001000 有关系吗
回复 支持 反对

使用道具 举报

4

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-7-31
在线时间
12 小时
发表于 2013-10-6 17:59:47 | 显示全部楼层
回复【5楼】MDC012170:
---------------------------------
楼主这个问题搞清楚了么 同问@正点原子 原子哥帮忙解释下呗
回复 支持 反对

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2012-10-11
在线时间
15 小时
 楼主| 发表于 2013-10-6 18:46:30 | 显示全部楼层
回复【6楼】beyoung:
---------------------------------
没呢我到现在都还是不明白只!!!希望能有人解释啊???
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-6 20:17:45 | 显示全部楼层
回复【5楼】MDC012170:
---------------------------------
0X0800523f,这是复位中断服务函数的入口地址。
你想知道,那就直接读取(*(vu32*)(0X20001000+4)) 的值。
依次下去,还有很多其他中断服务函数的入口地址,比如接下来+8,将会是NMI中断服务函数的入口地址, +12,将会是HardFault的服务函数入口地址...

不过我仿真发现,这个入口地址,和JTAG跟踪得到的入口地址差了1个单位,比如你的0X0800523f,实际的入口地址(在JTAG显示的),应该会是:0X0800523f-1=0X0800523E。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-7-31
在线时间
12 小时
发表于 2013-10-6 22:56:27 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
那我们这里面的(0X20001000+4)和我们在SRAM里的起始地址 0X20001000 有关系吗 为什么要把起始地址选为0X20001000 呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-7 11:28:13 | 显示全部楼层
回复【9楼】beyoung:
---------------------------------
当然有关系了,我们选择0X20001000,就是留下SRAM区域的前4K SRAM给IAP程序使用。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-7-31
在线时间
12 小时
发表于 2013-10-7 22:40:01 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
还有串口接收数据大小为什么最大是55k呢 SRAM有64k 减去前面的4k不是还有60k么? 现在刚接触iap ,想一直到407上面 看了挺长时间了还是有好多不太清楚的 谢原子哥了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-7 23:03:31 | 显示全部楼层
回复【11楼】beyoung:
---------------------------------
自己测试,让编译器告诉你答案吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-7-31
在线时间
12 小时
发表于 2013-10-9 11:45:08 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
好吧,谢原子哥了 我实际测试改到59 才会报错 不过407是支持单个字节编程的 我的程序也不大 直接写在了128KB的扇区内 操作要简单很多啊
回复 支持 反对

使用道具 举报

4

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-7-31
在线时间
12 小时
发表于 2013-10-9 19:39:15 | 显示全部楼层
回复【12楼】正点原子:
原子哥 用ucosii的时候的iap有啥要注意的么 直接生成bin文件 修改向量表映射 下进去好像不行啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-9 21:09:19 | 显示全部楼层
回复【14楼】beyoung:
---------------------------------
你用F4还是F1。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-7-31
在线时间
12 小时
发表于 2013-10-9 21:37:37 | 显示全部楼层
回复【15楼】正点原子:
---------------------------------
f4的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-9 23:02:38 | 显示全部楼层
回复【16楼】beyoung:
---------------------------------
没搞过还。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2013-7-31
在线时间
12 小时
发表于 2013-10-10 14:57:03 | 显示全部楼层
回复【17楼】正点原子:
---------------------------------
好吧 我再研究研究。。。
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2011-12-19
在线时间
0 小时
发表于 2014-11-18 16:31:43 | 显示全部楼层
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)
为什么这个条件不满足
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2011-12-19
在线时间
0 小时
发表于 2014-11-18 16:32:10 | 显示全部楼层
不会执行下面程序
回复 支持 反对

使用道具 举报

15

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2014-11-8
在线时间
40 小时
发表于 2015-5-7 13:56:56 | 显示全部楼层
回复【3楼】MDC012170:
---------------------------------
请问楼主0X08005000的0x5000是怎么得来的? 为什么你认为应该是 0X08005000呢?
Good good study , day day up...
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 18:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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