OpenEdv-开源电子网

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

战舰实验Flash模拟EEPROM有个小隐患~

[复制链接]

4

主题

12

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2013-7-29
在线时间
0 小时
发表于 2013-11-19 18:40:31 | 显示全部楼层 |阅读模式
void STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite) {          if(WriteAddr<STM32_FLASH_BASE||(WriteAddr>=(STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))return;//非法地址

这个判断是否是非法地址的语句少判断了两种非法情况,一个是地址是否为偶数,一个是所有要写入的数据地址是否超出。
我改成下面这样了:

if( (WriteAddr < STM32_FLASH_BASE) || (WriteAddr%2)
||((WriteAddr+2*NumToWrite) >= (STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))
return;//非法地址

供大家参考。


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

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-11-19 21:26:20 | 显示全部楼层
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
发表于 2013-11-19 21:31:07 | 显示全部楼层
原子大多例程都对参数没做严格检查的,也有好处:不要浪费CPU时间,有不好:调试的时候麻烦会多些

可以参考usosii里的,比如定义个_DEBUG_>0,然后就做参数检查,否则就不做检查
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165463
金钱
165463
注册时间
2010-12-1
在线时间
2114 小时
发表于 2013-11-19 22:33:11 | 显示全部楼层
回复【楼主位】keyearth:
---------------------------------
谢谢指出.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

146

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1254
金钱
1254
注册时间
2016-11-30
在线时间
211 小时
发表于 2017-7-20 10:41:52 | 显示全部楼层
谢谢楼主,刚好在学习中,这个帖正好给予很好的帮助!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-25 06:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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