Экспортированный проект Mbed OS не построен на System Workbench - PullRequest
0 голосов
/ 31 октября 2018

Я начинаю разрабатывать на ОС MBED. Я хочу работать в автономном режиме.

Я экспортировал пример "blinky" приложения в IDE System Workbench. Экспортированный проект не строится. Ошибки компиляции довольно просты (отсутствуют пути включения):

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

У меня есть 2 вопроса:

  • похоже, что я что-то упустил или зрелость экспортной функциональности довольно низкая. Что вы думаете об этом?

  • Я попытался добавить пути включения в настройках проекта, но это не работает. И я заметил, что командная строка gcc, похоже, игнорирует настройки проекта и вместо этого использует файл include.args. Единственная проблема - последний файл не существует. Я предполагаю, что он должен быть сгенерирован System Workbench, когда он генерирует Makefiles?

PS: экспортированный проект для IAR работает нормально.

1 Ответ

0 голосов
/ 31 октября 2018

Ваше мнение об этом?

Мой отзыв заключается в том, что срок выполнения функции экспорта зависит от экспортера. Как вы упомянули, экспортер IAR создал правильный файл проекта.

Я полагаю, он должен быть сгенерирован System Workbench при генерации 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/ отсутствует в путях включения. Это может решить непосредственную проблему, чтобы добавить этот путь к путям включения.


Теперь для более общего совета:

Я хочу работать в автономном режиме.

Вы пробовали Mbed-CLI?

Когда вы запустили экспорт из онлайн-компилятора? Мы постоянно исправляем ошибки в онлайн-компиляторе, и вы, возможно, столкнулись с чем-то, что мы исправили за это время.

Экспорт из Mbed CLI в целом проще, и как участники тестируют своего экспортера, так что он может работать лучше.

...