Mbed OS 导出的项目不在系统 Workbench 上构建
Mbed OS exported project does not build on System Workbench
我开始在 MBED 上开发 OS。我想离线工作。
我将示例 "blinky" 应用程序导出到系统 Workbench IDE。导出的项目不会生成。
编译错误非常基本(缺少包含路径):
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=softfp -mfpu=fpv4-sp-d16 -std=c99 '-DDEVICE_CRC=1' '-DDEVICE_SPI=1' '-DDEVICE_I2C=1' '-D__MBED__=1' '-DDEVICE_I2CSLAVE=1' '-D__FPU_PRESENT=1' '-DDEVICE_PORTOUT=1' -DUSBHOST_OTHER '-DDEVICE_PORTINOUT=1' -DTARGET_RTOS_M4_M7 '-DDEVICE_RTC=1' '-DDEVICE_SERIAL_ASYNCH=1' -D__CMSIS_RTOS '-DDEVICE_ANALOGOUT=1' -DTOOLCHAIN_GCC '-DDEVICE_I2C_ASYNCH=1' -DTARGET_STM32L476xG -DTARGET_CORTEX_M -DTARGET_LIKE_CORTEX_M4 -DTARGET_STM32L476RG -DTARGET_M4 -DTARGET_STM32L4 '-DDEVICE_SPI_ASYNCH=1' '-DDEVICE_LPTICKER=1' '-DDEVICE_PWMOUT=1' '-DDEVICE_INTERRUPTIN=1' -DTARGET_CORTEX -DTARGET_NUCLEO_L476RG '-DTRANSACTION_QUEUE_SIZE_SPI=2' -D__CORTEX_M4 '-DDEVICE_USTICKER=1' '-DDEVICE_STDIO_MESSAGES=1' -DTARGET_FF_MORPHO -DTARGET_FAMILY_STM32 -DTARGET_FF_ARDUINO '-DDEVICE_PORTIN=1' -DTARGET_RELEASE -DTWO_RAM_REGIONS -DTARGET_STM '-DDEVICE_SERIAL_FC=1' '-DMBED_BUILD_TIMESTAMP=1540971180.81' '-DDEVICE_TRNG=1' -DTARGET_LIKE_MBED -D__MBED_CMSIS_RTOS_CM '-DDEVICE_SLEEP=1' -DTOOLCHAIN_GCC_ARM '-DDEVICE_CAN=1' '-DDEVICE_SPISLAVE=1' '-DDEVICE_ANALOGIN=1' '-DDEVICE_SERIAL=1' '-DDEVICE_FLASH=1' -DARM_MATH_CM4 -DMBED_DEBUG '-DMBED_TRAP_ERRORS_ENABLED=1' -DMBED_DEBUG '-DMBED_TRAP_ERRORS_ENABLED=1' -DNDEBUG -DNDEBUG -includeC:/mbed-os-example-blinky2_sw4stm32_nucleo_l476rg/mbed-os-example-blinky2/mbed_config.h -O2 -funsigned-char -fno-delete-null-pointer-checks -fomit-frame-pointer -fmessage-length=0 -fno-builtin -g3 -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -ffunction-sections -fdata-sections -c -MMD -MP -MF"mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/configuration_store.d" -MT"mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/configuration_store.o" -o "mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/configuration_store.o" "../mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/configuration_store.c" @"mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/includes.args"
../mbed-os/features/storage/FEATURE_STORAGE/flash-journal/flash-journal-strategy-sequential/strategy.c:18:10: fatal error: flash-journal-strategy-sequential/flash_journal_crc.h: No such file or directory
我有两个问题:
看来我遗漏了什么,或者导出功能的成熟度很低。您对此有何反馈?
我尝试在项目设置中自己添加包含路径,但它不起作用。而且我注意到 gcc 命令行似乎忽略了项目设置,而是使用 include.args 文件。唯一的问题是后一个文件不存在。我想它应该由系统 Workbench 在生成 Makefiles 时生成 ?
PS:导出的 IAR 项目构建良好。
What is your feedback on this ?
我的反馈是导出功能的成熟度取决于导出器。正如您提到的,IAR 导出器生成了正确的项目文件。
I guess it should be generated by System Workbench when it generates the Makefiles ?
这也是我的印象。根据错误消息,arm-none-eabi-gcc
并没有找不到 includes.args
文件,它正在查找比调用它的位置高一级的路径。这意味着 arm-none-eabi-gcc
是在本身不包含源的目录中调用的。相反,Makefile 可能设置为 运行 构建目录中的编译器。也许 mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/includes.args
可以在您的构建目录中找到。
包含路径中似乎缺少 ../mbed-os/features/storage/FEATURE_STORAGE/flash-journal/
或 mbed-os/features/storage/FEATURE_STORAGE/flash-journal/
。将该路径添加到包含路径可能会解决眼前的问题。
现在获取一些更一般的建议:
I want to work offline.
您尝试过 Mbed-CLI 吗?
你什么时候运行从在线编译器导出的?
我们一直在修复在线编译器中的错误,同时您可能遇到了我们修复的问题。
从 Mbed CLI 导出通常更简单,贡献者如何测试他们的导出器,因此它可能工作得更好。
我开始在 MBED 上开发 OS。我想离线工作。
我将示例 "blinky" 应用程序导出到系统 Workbench IDE。导出的项目不会生成。 编译错误非常基本(缺少包含路径):
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=softfp -mfpu=fpv4-sp-d16 -std=c99 '-DDEVICE_CRC=1' '-DDEVICE_SPI=1' '-DDEVICE_I2C=1' '-D__MBED__=1' '-DDEVICE_I2CSLAVE=1' '-D__FPU_PRESENT=1' '-DDEVICE_PORTOUT=1' -DUSBHOST_OTHER '-DDEVICE_PORTINOUT=1' -DTARGET_RTOS_M4_M7 '-DDEVICE_RTC=1' '-DDEVICE_SERIAL_ASYNCH=1' -D__CMSIS_RTOS '-DDEVICE_ANALOGOUT=1' -DTOOLCHAIN_GCC '-DDEVICE_I2C_ASYNCH=1' -DTARGET_STM32L476xG -DTARGET_CORTEX_M -DTARGET_LIKE_CORTEX_M4 -DTARGET_STM32L476RG -DTARGET_M4 -DTARGET_STM32L4 '-DDEVICE_SPI_ASYNCH=1' '-DDEVICE_LPTICKER=1' '-DDEVICE_PWMOUT=1' '-DDEVICE_INTERRUPTIN=1' -DTARGET_CORTEX -DTARGET_NUCLEO_L476RG '-DTRANSACTION_QUEUE_SIZE_SPI=2' -D__CORTEX_M4 '-DDEVICE_USTICKER=1' '-DDEVICE_STDIO_MESSAGES=1' -DTARGET_FF_MORPHO -DTARGET_FAMILY_STM32 -DTARGET_FF_ARDUINO '-DDEVICE_PORTIN=1' -DTARGET_RELEASE -DTWO_RAM_REGIONS -DTARGET_STM '-DDEVICE_SERIAL_FC=1' '-DMBED_BUILD_TIMESTAMP=1540971180.81' '-DDEVICE_TRNG=1' -DTARGET_LIKE_MBED -D__MBED_CMSIS_RTOS_CM '-DDEVICE_SLEEP=1' -DTOOLCHAIN_GCC_ARM '-DDEVICE_CAN=1' '-DDEVICE_SPISLAVE=1' '-DDEVICE_ANALOGIN=1' '-DDEVICE_SERIAL=1' '-DDEVICE_FLASH=1' -DARM_MATH_CM4 -DMBED_DEBUG '-DMBED_TRAP_ERRORS_ENABLED=1' -DMBED_DEBUG '-DMBED_TRAP_ERRORS_ENABLED=1' -DNDEBUG -DNDEBUG -includeC:/mbed-os-example-blinky2_sw4stm32_nucleo_l476rg/mbed-os-example-blinky2/mbed_config.h -O2 -funsigned-char -fno-delete-null-pointer-checks -fomit-frame-pointer -fmessage-length=0 -fno-builtin -g3 -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -ffunction-sections -fdata-sections -c -MMD -MP -MF"mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/configuration_store.d" -MT"mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/configuration_store.o" -o "mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/configuration_store.o" "../mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/configuration_store.c" @"mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/includes.args"
../mbed-os/features/storage/FEATURE_STORAGE/flash-journal/flash-journal-strategy-sequential/strategy.c:18:10: fatal error: flash-journal-strategy-sequential/flash_journal_crc.h: No such file or directory
我有两个问题:
看来我遗漏了什么,或者导出功能的成熟度很低。您对此有何反馈?
我尝试在项目设置中自己添加包含路径,但它不起作用。而且我注意到 gcc 命令行似乎忽略了项目设置,而是使用 include.args 文件。唯一的问题是后一个文件不存在。我想它应该由系统 Workbench 在生成 Makefiles 时生成 ?
PS:导出的 IAR 项目构建良好。
What is your feedback on this ?
我的反馈是导出功能的成熟度取决于导出器。正如您提到的,IAR 导出器生成了正确的项目文件。
I guess it should be generated by System Workbench when it generates the Makefiles ?
这也是我的印象。根据错误消息,arm-none-eabi-gcc
并没有找不到 includes.args
文件,它正在查找比调用它的位置高一级的路径。这意味着 arm-none-eabi-gcc
是在本身不包含源的目录中调用的。相反,Makefile 可能设置为 运行 构建目录中的编译器。也许 mbed-os/features/storage/FEATURE_STORAGE/cfstore/source/includes.args
可以在您的构建目录中找到。
包含路径中似乎缺少 ../mbed-os/features/storage/FEATURE_STORAGE/flash-journal/
或 mbed-os/features/storage/FEATURE_STORAGE/flash-journal/
。将该路径添加到包含路径可能会解决眼前的问题。
现在获取一些更一般的建议:
I want to work offline.
您尝试过 Mbed-CLI 吗?
你什么时候运行从在线编译器导出的? 我们一直在修复在线编译器中的错误,同时您可能遇到了我们修复的问题。
从 Mbed CLI 导出通常更简单,贡献者如何测试他们的导出器,因此它可能工作得更好。