CH32V307 非字节对齐访问

RISC-V系列MCU不支持非对齐访问? - 沁恒微电子社区 (wch.cn)

看到此前有老哥,提到过这个问题,目前我也碰到了这个问题,具体体现在对结构体元素的强制类型转换上。

icon_rar.gifCH32V307 Test.zip

对一个函数传入定义的形参(结构体指针),在函数内对结构体指针元素做强制类型转换,如下图,硬件报错mcause4,和此前贵公司工程师解释的内容似乎并不一致,希望可以得到一个合理的解释。

image.pngimage.png

提供的代码中,对结构体使用了packed,后续也使用了__aligned__(4),但都会产生报错


您好,RISC-V MCU 不支持非对齐访问,rt_uint32_t是您定义的unsigned int 类型,默认32 bits对齐,然后强转之后也是通过这种类型访问,这种方式很可能引起硬件错误。

将变量类型重新定义,修改对齐即可。

typedef unsigned int rt_uint32_t __attribute__((aligned(1)));


只有登录才能回复,可以选择微信账号登录