спросил
Изменено 4 года, 4 месяца назад
Просмотрено 276 раз
Начинаю разработку на ОС MBED. Я хочу работать офлайн.
Я экспортировал пример «мигающего» приложения в System 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 -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-config-f/mbed_example-blinky.2 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- разделы -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- ОС/функция es/storage/FEATURE_STORAGE/cfstore/source/includes. args" ../mbed-os/features/storage/FEATURE_STORAGE/flash-journal/flash-journal-strategy-sequential/strategy.c:18:10: фатальная ошибка: flash-journal-strategy-sequential/flash_journal_crc.h: такого нет файл или каталог
У меня 2 вопроса:
похоже, что либо я что-то упускаю, либо функциональность экспорта недостаточно развита. Каков ваш отзыв об этом?
Я попытался самостоятельно добавить пути включения в настройках проекта, но это не сработало. И я заметил, что командная строка gcc игнорирует настройки проекта и вместо этого использует файл include.args. Единственная проблема в том, что последний файл не существует. Я предполагаю, что он должен быть сгенерирован System Workbench при создании Makefiles?
PS: экспортированный проект для IAR строится нормально.
Что вы думаете об этом?
Я считаю, что зрелость функции экспорта зависит от экспортера. Как вы упомянули, экспортер IAR создал правильный файл проекта.
Я полагаю, он должен генерироваться System Workbench при создании файлов Makefile?
У меня тоже такое впечатление. Судя по сообщению об ошибке, arm-none-eabi-gcc
не может найти файл include.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 в целом проще, и участники тестируют свой экспортер, поэтому он может работать лучше.
2
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Электронная почта
Требуется, но не отображается
Электронная почта
Требуется, но не отображается
Arm Mbed OS — это встроенная операционная система с открытым исходным кодом, разработанная специально для «вещей» в Интернете вещей. Он включает в себя все функции, необходимые для разработки подключенного продукта на базе микроконтроллера Arm Cortex-M, включая безопасность, возможность подключения, ОСРВ и драйверы для датчиков и устройств ввода-вывода.
Mbed OS предоставляет платформу, которая включает в себя:
Arm Mbed OS позволяет вам писать приложения, работающие на встроенных устройствах, предоставляя уровень, который интерпретирует код вашего приложения так, как его может понять аппаратное обеспечение.
Код вашего приложения написан на C и C++. Он использует интерфейсы прикладного программирования (API), которые предоставляет Mbed OS. Эти API позволяют вашему коду одинаково работать на разных микроконтроллерах. Это упрощает начало работы с микроконтроллерами на базе Arm и интеграцию крупных программных проектов.
Для получения дополнительной информации посетите сайт разработчиков Mbed OS.
В экосистеме Arm Mbed у вас есть выбор, как вы хотите развиваться: онлайн или офлайн. Для автономной разработки предоставляется интерфейс командной строки Arm Mbed. Mbed CLI совместим с Windows, Linux и OSX. Этот вариант предоставляет больше параметров конфигурации, но также требует немного большей настройки.
Процесс установки Arm Mbed CLI зависит от вашей операционной системы. Пожалуйста, выберите операционную систему хоста. Инструкции по установке для каждой операционной системы помогут вам установить Mbed CLI локально.
В Windows самый простой способ установить Mbed CLI для запуска установщика Mbed CLI Windows .exe.
Примечание
Программа установки Windows устанавливает только встроенный инструментарий GNU Arm. Если вы хотите скомпилировать с помощью Arm Compiler 5 или IAR, посетите страницу поддерживаемых компиляторов.
В Linux и macOS можно использовать Python и Pip:
$ pip установить mbed-cli # если вы установили mbed-cli, вы можете обновить его с помощью: $ pip установить mbed-cli --upgrade
Вы можете убедиться, что Mbed CLI установлен правильно, запустив mbed help
из командной строки.
Для любой установленной цепочки инструментов обязательно добавьте глобальную конфигурацию Mbed CLI:
$ mbed config -G GCC_ARM_PATH "<путь к корзине GNU Arm>" [mbed] <путь к GNU Arm bin> теперь установлен как глобальный GCC_ARM_PATH $ конфигурация mbed --list [mbed] Глобальная конфигурация: GCC_ARM_PATH=<путь к корзине GNU Arm>
Примечание
Вы также можете применить ту же конфигурацию к цепочкам инструментов IAR и ARM, используя IAR_PATH
или ARM_PATH
.
Теперь можно попробовать скомпилировать один из примеров. Для простоты воспользуемся примером mbed-os-example-blinky
.
Откройте терминал и измените каталог на:
$ cd ./nrf52832-mdk/examples/mbedos5/mbed-os-example-blinky/
Добавить библиотеку mbed-os в каталог примера:
mbed-os-example-blinky$ корень конфигурации mbed . mbed-os-example-blinky$ mbed добавить https://github. com/makerdiary/mbed-os.git
Вызовите mbed compile
и укажите название вашей платформы и установленный набор инструментов (GCC_ARM, ARM, IAR). Например, для платформы NRF52832_MDK и встроенного инструментария GNU Arm:
mbed-os-example-blinky$ mbed compile --target NRF52832_MDK --toolchain GCC_ARM --flash
Аргумент --flash
автоматически записывает скомпилированную программу на вашу плату, если она подключена к вашему компьютеру. Вы можете добавить идентификатор локального производителя и название платформы для nRF52832-MDK и посмотреть, какие платы подключены к mbed обнаружить
:
$ mbedls --mock=1024:nRF52832_MDK
Обратите внимание, что зеленый светодиод мигает:
Совет
Вы также можете следовать разделу «Как запрограммировать nRF52832-MDK», чтобы прошить скомпилированную программу.
Репозиторий nrf52832-mdk
содержит набор примеров приложений BLE, основанных на ОС mbed и созданных с помощью интерфейса командной строки Arm Mbed.
./nrf52832-mdk/examples/mbedos5/mbed-os-example-ble ├── BLE_BatteryLevel ├── BLE_Beacon ├── BLE_Button ├── BLE_EddystoneObserver ├── BLE_EddystoneService ├── BLE_GAPButton ├── BLE_HeartRate ├── BLE_LED ├── BLE_LEDBlinker ├── BLE_Термометр └── README.md
С помощью инструмента командной строки перейдите в любой из примеров каталогов, например BLE_BatteryLevel
:
$ cd BLE_BatteryLevel
Добавить библиотеку mbed-os в каталог примера:
BLE_BatteryLevel$ добавить https://github.com/makerdiary/mbed-os.git
Скомпилируйте и запустите пример приложения на вашей плате:
BLE_BatteryLevel$ mbed compile --target NRF52832_MDK --toolchain GCC_ARM --flash
Откройте nRF Connect 9Приложение 0222 на вашем телефоне. Найдите свое устройство, которое должно называться BATTERY
.
Затем установите соединение с вашим устройством. Узнайте об услугах и характеристиках устройства.