请选择 进入手机版 | 继续访问电脑版
搜索
查看: 3902|回复: 16

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

[复制链接]

该用户从未签到

3

主题

31

帖子

0

蝴蝶豆

中级会员

最后登录
2018-10-15
发表于 2018-9-19 17:23:51 | 显示全部楼层 |阅读模式
本帖最后由 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身上令我等非常失望,希望相关人员(大学生临时工)尽快修复
回复

使用道具 举报

该用户从未签到

3

主题

31

帖子

0

蝴蝶豆

中级会员

最后登录
2018-10-15
 楼主| 发表于 2018-9-19 17:41:24 | 显示全部楼层
甩锅三连:别人怎么没问题;是你不会用;真是辣鸡
回复 支持 0 反对 1

使用道具 举报

该用户从未签到

3

主题

31

帖子

0

蝴蝶豆

中级会员

最后登录
2018-10-15
 楼主| 发表于 2018-9-19 17:26:30 | 显示全部楼层
手工置顶
回复

使用道具 举报

该用户从未签到

3

主题

31

帖子

0

蝴蝶豆

中级会员

最后登录
2018-10-15
 楼主| 发表于 2018-9-19 17:41:06 | 显示全部楼层
否认三连 : 就是这么设计的;不是bug;下个版本再优化
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

216

帖子

0

蝴蝶豆

金牌会员

最后登录
2022-10-14
发表于 2018-9-19 17:50:37 | 显示全部楼层
认真三连问:是这样的吗?为什么这样?该改吗?
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

31

帖子

0

蝴蝶豆

中级会员

最后登录
2018-10-15
 楼主| 发表于 2018-9-19 19:06:25 | 显示全部楼层
浪花雷雨 发表于 2018-9-19 17:50
认真三连问:是这样的吗?为什么这样?该改吗?

回答三连:是这样的,暴露接口不对,该改
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2021-4-15 11:47
  • 签到天数: 537 天

    [LV.9]

    29

    主题

    2176

    帖子

    127

    蝴蝶豆

    论坛元老

    最后登录
    2023-8-27
    发表于 2018-9-20 08:30:54 | 显示全部楼层
    还好不是硬件bug,谈不上世界末日,而且这个锅,真的可以甩给编译器。

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

    评分

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

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-2-6 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    1182

    主题

    4967

    帖子

    1

    蝴蝶豆

    论坛元老

    最后登录
    2020-3-17
    发表于 2018-9-20 08:45:30 | 显示全部楼层
    lymzzyh 发表于 2018-9-19 17:41
    甩锅三连:别人怎么没问题;是你不会用;真是辣鸡

    淡定一点,骚年
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    7

    帖子

    0

    蝴蝶豆

    金牌会员

    最后登录
    2020-5-17
    发表于 2018-9-20 09:36:47 | 显示全部楼层
    不用sd卡不就不会触发bug了吗,你真是辣鸡!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    31

    帖子

    0

    蝴蝶豆

    中级会员

    最后登录
    2018-10-15
     楼主| 发表于 2018-9-20 09:36:54 | 显示全部楼层
    stm1024 发表于 2018-9-20 08:30
    还好不是硬件bug,谈不上世界末日,而且这个锅,真的可以甩给编译器。

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

    不关编译器的事情 指针强转是编译器无法预判是否对齐的 所以只能用STM指令去处理
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-3-29 18:31 , Processed in 0.215847 second(s), 44 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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