使用环境
- 操作系统版本:Win11 22H2
- 操作系统平台(x86/x64):x86
- VsCode 版本:1.86.0-insider
- EIDE 插件版本:v3.13.2023060401
- C/C++ 插件版本:v1.18.5
- 何种编译器(keil_c51/sdcc/armcc5/armgcc/...):armcc6
- 编译器版本(非编译问题可忽略):V6.16
描述问题
tx_thread_schedule.s使用EIDE与KEIL编译的内容不一致。
最终导致threadX的modules无法共享内存(keil编译可以正常使用,对比map文件后锁定在tx_thread_schedule.s文件的编译结果上)。
对比两个工程的配置,应该是汇编编译器的配置有差异。
keil使用armclang(Auto Select)方式,编译指令如后附1
keil使用arm-auto(Auto Select)方式,具体编译指令不清楚,但是使用arm-clang(gnu syntax)并添加-masm=auto汇编选项后,编译指令如后附2,此时startup_stm32h743xx.s是不能正常编译的
附1 --target=arm-arm-none-eabi -mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard -masm=auto -c
-gdwarf-3 -Wa,armasm,--pd,"MICROLIB SETA 1"
-IC:/111_APPS/Keil_v5/Packs/Keil/STM32H7xx_DFP/3.0.0/Drivers/CMSIS/Device/ST/STM32H7xx/Include
-Wa,armasm,--pd,"UVISION_VERSION SETA 534" -Wa,armasm,--pd,"STM32H743xx SETA 1" -Wa,armasm,--pd,"TXM_MODULE_MANAGER_16_MPU SETA 1"
-o ./Tx_ModuleManager/*.o
附2 "C:\111_APPS\Keil_v5\ARM\ARMCLANG\bin\armasm.exe" -I../../src/5_PhysicalChip/CPU -I../../src/6_Rtos/UserPort -I../../src/1_App/Include -I../../src/6_Rtos/threadx/common/inc -I../../src/6_Rtos/threadx/common_modules/inc -I../../src/6_Rtos/threadx/common_modules/module_manager/inc -I../../src/6_Rtos/threadx/ports_module/cortex_m7/ac6/inc -I../../src/5_PhysicalChip/Drivers/CMSIS/Device/ST/STM32H7xx/Include -I../../src/5_PhysicalChip/Drivers/CMSIS/Include -I../../src/5_PhysicalChip/Drivers/STM32H7xx_HAL_Driver/Inc -I../MDK-ARM/RTE/_Tx_ModuleManager --cpu Cortex-M7.fp.dp --li --pd "MICROLIB SETA 1" -g -masm=auto -o ./build/Tx_ModuleManager///src/5_PhysicalChip/CPU/startup_stm32h743xx.o --depend ./build/Tx_ModuleManager//__/src/5_PhysicalChip/CPU/startup_stm32h743xx.d ./../../src/5_PhysicalChip/CPU/startup_stm32h743xx.s
屏幕截图
看map应该是只有这个文件的编译结果有出入
期望现象
- 如keil一般使用armclang(Auto Select)方式编译