OpenEdv-开源电子网

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

今天复习一下Flash模拟EEPROM,有个疑问

[复制链接]

20

主题

89

帖子

2

精华

高级会员

Rank: 4

积分
576
金钱
576
注册时间
2014-8-3
在线时间
18 小时
发表于 2015-1-14 23:15:26 | 显示全部楼层 |阅读模式
5金钱
我看了看STM32中文参考手册上2.4 启动配置这一节,我的理解是:
B0=0,B1=1时,复位后启动空间把system memory映射进入,然后运行,然后我们通过串口下载,把编程到Flash里。
B0=0,B1=0时,复位后启动空间把Flash映射进入,然后运行,这个时候就运行我们下载进入的程序了。
然后我们可以在程序中对FLash编程,我的问题是这个编程的地址应该不可以在Flash里的代码区吧,比如代码大小1KB,那么0X0800 0000到0X0800 03FF这一段都是代码区,我们如果在程序中对这一段
进行了重新编程,那么这一段的代码就没了。那么在复位后(B0=0,B1=0),启动空间再要把Flash映射进入时,在之前被修改的地方会有错误,这样运行的程序不就会死机吗?所以我觉得在程序中对
Flash编程的话,应该先检查地址是否在0X0800 0400到0X0807 FFFF之间吧(假如代码大小是1K)。
但我看给的stmflash.c里,是检测地址是否在0X0800 0000 到 0X0807 FFFF之间,这样的话岂不是会修改了代码区的数据?在复位后运行死机?

最佳答案

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

当然不能在FLASH代码区,只能是空闲区域 .
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165585
金钱
165585
注册时间
2010-12-1
在线时间
2119 小时
发表于 2015-1-14 23:15:27 | 显示全部楼层
当然不能在FLASH代码区,只能是空闲区域 .
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

89

帖子

2

精华

高级会员

Rank: 4

积分
576
金钱
576
注册时间
2014-8-3
在线时间
18 小时
 楼主| 发表于 2015-1-14 23:32:14 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
那如何判断从哪个地址开始是空闲区呢?
标准例程V3.5里的那个Flash模拟EEPROM实验里的stmflash.c的写函数里,只是判断地址是否在FLash区啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165585
金钱
165585
注册时间
2010-12-1
在线时间
2119 小时
发表于 2015-1-15 00:03:16 | 显示全部楼层
回复【3楼】Edwardwei:
---------------------------------
我无语了。
比如你编译的代码,大小是100KB
那么你从:0X0800 0000+100KB以后,再来保存数据,就不会影响到APP了嘛。
这么简单的道理,不知道为什么那么难懂。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

89

帖子

2

精华

高级会员

Rank: 4

积分
576
金钱
576
注册时间
2014-8-3
在线时间
18 小时
 楼主| 发表于 2015-1-15 00:15:52 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
这个我也知道啊。。。
算了,是自己太纠结了点吧。。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-15 08:09:13 | 显示全部楼层
楼主直接在最大的的地址处减去你APP程序大小,那个就是你APP代码的起始地址
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

20

主题

89

帖子

2

精华

高级会员

Rank: 4

积分
576
金钱
576
注册时间
2014-8-3
在线时间
18 小时
 楼主| 发表于 2015-1-15 09:27:51 | 显示全部楼层
回复【6楼】八度空间:
---------------------------------
嗯,这我知道,我是想有没有那种自动的检测方法可以检测出安全地址,而不是手动的设置安全地址。
不过看手册里没有相关的寄存器,应该不行。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-15 12:41:35 | 显示全部楼层
回复【7楼】Edwardwei:
---------------------------------
写个检测函数,下载的时候正片FLASH擦除,这样就编程FFFFFFFFFFFF了,判断不是ffffff的就是不安全的区域
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

20

主题

89

帖子

2

精华

高级会员

Rank: 4

积分
576
金钱
576
注册时间
2014-8-3
在线时间
18 小时
 楼主| 发表于 2015-1-15 16:09:43 | 显示全部楼层
回复【8楼】八度空间:
---------------------------------
我也想过从首地址检测数据是否为FF,但是也有可能代码本身在某一段就是FF,然后后面还有代码,这样的话检测函数就会以为后面是安全区域了。
而如果从尾地址开始检测的话,也有可能代码本身在末尾处就是一段FF,这样也有可能会破坏代码。所以感觉还是只能手动设置远一点的安全区域了。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-16 08:00:01 | 显示全部楼层
回复【9楼】Edwardwei:
---------------------------------
那就手动吧
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2014-12-22
在线时间
2 小时
发表于 2015-1-20 16:02:18 | 显示全部楼层
讲的是IAP吗?读下来的意思是重新编程的时候另开一个起始地址,这个可以理解。
要是我的程序很大,必须占用原来的空间,怎么理解呢?

还是要是我多次IAP,又是什么样的一个机制。。。

原子指点,一直对IAP不是很深入理解。。。

ICP,意思启动到system memory(BOOT0=1),我的上位机串口直接传文件就可以吗?
STM MCU FAE
回复

使用道具 举报

20

主题

89

帖子

2

精华

高级会员

Rank: 4

积分
576
金钱
576
注册时间
2014-8-3
在线时间
18 小时
 楼主| 发表于 2015-1-20 16:05:14 | 显示全部楼层
回复【11楼】power5000:
---------------------------------
额,你在说什么?
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-1-19
在线时间
0 小时
发表于 2015-1-20 17:59:13 | 显示全部楼层
当然不能在FLASH代码区,只能是空闲区域 .
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-1-19
在线时间
0 小时
发表于 2015-1-20 18:04:30 | 显示全部楼层
当然不能在FLASH代码区,只能是空闲区域 .
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2015-1-19
在线时间
0 小时
发表于 2015-1-20 18:05:00 | 显示全部楼层
当然不能在FLASH代码区,只能是空闲区域 .
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-10-15 09:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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