跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT SDK
  4. 【反馈】FLASH_DRV_Program 接口因内部指针强转导致非对齐访问 HardFault

【反馈】FLASH_DRV_Program 接口因内部指针强转导致非对齐访问 HardFault

已定时 已固定 已锁定 已移动 YT SDK
1 帖子 1 发布者 37 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • jinyiJ 离线
    jinyiJ 离线
    jinyi
    编写于 最后由 编辑
    #1

    在使用 LE0 SDK 1_4_0 HOTFIX_001 的 FLASH_DRV_Program 接口时发现一个问题。请问除了使用断言,是否有其他方式预防客户,调用时出现HardFault?因为客户基本没开断言

    问题现象:

    • 列表当传入的 pData 地址非 4 字节对齐时,程序会触发 HardFault (Unaligned Access)。

    原因分析:

    • 列表该接口原型定义为 const void * pData,但在内部实现中,直接将其强转为 uint32_t * 使用(源码中带有 /* PRQA S 0316 */ 注释)。
      由于 void * 允许任意地址,当应用层传入非对齐地址时,这种强转会导致在访问时,HardFault。
    status_t FLASH_DRV_Program(..., const void * pData)
    {
        // 强转发生处,PRQA 警告被屏蔽
        state->cmdParam.pdata = (const uint32_t *) pData; /* PRQA S 0316 */
        // ...
    }
    
    static status_t FLASH_LaunchCommandSequence(uint32_t instance)
    {
        // ...
        // 在此处触发 Unaligned Access HardFault
        for (uint32_t i = 0; i < state->cmdParam.word_size; i++)
        {
            state->cmdParam.dest[i] = state->cmdParam.pdata[i]; 
        }
        // ...
    }
    
    1 条回复 最后回复
    0

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

    帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

  • can
    20
    demo
    20
    uds
    13
    lin stack
    11
    md14
    6
    fbl
    5
    yt-link
    5
    adc模块
    4
    Online Users
    • 登录

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门