OpenEdv-开源电子网

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

关于iap flash读写

[复制链接]

6

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2017-8-21
在线时间
35 小时
发表于 2017-10-9 22:59:31 | 显示全部楼层 |阅读模式
5金钱
现在flash是128k的,准备0x0800 0000-0x0800 1FFF存bootloader,0x0800 2000-0x0800 3FFF存flag,0x0800 4000作为第一个app起始地址,0x0801 2000作为第二个app的地址,但是发现写flag写不进去,st对flash前面一段地址有保护吗?还是操作问题?

最佳答案

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

解决了吗,满意请给好评,你仿真的时候看看你要写入FLASH的地址是否是干净的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

23

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2315
金钱
2315
注册时间
2017-7-6
在线时间
281 小时
发表于 2017-10-9 22:59:32 | 显示全部楼层
解决了吗,满意请给好评,你仿真的时候看看你要写入FLASH的地址是否是干净的
回复

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
发表于 2017-10-9 23:12:10 | 显示全部楼层
你怎么知道flag没写进去?
回复

使用道具 举报

6

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2017-8-21
在线时间
35 小时
 楼主| 发表于 2017-10-10 09:40:50 | 显示全部楼层
通过memory窗口看的
回复

使用道具 举报

6

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2017-8-21
在线时间
35 小时
 楼主| 发表于 2017-10-10 09:41:58 | 显示全部楼层
BJTT 发表于 2017-10-9 23:12
你怎么知道flag没写进去?

通过memory窗口看的
回复

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
发表于 2017-10-10 19:58:39 | 显示全部楼层
Alionlu 发表于 2017-10-10 09:41
通过memory窗口看的

在使用writeflash的那个函数(库函数里面有)的时候会有返回值的,看看有没有返回错误
或者换个地址试试看,
回复

使用道具 举报

6

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2017-8-21
在线时间
35 小时
 楼主| 发表于 2017-10-11 09:20:35 | 显示全部楼层
BJTT 发表于 2017-10-10 19:58
在使用writeflash的那个函数(库函数里面有)的时候会有返回值的,看看有没有返回错误
或者换个地址试试 ...

好,我试试
回复

使用道具 举报

23

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2315
金钱
2315
注册时间
2017-7-6
在线时间
281 小时
发表于 2017-10-11 10:09:31 | 显示全部楼层
楼主,你写FLASH之前,该区域必须是已擦除或则没写过。要不然你写不成功的,因为FLASH的特性是只能由1往0写,所以每次写FLASH之前你的memory空间必须是全1.
回复

使用道具 举报

6

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2017-8-21
在线时间
35 小时
 楼主| 发表于 2017-10-11 10:10:35 | 显示全部楼层
1547674987 发表于 2017-10-11 10:09
楼主,你写FLASH之前,该区域必须是已擦除或则没写过。要不然你写不成功的,因为FLASH的特性是只能由1往0写 ...

每次写操作都有擦除的
回复

使用道具 举报

23

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2315
金钱
2315
注册时间
2017-7-6
在线时间
281 小时
发表于 2017-10-11 10:15:58 | 显示全部楼层
那你现在写成功没有
回复

使用道具 举报

6

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2017-8-21
在线时间
35 小时
 楼主| 发表于 2017-10-11 10:25:19 | 显示全部楼层
1547674987 发表于 2017-10-11 10:15
那你现在写成功没有

我之前都是试着写一个字,或者多个字,发现写一个字有问题,多个没问题
回复

使用道具 举报

23

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2315
金钱
2315
注册时间
2017-7-6
在线时间
281 小时
发表于 2017-10-11 10:40:00 | 显示全部楼层
ST官方库的函数就是写半字或则一个字,至于你说的写多个字是封装好的函数把,你如果用的是别人的,那它会在写之前对该地址判断是否为全‘1’,再提醒下 官方的库函数FLASH_ProgramWord(uint32_t Address, uint32_t Data);你写之前要确定那地址是全1的
回复

使用道具 举报

6

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2017-8-21
在线时间
35 小时
 楼主| 发表于 2017-10-11 11:54:31 | 显示全部楼层
1547674987 发表于 2017-10-11 10:40
ST官方库的函数就是写半字或则一个字,至于你说的写多个字是封装好的函数把,你如果用的是别人的,那它会在 ...

多谢,是用的别人的,我再去仔细看看
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 20:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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