Как мне разработать для обнаружения STM32 в Linux? [закрыто]


26

У меня есть плата обнаружения STM32, и я хотел бы иметь возможность программировать ее на Linux.

Какой самый простой способ сделать это?


Я установил Codesourcery в LinuxhUbuntu и немного сложил: PATH в порядке, но программа не отображается на панели управления или в программном центре. Может быть, это Ubuntu, я бы как-то изменил, но не знаю как. Если у вас есть идея, пожалуйста, напишите. Спасибо. Том
Том Рерт

1
@ TomRitzmann PeterJ прав, пожалуйста, не используйте ответы, чтобы задавать вопросы. Более того, проблемы с программным обеспечением здесь не по теме, SuperUser - правильное место.
Клабаккио

Ответы:


12

Простой способ программирования и отладки платы обнаружения STM32 (или любого STM32, использующего программатор ST-Link) - использовать проект stlink https://github.com/texane/stlink (однако OpenOCD тоже кажется популярным)

Платы ST Nucleo также выглядят как USB-устройства флэш-памяти, поэтому даже не нужно stlink- просто скопируйте файл на них.

Есть несколько хороших страниц о том, как разрабатывать для обнаружения STM32 в Linux, таких как http://gpio.kaltpost.de/?page_id=131 и http://torrentula.to.funpic.de/2012/03/22/ Настройка-stm32f4-arm-development-toolchain / и http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/

Однако я нашел последнюю ссылку наиболее полезной. В нем показано, как создавать STM32-проекты ST «как есть». Единственное изменение заключается в добавлении его Makefile, который кажется идеальным решением.

В последних версиях Ubuntu вы можете установить пакет, содержащий компилятор ARM:

sudo apt-get install gcc-arm-none-eabi

Обратите внимание, что процессоры все немного разные. Для всех STM32F0..4 потребуются разные флаги компилятора, и скрипт компоновщика будет немного отличаться для каждого (хотя на самом деле только из-за изменения размеров RAM и Flash).

Изменить: если вы хотите начать очень быстро, вы также можете посмотреть на http://www.espruino.com . Это интерпретатор JavaScript, который работает на самом STM32, поэтому, когда вы установили 'stlink', чтобы вы могли перейти на плату, вы можете просто загрузить изображение с этого сайта, включить его, а затем подключиться к терминальному приложению и начать программирование.


Вот список поддерживаемых плат STM32x Discovery от OpenOCD: github.com/openrisc/openOCD/tree/master/tcl/board (поиск «discovery» с помощью вашего браузера)
rbaleksandar

8

Если вам больше нравятся текстовые редакторы и Makefiles вместо использования GUI, вы можете сделать:

  • Установите набор инструментов, обеспечивающий arm-none-eabi-gcc. В Archlinux вам могут понадобиться сообщество / arm-none-eabi-binutils, arm-none-eabi-gcc и arm-none-eabi-newlib (и arm-none-eabi-gdb, если вы хотите отлаживать) все из сообщества repo или https://launchpad.net/gcc-arm-embedded (который можно найти в AUR Archlinux как gcc-arm-none-eabi-bin).
  • Решите, если и какую библиотеку вы хотите использовать для доступа к оборудованию. От макушки головы есть три распространенных варианта:
    1. Никто. Вы пишете все с нуля. Не рекомендуется для начинающих.
    2. STM32Cube : AC lib, предоставляемая самой ST.
    3. Libopencm3 : библиотека с открытым исходным кодом, поддерживающая довольно много ядер cortex-m от разных поставщиков.
    4. STM32PLUS : C ++ lib. Однако я не могу сказать больше об этом, потому что я не проверял это.
  • Создайте или скопируйте свой первый проект.
    1. Без библиотеки напишите свой собственный make-файл, скрипт компоновщика, загрузочный код и запустите простой make-файл. Удачи ;)
    2. С STM32Cube: Загрузите и установите STM32CubeMX . После распаковки файл * .exe на самом деле является просто файлом Java, и вы можете запустить его, используя «java -jar filename.exe». Установка требует sudo. Когда закончите, создайте проект и сгенерируйте код для «Truestudio». Это должно дать вам отправную точку со скриптом компоновщика, кодом запуска, некоторой тривиальной основной функцией (и make-файлом, если я правильно помню). На самом деле, даже если вы не используете библиотеку STM32Cube, STM32CubeMX отлично подходит для расчета значений для дерева часов и проверки, если вы можете настроить чип так, как вы думаете.
    3. С помощью libopencm3: получите примеры libopencm3 , найдите пример, соответствующий вашей доске, и используйте его в качестве отправной точки. Примеры должны быть готовы к запуску. Просто введите «сделать». Затем используйте этот пример в качестве отправной точки для вашей собственной разработки.
    4. С STM32Plus: я не знаю. Сожалею.
  • Получите ваш проект на доску. Либо использовать

    1. Серийный загрузчик: stm32flash прекрасно работает.
    2. Порт отладки: вы можете использовать openocd для связи с адаптером отладки, предоставленным на плате. Openocd великолепен, но документация не всегда самая лучшая. Если есть сомнения, присоединяйтесь к каналу openocd irc. Люди там действительно хорошие.
  • Код в текстовом редакторе и использовать инструменты командной строки. Этот урок будет содержать много советов.

наслаждаться


5

Eclipse , GCC и OpenOCD - это один набор инструментов. Это рекомендованный EMCU-IT и есть дополнительная информация здесь . На этих страницах также рекомендуется использовать RTOS, например FreeRTOS.org , но это зависит от вас.

А для помощи по компиляции примеров STM32 в Linux перейдите сюда . Эта ссылка указывает на make-файл для примеров, которые могут быть вызваны с

git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip

Несколько небольших исправлений кода также задокументированы, но большая часть проекта должна работать с

make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-

1
Благодарность! Я не видел эти ссылки раньше. Я поражен, что где-то нет более четкого руководства, так как разные доски открытий имеют несколько разные флаги сборки.
Гордон Уильямс

Да, ST сделал очень дешевую плату и раздал их, тысячи, а сам STM32 - потрясающий чип, вплоть до F4, но программирование их - огромная боль в заднице. Их драйверы невероятно плохо документированы и плохо названы, и найти IDE и цепочку инструментов, которые хорошо играют вместе бесплатно, не так уж и просто.
hak8or

1

У меня был успех с https://github.com/JorgeAparicio/bareCortexM (см. Также связанные сообщения в блоге). Меня беспокоит, что я могу просто пошагово пройти по коду или просмотреть память устройства вместо того, чтобы вставлять отладочные операторы в мой код или гадать, что происходит внутри чипа.

Проект bareCortexM - это шаблон Eclipse для разработки с использованием серии Cortex M, особенно STM32, на C ++ без ОС. Он настроен на использование openocd, gcc и имеет скрипты для прошивки и отладки для нескольких целей, включая некоторые платы обнаружения. Следуя инструкциям и установив рекомендуемые плагины Eclipse, я смог использовать свой STM32VLDISCOVERY в Ubuntu.

В соответствии с рекомендациями, я объединил шаблон eclipse с библиотекой шаблонов C ++ libstm32pp того же автора для оборудования STM32. libstm32pp обеспечивает удивительно полную замену CMSIS и часто критикуется водителей STM32 с моделью программирования , что позволяет говорить такие вещи , как PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)и PINB::setLow()или PINB::setHigh()все в основном составленный инлайн из - за шаблонов C ++. Настройка очень хорошая.


Я больше не рекомендую необслуживаемый bareCortexM; проверить stm32plus на andybrown.me.uk/wk
joeforker

Проблема с такими драйверами устройств заключается в том, что они неэффективны. Для правильных драйверов высокоскоростных устройств, которые не тратят время процессора, вам нужен rtos внизу, чтобы вы могли сделать правильное планирование.
Мартин


0

Вот небольшой, но инновационный шаблонный проект для быстрого запуска с использованием платы STM32F0 Discovery под Linux или любой другой ОС:

https://github.com/dobromyslov/stm32f0-chibios-template

Обратите внимание, что в проекте используется ChibiOS - бесплатная операционная система реального времени с открытым исходным кодом, так что это не совсем пустая реализация с нуля.


0

Я использую vim и arm-none-eabi-gcc вместе со всеми обычными инструментами для Linux. На мой взгляд, Linux - лучшая среда разработки для встраиваемых систем. Для отладки я использую stlink и arm-none-eabi-gdb.


0

Рассмотрим Platio . Если вам совсем не по душе командная строка, то вы обнаружите, что platformio значительно облегчает процесс разработки. pio initможет быть использован для настройки проекта. pio runиспользует цепочку инструментов для компиляции. pio run --target uploadотправляет код на устройство. Platformio по мере необходимости заботится о загрузке компонентов, библиотек и т. Д.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.