OpenEdv-开源电子网

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

STM32如何判断是不是FLASH APP代码?

[复制链接]

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
发表于 2018-1-22 21:08:36 | 显示全部楼层 |阅读模式
1金钱
串口IAP实验有这样一段代码:
printf("开始更新固件...\r\n");
if(((*(vu32*)(0X20001000+4))&0xFF000000) == 0x08000000)                                //判断是否为0X08XXXXXX
{
        iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF, applenth);                        //更新FLASH代码
        printf("固件更新完成!\r\n");
}
else
{
        printf("非FLASH应用程序!\r\n");
}
为什么根据这个if(((*(vu32*)(0X20001000+4))&0xFF000000) == 0x08000000)就能判断是FLASH 的代码,没有明白。判断的依据是哪里,或是在哪个文档可以找到?
if(((*(vu32*)(0X20001000+4))&0xFF000000) == 0x20000000)这个同理判断SRAM代码,想知道这个判断依据。

最佳答案

查看完整内容[请看2#楼]

1,stm32的flash地址范围是多少?2,stm32 sram的地址范围是多少?能搞明白这个两个问题,就解决你的问题了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-1-22 21:08:37 | 显示全部楼层
1,stm32的flash地址范围是多少?2,stm32 sram的地址范围是多少?能搞明白这个两个问题,就解决你的问题了
回复

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
 楼主| 发表于 2018-1-23 13:23:13 | 显示全部楼层
多谢指点
回复

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
 楼主| 发表于 2018-1-23 13:56:48 | 显示全部楼层
这两个的地址范围能明白,现在不明白的是从*(vu32*)(0X20001000+4))&0xFF000000里读的数据。是不是编译器里设置好代码在FLAGH范围内,那么生成的代码文件里会包含0x08000000这段信息,然后传送到SRAM里__attribute__ ((at(0X20001000))),从这里读出来并识别出来的?
回复

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
 楼主| 发表于 2018-1-23 14:22:58 | 显示全部楼层
divdir 发表于 2018-1-23 13:56
这两个的地址范围能明白,现在不明白的是从*(vu32*)(0X20001000+4))&0xFF000000里读的数据。是不是编译器里 ...

http://www.openedv.com/thread-42195-1-1.html里找到答案了,多谢原子哥,希望对后来者有帮助。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 07:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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