
Вводная
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.