STM32 на MAC OS
Как то раз я понял, что для реализации моей идеи мне не обойтись одними транзисторами и самодельными RS тригерами, и пора начинать работать с микроконтроллерами.
В микроконтроллерах я к сожалению абсолютный ноль, и мне пришлось начать гуглить и читать кучу статей. Спустя некоторое время, когда стала ясна разница между архитектурой Фон Неймана и Гарвардской, и другими базовыми вещами, нужно было выбрать микроконтроллер с которым я буду работать.
Из-за простоты необходимых мне возможностей я остановился на PIC, но коллега вовремя наставил меня на путь праведный и сказал копать в сторону STM и AVR, так как себестоимость не на много больше а возможности на порядок выше.
И вскоре я приобрел отладочную плату STM32F4 Discovery kit for STM32F407
В первый день носился с ней по дому и радовался как мигают LEDы и работает гироскоп. Но пора бы начать и самому писать программы. После 30 минут гугления я понял что 95% решений описанных в интернете работают под Windows, а счастливые обладатели Linux и Mac OS гуляют лесом. Я провел 3 дня по вечерам в поисках решений и в итоге имеем полный мануал как начать программировать под STM32 под Mac OS.
Сначала необходимо поставить среду разработки. В нашем случае это будет Eclipse(Indigo R Eclipse IDE for C/C++ Developers Mac Cocoa 64-bit). Идем по ссылке Eclipse качаем и устанавливаем.
GNU ARM toolchain
Можно скачать с официального сайта http://www.gnuarm.com/files.html. Но почему то при попытке запуска arm-elf-gcc или arm-elf-g++ возникает ошибка — Bad CPU type in executable. Почему? Я ещё не разобрался. Поэтому даю ссылочку на мой fork репозитория arm.
Давайте его выкачаем — git clone github.com/jsnyder/arm-eabi-toolchain.git
Теперь надо поставить все необходимые пакеты — brew install mpfr gmp libmpc texinfo
Далее идем выкачанную директорию — cd arm-eabi-toolchain
И выполняем:
mkdir -p $HOME/arm-cs-tools/bin
export PATH=$HOME/arm-cs-tools/bin:$PATH
CC=clang make cross-binutils cross-gcc cross-g++ cross-newlib
make cross-gdb
export PATH=$HOME/arm-cs-tools/bin:$PATH
make clean
ST-LINK
Идем сюда качаем и устанавливаем как написано в README. Тут можно почитать по дебагер ST-LINK.
Настройка
Теперь начинаем все связывать воедино.
Запускаем Eclipse. Идем в Help -> Install New Software. Нажимаем ссылку Available Software Sites. Находим CDT Juno, ставим галочку и жмем OK. Теперь в поле Work with выбираем CDT Juno. В появившемся списке ищем GCC Cross Compiler, ставим галочку а потом кнопку Finish.
Теперь мы можем создать нужный нам проект.
Идем в File -> New -> C++ Project. Выбираем Executable Cross Compile Project, даем ему имя и нажимаем Finish.
Теперь у нас есть пустой проект и нужно его настроить.
Выбираем наш проект, нажимаем правой кнопкой и идем в Properties -> C/C++ Build -> Settings.
В Cross GCC Assembler -> General -> Assembler flags пишем -mthumb -mcpu=cortex-m4
В Cross GCC Compiler -> Miscellaneous -> Other flags пишем -c -mthumb -mcpu=cortex-m4
В Cross G++ Compiler -> Miscellaneous -> Other flags пишем -c -mthumb -mcpu=cortex-m4
В Cross GCC Linker -> Miscellaneous -> Linker flags пишем:
-T «$
Теперь после компиляции получим бинарный файл в нужном виде. Для этого тут же в настройках выбираем таб Build Steps и в поле Command пишем
arm-none-eabi-objcopy -I ihex «$
Базовый проект
Здесь качаем базовый проект. В нем описано чтобы отладочная борда умела мигать светодиодами.
После того как вы скачаете и поместите все файлы в проект Eclipse. Нужно указать пути к подключаемым заголовкам. Опять же идем в Properties -> C/C++ Build -> Settings.
Тут у Cross GCC Compiler и Cross G++ Compiler в Includes добавляем
«$
«$
«$
«$
«$
и жмём OK.
Поехали
Вроде все. Привязывать st-link и gdb к eclipse я не стал. Поэтому покажу как все делается из консоли.
В Eclipse собираем наш проект кнопочкой Build.
После того как убедились что сборка успешная и бинарный файлик тоже есть, подключаем нашу плату через USB.
Открываем консоль (лучше iterm). В первом табе запускаем st-link. После установки он должен быть доступен глобально.
2013-12-05T22:48:22 INFO src/stlink-common.c: Loading device parameters…
2013-12-05T22:48:22 INFO src/stlink-common.c: Device connected is: F4 device, id 0x10016413
2013-12-05T22:48:22 INFO src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
Chip ID is 00000413, Core ID is 2ba01477.
Target voltage is 2879 mV.
Listening at *:4242.
Мы видим как определяется устройство и вешается обработчик на порт 4242.
В соседней вкладке запускаем ранее установленный arm-none-eabi-gdb
GNU gdb (32-bit ARM EABI Toolchain JBS-2013.05-23-v2013.05-1-gd66a29f) 7.4.50.20120716-cvs
Copyright © 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type «show copying»
and «show warranty» for details.
This GDB was configured as «—host=x86_64-apple-darwin12.5.0 —target=arm-none-eabi».
For bug reporting instructions, please see:
.
(gdb)
Все отлично. Теперь необходимо подключиться к нашему девайсу. Нужно выполнить команду target remote :4242
(gdb) target remote :4242
Remote debugging using :4242
0x08000b70 in ?? ()
В соседней вкладке где запущен st-link мы дожны увидеть инфу о подключении GDB
KARL — should read back as 0x03, not 60 02 00 00
GDB connected.
Ну и осталось послследнее. Нужно накатить нашу новую прошивку.
Идем во вкладку с GDB и выполняем команду load
(gdb) load путь_к_бинарнику_.ihex
Loading section .sec1, size 0xc10 lma 0x8000000
Start address 0x8000b70, load size 3088
Transfer rate: 3 KB/sec, 3088 bytes/write.
А в соседней вкладке отладчика будет видно что все успешно накатилось
2013-12-05T22:56:04 INFO src/stlink-common.c: Attempting to write 16384 (0x4000) bytes to stm32 address: 134217728 (0x8000000)
EraseFlash — Sector:0x0 Size:0x4000
Flash page at addr: 0x08000000 erased
2013-12-05T22:56:05 INFO src/stlink-common.c: Finished erasing 1 pages of 16384 (0x4000) bytes
2013-12-05T22:56:05 INFO src/stlink-common.c: Starting Flash write for F2/F4
2013-12-05T22:56:05 INFO src/stlink-common.c: Successfully loaded flash loader in sram
size: 16384
2013-12-05T22:56:05 INFO src/stlink-common.c: Starting verification of write complete
2013-12-05T22:56:05 INFO src/stlink-common.c: Flash written and verified! jolly good!
Чтобы посмотреть на результат, в gdb выполните команду ‘c’ (continue). Плата должна замигать как новогодняя ёлка.
Всё о чем я писал не имеет 100% понимания с моей стороны. Но это отличная отправная точка для начинающих.
Надеюсь эта статья поможет кому-нибудь.
Источник
Установка ST-LINK V2 в MAC OS X для разработки под STM32
Недавно наткнулся на замечательную статью, о том, как собрать все инструменты для разработки в среде linux под контроллеры stm32 и я решил вновь вернуться к задаче, которую уже пытался решить, а именно заставить работать все тоже самое по Mac OS X (В моем случае версии 10.9.1 Mavericks), так как работать в CooCox (а он основан именно на Eclipse) в виртуальной машине уже изрядно надоело. В данной статье я опишу пошаговый алгоритм как все тоже самое заставить работать в OS X.
Итак, вы хотите разрабатывать на STM32 в среде Mac OS X, у вас есть ST-LINK V2 отдельно или на макетной плате, тогда добро пожаловать под кат.
Если брать в целом, то за исключением Microchip с их кросс-платформенной MPLAB X для разработки под Pic (по крайней мере мне известна только она), особо никто из производителей не заботится о разработчиках на платформах отличных от Windows, что создает определенный порог вхождения и отпугивает достаточно много разработчиков, если вы, конечно, не пользователь Arduino Development Tools.
Почему же нельзя просто взять и использовать весь алгоритм который описал futurelink в OS X и быть счастливым? Потому что apple заботится о нас, и посему они выпилили из систему все компоненты, которые требуются для установки и сборки пакетов из репозиториев. Отсутствует и сам менеджер пакетов, основная парадигма направлена на то, что все нужно ставить через AppStore или на крайний случай скачивать программу на свой страх и риск из «не установленных источников» =). Однако не все так плохо как может показаться, все эти фатальные недостатки можно успешно устранить, а заодно и познакомиться с мощным инструментом который нам в этом поможет — менеджером пакетов.
Подготовка
Обычно, в этот момент все пишут что нужно установить Xcode из AppStore, а затем установить Command Line Tools (а именно они нам и нужны) и такой способ тоже может быть использован, однако если вы не собираетесь ничего разрабатывать в Xcode (а может вам жалко место на ssd), то можно поставить Command Line Tools отдельно. Все команды которые будут выделены далее нужно исполнять в терминале.
Способ 1:
Просто набрать в терминале:
В Maverick сразу вываливается окно вида:
Нажимает Установить и получаем все необходимые утилиты без самого Xcode.
Способ 2:
Скачать и установить образы в ручную:
Образ для Mountain Lion
Образ для Mavericks
После всех этих операций в системе будут установлены такие утилиты как make, gcc, git и другие.
Установка менеджера пакетов
К счастью, мировое open source сообщество не оставило пользователей Mac в беде и выкатило несколько решений на этот счет.
На текущий момент есть два достойных проекта, которые можно использовать для этих целей Macports и Brew. Если у вас стоит какой либо из этих менеджеров, то ставить больше ничего не надо, однако если вы задумываетесь что вам поставить, то лично я рекомендую именно Brew.
Установка Brew проста и незатейлива, копируем строчку в терминал и следуем инструкциям
Все! Теперь у вас есть возможность устанавливать пакеты из репозиториев!
Например можно поставить себе Midnight Commander:
Или wget (рекомендую поставить, он понадобится позже):
Если у вас уже был установлен Brew, то рекомендую вам обновить его командой:
А затем запустить:
Но не будем отвлекаться от нашей основной задачи, а именно подружить наш программатор с системой.
Установка ST-LINK V2
Теперь мы можем установить все необходимые нам пакеты, благо сделать это уже очень просто:
После установки этих пакетов у нас есть все необходимое для сборки проекта от Texane.
Я буду руководстоваться тем, что мы создадим папку в своей домашней директории и назовем ее Embed Tools, но вы можете делать в любой удобной папке.
Подключаем нашу плату и запускаем комманду:
В случае если все хорошо, то должен быть возвращен ответ вида:
Для сохранение совместимости и исходный тутором, я буду делать теже самые ссылки, но опять же, вы можете делать в удобные для вас места, можно даже не делать никакие ссылки, а в самом эклипсе ссылаться непосредственно на пути установки утилит.
С большой долей вероятности, в вашей системе каталога opt не будет, а значит его нужно создать, а заодно и каталог bin в нем:
Теперь создаем ссылку на st-util в каталог /opt/bin/:
Установка ARM Toolchain
Качаем GCC ARM TOOLCHAIN 4.8, распаковываем и кладем все в нашу папку Embed Tools. Я качал последний мажорный релиз на сегодняшний день, а именно 4.8-2013-q4-major и моя папка, соответственно, называется gcc-arm-none-eabi-4_8-2013q4. Вы можете скачать несколько разных релизов и вообще разные тулчейны и все их скопировать в нашу Embed Tools, а затем менять ссылку на них в каталоге opt, как это предлагает делать futurelink (очень удобно кстати, не придется менять каждый раз в проектах ссылку в случае замены тулчейна).
Создаем ссылку на тулчейн в каталог /opt/arm-toolchain:
А для тех кто ранее установил себе wget, можно использовать вот такую команду:
Она скачивает тулчейн, распаковывает в папку Embed Tools и создает ссылку в /opt/arm-toolchain на него.
Заключение
На текущем этапе большинство пользователей может приступить в пункту Среда разработки в оригинальном туторе. Но возможно не все так подробно знакомы c эклипсом, что способны расшифровать фразу про установку плагинов «Для обоих есть апдейт-сайты, ставятся плагины стандартным для клипсы способом из менюшки.», поэтому я решил их описать более подробно.
GNU Arm Eclipse
В списке плагинов репозитория выбираем 2 отмеченных чекбоксами:
Так как J-Link’а у меня нет, то я себе экспериментальный плагин не ставил, но может кто-то попробует и его.
Zylin Embedded CDT
В данном случае вариант чекбокса единственный, так что отмечаем его.
В процессе установки плагинов, будет выдаваться предупреждение безопасности, на которое отвечаем утвердительно.
Теперь вам осталось создать свой C или C++ проект, и выполнить его настройки как описано в туторе.
На этом все, я надеюсь у вас все получилось. Желаю удачных разработок.
Источник
csukuangfj / stm32-macos.md
STM32 MacOS X Environment Setup
Table of Contents
1. Install JDK 8
- Java SE Development Kit 8u191
- https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-macosx-x64.dmg
- double click to install
2. Install Eclipse
Option 1: GNU MCU Eclipse IDE for C/C++ Developers
- https://github.com/gnu-mcu-eclipse/org.eclipse.epp.packages/releases
- 20190101-2023-gnumcueclipse-4.5.1-2018-12-R-macosx.cocoa.x86_64.tar.gz
- unzip and move to the folder Applications
- start eclipse, menu, help, install new software, work with, select «cdt», check «CDT main features», next, finish, restart eclipse.
- start eclipse, menu, help, install new software, work with, select «»
3. Cross Compile Toolchain (arm-none-eabi-*))
Option 1: GNU MCU Eclipse ARM Embedded GCC
- refer to https://gnu-mcu-eclipse.github.io/toolchain/arm/install/
- Go to the GitHub release page, https://github.com/gnu-mcu-eclipse/arm-none-eabi-gcc/releases
- gnu-mcu-eclipse-arm-none-eabi-gcc-8.2.1-1.1-20190102-1122-macos.tgz
we have $HOME/opt/gnu-mcu-eclipse .
Option 2: GNU ARM Embedded Toolchain
- https://developer.arm.com/open-source/gnu-toolchain/gnu-rm
- click downloads
- gcc-arm-none-eabi-8-2018-q4-major-mac.tar.bz2
- https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2018q4/gcc-arm-none-eabi-8-2018-q4-major-mac.tar.bz2?revision=1041bf49-06d4-4174-866f-0e5259fa9d8d?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Mac%20OS%20X,8-2018-q4-major
4. Install STLink
- GNU MCU Eclipse OpenOCD
- https://github.com/gnu-mcu-eclipse/openocd/releases
- gnu-mcu-eclipse-openocd-0.10.0-10-20181020-0522-macos.tgz
- unzip to $HOME/opt
It should output
We get an updated stm32f7x.dap to avoid the following error
6. Install STM32CubeMX
- https://www.st.com/en/development-tools/stm32cubemx.html
- click «Get Software» to download it
When it starts, an popup windows says:
Error: Old ST-LINK firmware version. Upgrade ST-LINK firmware.
- Go to https://www.st.com/en/development-tools/stsw-link007.html
- Download en.stsw-link007.zip
Open «STM32CubeProgrammer», it should display no error messages.
Inside /Applications/STMicroelectronics/STM32Cube/STM32CubeProgrammer/STM32CubeProgrammer.app/Contents/MacOs/bin , we can find STM32_Programmer_CLI , which is the commandline tool.
- Generate a Makefile project from CubeMx. Select the specified board.
-
Press the black reset button.
Or use CubeProgrammer to upload the binary:
- Open STM32CubeProgrammer
- Click Connect
- Select «Erase & Programming»
- For the file path, select «/path/to/xxxx.bin»
- For the start address, use the default value «0x08000000»
- Check «Run after programming»
- Click the button «Start Programming»
Or use the following command
- Clock Configuration, HCLK (MHz) —> 216 MHz (for STM32F746 Nucleon-144 board)
- Pinout & Configuration
- Computing: CRC, activated
- Right panel «Pinout view»: PD9 (select USART3_RX ), PD8(USART3_TX)
- Connectivity: select USART3, mode (select Asynchronous). Leave others to their defaults, i.e., baudrate is 115200, 8bits, no parity check.
- Generate Code
After uploading the binary to the board. On macOS, do the following:
- brew install minicom
- ls /dev/tty.usbmodem1423 , it may be tty.usbmodelxxxx , replace xxxx in the following command
- minicom -D /dev/tty.usbmodem1423
- it should print the message sent from the board
- Note that the metakey in iterm2 is ESC . Press ESC + Z ot invoke the help window.
- ESC + Z , then press X to exit minicom
To redirect printf , do the following:
Copy syscalls.c from $HOME/STM32Cube/Repository/STM32Cube_FW_F7_V1.14.0/Projects/STM32F769I_EVAL/Examples/UART/UART_Printf/SW4STM32 to the project
add the following function to main.c
then compile the project. printf should be redirected to the console!
Источник