caicaptain2 发表于 2023-3-29 11:09:44

转换AC6后,ST的USB库出现编译警告,影响大吗?

警告信息如下:


libstm32/STM32_USB_OTG_Driver/src/usb_core.c(182): warning: '__packed__' attribute ignored when parsing type [-Wignored-attributes]
      USB_OTG_WRITE_REG32( fifo, *((__packed uint32_t *)src) );
                                    ^~~~~~~~
./user/usbh_mass_storage\usb_conf.h(216): note: expanded from macro '__packed'
#define __packed    __attribute__ ((__packed__))
                                    ^~~~~~~~~~
./libstm32/STM32_USB_OTG_Driver/inc/usb_defines.h(224): note: expanded from macro 'USB_OTG_WRITE_REG32'
#define USB_OTG_WRITE_REG32(reg,value) (*(__IO uint32_t *)(reg) = (value))
                                                                   ^~~~~
libstm32/STM32_USB_OTG_Driver/src/usb_core.c(208): warning: '__packed__' attribute ignored when parsing type [-Wignored-attributes]
    *(__packed uint32_t *)dest = USB_OTG_READ_REG32(fifo);
      ^~~~~~~~
./user/usbh_mass_storage\usb_conf.h(216): note: expanded from macro '__packed'
#define __packed    __attribute__ ((__packed__))
                                    ^~~~~~~~~~



需要手动改一下语法吗?

h_007 发表于 2023-3-29 11:27:00

最好手动改一下,__packed涉及到结构体内部成员的对齐,搞不好会hardfault

eric2013 发表于 2023-3-29 12:31:50

在CMSIS软件包里面,AC6对应的叫cmsis_armclang.h, 对照全部修改了即可。

另外使用ST的USB库的话,就用AC5即可,用AC6意义不大,没性能提升。

https://img.anfulai.cn/dz/attachment/forum/202303/29/123000vlk5k1hl5r8eqwzm.png

caicaptain2 发表于 2023-3-29 14:40:49

eric2013 发表于 2023-3-29 12:31
在CMSIS软件包里面,AC6对应的叫cmsis_armclang.h, 对照全部修改了即可。

另外使用ST的USB库的话,就用A ...

还是搞不好。以下几种定义都试了,总是相同的警告。

#define __packed    __attribute__((__packed__))
#define __packed    __attribute__((packed))
#define __packed    __PACKED

都不行。

完全没法理解这个mdk官方的建议怎么执行:

eric2013 发表于 2023-3-29 15:07:59

caicaptain2 发表于 2023-3-29 14:40
还是搞不好。以下几种定义都试了,总是相同的警告。

#define __packed    __attribute__((__packed__) ...
那就别改它了,意义不大,ST的USB库就用AC5即可。等他们官方升级了,直接使用新版
页: [1]
查看完整版本: 转换AC6后,ST的USB库出现编译警告,影响大吗?