你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【严重bug,世界末日】STM32 F4 HAL库 V1.7.2中的非对齐访问

[复制链接]
lymzzyh 发布时间:2018-9-19 17:23
本帖最后由 lymzzyh 于 2018-9-19 17:27 编辑

库版本V1.7.2  文件 stm32f4xx_hal_sd.c
行数 503
代码节选:
  1. HAL_StatusTypeDef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks, uint32_t Timeout)
  2. {
  3.   SDIO_DataInitTypeDef config;
  4.   uint32_t errorstate = HAL_SD_ERROR_NONE;
  5.   uint32_t tickstart = HAL_GetTick();
  6.   uint32_t count = 0U, *tempbuff = (uint32_t *)pData;
  7. /* ......... */
  8. *tempbuff = SDIO_ReadFIFO(hsd->Instance);
  9. /* ......... */
  10. }
复制代码
bug1: 此处pData 为u8 指针 强转 32位 编译后使用STM指令当pData未4字节对齐时将造成非对齐访问异常。
bug2: 若pData未4字节对齐,使用DMA模式时会强行向低地址进行4字节对齐造成向低地址的内存越界。
注:其中图示代码为bug1所出现的bug点,修复建议:检测对齐,发现未对齐时使用一个32位变量进行数据搬运。
bug2未进行查找错误点 望ST工程师自行查找。

另:对于未知的字节流数据进行非数据等长指针的强制类型转换的这种低级错误发生的ST身上令我等非常失望,希望相关人员(大学生临时工)尽快修复
收藏 2 评论16 发布时间:2018-9-19 17:23

举报

16个回答
lymzzyh 回答时间:2018-9-19 17:41:24
甩锅三连:别人怎么没问题;是你不会用;真是辣鸡
lymzzyh 回答时间:2018-9-19 17:26:30
手工置顶
lymzzyh 回答时间:2018-9-19 17:41:06
否认三连 : 就是这么设计的;不是bug;下个版本再优化
浪花雷雨 回答时间:2018-9-19 17:50:37
认真三连问:是这样的吗?为什么这样?该改吗?
lymzzyh 回答时间:2018-9-19 19:06:25
浪花雷雨 发表于 2018-9-19 17:50
认真三连问:是这样的吗?为什么这样?该改吗?

回答三连:是这样的,暴露接口不对,该改
stm1024 回答时间:2018-9-20 08:30:54
还好不是硬件bug,谈不上世界末日,而且这个锅,真的可以甩给编译器。

不过作为一个库,也确实应该考虑完善一些。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

zero99 回答时间:2018-9-20 08:45:30
lymzzyh 发表于 2018-9-19 17:41
甩锅三连:别人怎么没问题;是你不会用;真是辣鸡

淡定一点,骚年
uu799 回答时间:2018-9-20 09:36:47
不用sd卡不就不会触发bug了吗,你真是辣鸡!
lymzzyh 回答时间:2018-9-20 09:36:54
stm1024 发表于 2018-9-20 08:30
还好不是硬件bug,谈不上世界末日,而且这个锅,真的可以甩给编译器。

不过作为一个库,也确实应该考虑完 ...

不关编译器的事情 指针强转是编译器无法预判是否对齐的 所以只能用STM指令去处理
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版