Як мені розробити для відкриття STM32 в Linux? [зачинено]


26

У мене є плата виявлення STM32 і я хотів би мати можливість програмувати її на Linux.

Який найпростіший спосіб зробити це?


Я встановив Codesourcery на LinuxhUbuntu і трохи склався: PATH в порядку, але програма не з'являється на панелі керування або програмному забезпеченні. Можливо, саме Ubuntu я б якось змінив, але не знаю як. Якщо у вас є ідея, будь ласка, напишіть. Дякую. Том
Том Рерт

1
@TomRitzmann PeterJ має рацію, будь ласка, не використовуйте відповіді, щоб задавати питання. Більше того, проблеми з програмним забезпеченням тут не теми, SuperUser - це правильне місце.
clabacchio

Відповіді:


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 всім потрібні різні прапори компілятора, а сценарій посилання буде дещо різним для кожного (хоча тільки насправді через змінені розміри оперативної пам’яті та Flash).

Редагувати: якщо ви хочете почати дійсно швидко, ви також можете подивитися на http://www.espruino.com . Це інтерпретатор JavaScript, який працює на самому STM32, тож після того, як ви встановите "stlink", щоб ви могли спалахнути на дошці, ви можете просто завантажити зображення з цього сайту, пропустити його, а потім підключитися до термінальної програми та почати програмування.


Ось список підтримуваних плат відкриття STM32x від OpenOCD: github.com/openrisc/openOCD/tree/master/tcl/board (пошук "відкриття" за допомогою вашого браузера)
rbaleksandar

8

Якщо ви більше використовуєте текстові редактори та Makefiles замість того, щоб використовувати графічний інтерфейс, ви можете зробити:

  • Встановіть ланцюжок інструментів, що забезпечує 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 : вкладиш змінного струму надається самою ST.
    3. Libopencm3 : Вкладка з відкритим кодом, що підтримує досить багато ядер кори в різних постачальниках.
    4. STM32PLUS : C ++ lib. Однак я не можу сказати про це набагато більше, тому що не перевіряв.
  • Створіть або скопіюйте свій перший проект.
    1. Без lib, напишіть свій власний файл makefile, скрипт посилання, стартовий код і запустіть простий makefile. Удачі ;)
    2. За допомогою STM32Cube: завантажте та встановіть STM32CubeMX . Після розпакування файлу * .exe насправді є лише файлом java, і ви можете запустити його, використовуючи "java -jar filename.exe". Для установки потрібен sudo. Закінчивши, створіть проект та генеруйте код для "Truestudio". Це повинно дати вам вихідну точку зі скриптом посилання, пусковим кодом, деякою тривіальною основною функцією (і makefile, якщо я правильно пам'ятаю). Насправді, навіть якщо ви не використовуєте вкладку STM32Cube, STM32CubeMX чудово підходить для обчислення значень дерева дерева та перевірки, якщо ви можете налаштувати чіп так, як ви думаєте.
    3. За допомогою libopencm3: Отримайте приклади libopencm3 , знайдіть приклад, який відповідає вашій дошці, і використовуйте це як вихідну точку. Приклади повинні бути готові до запуску. Просто введіть "make". Потім використовуйте цей приклад як вихідну точку для власного розвитку.
    4. З STM32Plus: Я не знаю. Вибачте.
  • Поставте свій проект до ради. Або використовувати

    1. Серійний завантажувач: stm32flash чудово працює.
    2. Порт налагодження: Ви можете використовувати openocd для розмови з адаптером для налагодження, який надається на платі. Openocd - це чудово, але документація не завжди найкраща. Якщо ви сумніваєтесь, приєднуйтесь до каналу openocd irc. Люди там справді приємні.
  • Кодуйте в текстовому редакторі та використовуйте інструменти командного рядка. Цей підручник дасть безліч порад.

Насолоджуйтесь


5

Eclipse , GCC і OpenOCD - це одна ланцюжок інструментів. Це рекомендований EMCU-IT і є додаткова інформація тут . Ці сторінки також рекомендують використовувати RTOS на зразок FreeRTOS.org , але це залежить від вас.

Щоб отримати допомогу у складанні прикладів STM32 в Linux, зверніться сюди . Це посилання вказує на makefile для прикладів, до яких можна викликати

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.

Як рекомендовано, я поєднав шаблон затемнення з тією ж авторською бібліотекою шаблонів libstm32pp C ++ для обладнання 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

Можливо, комусь це буде корисно: моя коротка стаття (на російській мові) та простий проект . Все в Linux і без зайвих речей, таких як затемнення.

Бібліотеки взяті з веб-сайту ST, makefile - з одного з багатьох прикладів GPL в Інтернеті.


0

Ось невеликий, але інноваційний шаблонний проект для швидкого початку використання плати Discovery STM32F0 під Linux або будь-якої іншої ОС:

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

Зауважте, що проект використовує ChibiOS - безкоштовну та відкриту операційну систему в режимі реального часу, тому це не зовсім реальна реалізація з нуля.


0

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


0

Розглянемо платформу . Якщо вам зовсім не комфортно з командним рядком, ви побачите, що платформа значно полегшує процес розробки. pio initможе бути використаний для створення проекту. pio runвикористовує ланцюжок інструментів для компіляції. pio run --target uploadвідправляє код на пристрій. Platformio піклується про завантаження компонентів ланцюжка інструментів, бібліотек тощо за потребою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.