Micro Python на STM32F4 Discovery

image

Вводная

Micro Python суть реализация Python 3 для ARM-самодельщиков. Упоминался на хабре тут: habrahabr.ru/post/225131. По сути, проект micropython.org состоит из платы и софта. Так вот, платы у нас нет, а софт мало того, что доступен, так еще и неплохо работает (акселерометр не взлетает!) на STM32F4 Discovery. О том, как это завести, и расскажу вкратце. Принципиально нового ничего не скажу, описанное ниже — компиляция из следующих англоязычных источников:

gpio.kaltpost.de/?p=2082
github.com/texane/stlink/blob/master/README
forum.micropython.org/viewtopic.php?t=182&p=782

Процесс

0. Для утех использовалась отладочная плата STM32F4 Discovery, приобретенная у китайцев.
В качестве «большого брата» — ноутбук, работающий под управлением Linux Mint 17. Еще понадобятся два кабеля — miniUSB и microUSB.

1. Подготавливаем «большого брата» для издевательств над маленьким.

Устанавливаем кросс-компилятор.
sudo apt-get install gcc-arm-none-eabi

Устанавливаем дебаггер.
sudo apt-get install gdb-arm-none-eabi

Здесь есть документированная бага: если GDB уже установлен, то возникает конфликт man-ов. Решается путем загрузки и принудительной перезаписи пакета.
sudo apt-get install -d gdb-arm-none-eabi
sudo dpkg -i --force-overwrite /var/cache/apt/archives/gdb-arm-none-eabi_<буквы-цифры>.deb

Собираем STLink. Потребуются пакеты libusb-1.0 и pkg-config.
git clone https://github.com/texane/stlink
cd stlink
./autogen.sh
./configure
make
sudo make install


2. Собираем Micro Python.

git clone https://github.com/micropython/micropython.git
cd stmhal
make BOARD=STM32F4DISC

Здесь у меня вылезла ошибка компиляции, на форуме Micro Python решение имеется — нужен пакет libnewlib-arm-none-eabi.
В итоге в build-STM32F4DISC должен лежать firmware.elf

3. Заливаем прошивку в STM32F4 Discovery

Подключаем плату по miniUSB. Запускаем в терминале sudo st-util (оно начинает слушать порт 4242). В другом терминале запускаем GDB. Подключаемся к st-util и заливаем.
arm-none-eabi-gdb <где там у нас stmhal>/build-STM32F4DISC/firmware.elf
target extended localhost:4242
load

Процесс заливки сопровождается веселым морганием разноцветным светодиодом. По окончанию прибиваем GDB и st-util.

4. Развлекаемся.

Подключаем microUSB. Передергиваем miniUSB (если я правильно понимаю, он начинает работать только на питание). И тут у нас появляется съемный накопитель с boot.py и main.py. На этом этапе можно переходить к официальному туториалу Micro Python: micropython.org/doc/tut-contents.
Tags:
python, stm32f4discovery, arm

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.