Compiler le micro-logiciel Micro-Python pour Raspberry Pico

Objectif :
Le but de cet article est de montrer les différentes étapes pour constuire le micro-logiciel (firmware) Micro-Python à partir de son code source pour le Raspberry Pico.
Pour en savoir plus :
https://forum.micropython.org/viewtopic.php?f=21&t=9965
https://davll.me/posts/2021/06/03/raspi-pico-build-micropython/
https://rafaelaroca.wordpress.com/2022/02/13/building-micropython-for-the-raspberry-pi-pico-with-ethernet-and-webrepl-support/
https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-python-sdk.pdf

Distribution de travail : Lubuntu 22.04

1/ Installation des outils de cross-compilation.

util01@station40:~$ sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential libusb-1.0-0-dev libusb-dev pkg-config

2/ Création du répertoire de travail.

util01@station40:~$ mkdir -p RASPICO/MicroPythonFirmware
util01@station40:~$ cd RASPICO/MicroPythonFirmware/
util01@station40:~/RASPICO/MicroPythonFirmware$

I/ Installation des outils pour Raspberry Pico.

1/ Création du répertoire du travail.

util01@station40:~/RASPICO/MicroPythonFirmware$ mkdir pico
util01@station40:~/RASPICO/MicroPythonFirmware$ cd pico/
util01@station40:~/RASPICO/MicroPythonFirmware/pico$

2/ Téléchargement du code source des outils Pico.

util01@station40:~/RASPICO/MicroPythonFirmware/pico$ git clone -b master https://github.com/raspberrypi/pico-sdk.git
util01@station40:~/RASPICO/MicroPythonFirmware/pico$ git clone -b master https://github.com/raspberrypi/picotool.git

3/ Création du répertoire de travail.

util01@station40:~/RASPICO/MicroPythonFirmware/pico$ cd picotool/
util01@station40:~/RASPICO/MicroPythonFirmware/pico/picotool$

4/ Création du répertoire de construction.

util01@station40:~/RASPICO/MicroPythonFirmware/pico/picotool$ mkdir build
util01@station40:~/RASPICO/MicroPythonFirmware/pico/picotool$ cd build
util01@station40:~/RASPICO/MicroPythonFirmware/pico/picotool/build$

5/ Configuration de la compilation.

util01@station40:~/RASPICO/MicroPythonFirmware/pico/picotool/build$ export PICO_SDK_PATH=/home/util01/RASPICO/MicroPythonFirmware/pico/pico-sdk
util01@station40:~/RASPICO/MicroPythonFirmware/pico/picotool/build$ cmake ..

6/ Compilation.

 

util01@station40:~/RASPICO/MicroPythonFirmware/pico/picotool/build$ make

7/ Installation.

util01@station40:~/RASPICO/MicroPythonFirmware/pico/picotool/build$ sudo make install
util01@station40:~/RASPICO/MicroPythonFirmware/pico/picotool/build$ cd
util01@station40:~$

II/ Installation du micro-logiciel Micro-Python.

util01@station40:~$ cd ~/RASPICO/MicroPythonFirmware/micropython
util01@station40:~/RASPICO/MicroPythonFirmware$

1/ Téléchargement du code source du micro-logiciel.

util01@station40:~/RASPICO/MicroPythonFirmware$ git clone -b master https://github.com/micropython/micropython.git

 

util01@station40:~/RASPICO/MicroPythonFirmware$ cd micropython/
util01@station40:~/RASPICO/MicroPythonFirmware/micropython$

2/ Compilation de l’outil de compilation croisée.

util01@station40:~/RASPICO/MicroPythonFirmware/micropython$ make -C mpy-cross/

3/ Téléchargement du code source des différents modules.

util01@station40:~/RASPICO/MicroPythonFirmware/micropython$ git submodule update --init -- lib/pico-sdk
util01@station40:~/RASPICO/MicroPythonFirmware/micropython$ git submodule update --init -- lib/tinyusb

4/ Mise-à-jour du SDK.

util01@station40:~/RASPICO/MicroPythonFirmware/micropython$ cd lib/pico-sdk
util01@station40:~/RASPICO/MicroPythonFirmware/micropython/lib/pico-sd
util01@station40:~/RASPICO/MicroPythonFirmware/micropython/lib/pico-sdk$ git submodule update --init
util01@station40:~/RASPICO/MicroPythonFirmware/micropython/lib/pico-sdk$ cd ../..
util01@station40:~/RASPICO/MicroPythonFirmware/micropython$

5/ Compilation des modules.

util01@station40:~/RASPICO/MicroPythonFirmware/micropython$ cd ports/rp2
util01@station40:~/RASPICO/MicroPythonFirmware/micropython/ports/rp2$

 

util01@station40:~/RASPICO/MicroPythonFirmware/micropython/ports/rp2$ make BOARD=PICO submodules

6/ Compilation du micro-logiciel.

util01@station40:~/RASPICO/MicroPythonFirmware/micropython/ports/rp2$ make

7/ Vérification.

util01@station40:~/RASPICO/MicroPythonFirmware/micropython/ports/rp2$ ls -l build-PICO/firmware.*
-rwxr-xr-x 1 util01 www-data 307132 nov. 30 19:37 build-PICO/firmware.bin
-rw-r--r-- 1 util01 www-data 4457996 nov. 30 19:37 build-PICO/firmware.dis
-rwxr-xr-x 1 util01 www-data 647964 nov. 30 19:37 build-PICO/firmware.elf
-rw-r--r-- 1 util01 www-data 1423030 nov. 30 19:37 build-PICO/firmware.elf.map
-rw-r--r-- 1 util01 www-data 863944 nov. 30 19:37 build-PICO/firmware.hex
-rw-r--r-- 1 util01 www-data 614400 nov. 30 19:37 build-PICO/firmware.uf2

8/ Affichage des informations sur le micro-logiciel.

util01@station40:~/RASPICO/MicroPythonFirmware/micropython/ports/rp2$ picotool info -all build-PICO/firmware.uf2
File build-PICO/firmware.uf2:

Program Information
name: MicroPython
version: v1.19.1-723-g771c16f3d
features: USB REPL
thread support
frozen modules: _boot, rp2, _boot_fat, uasyncio, uasyncio/core, uasyncio/event, uasyncio/funcs, uasyncio/lock, uasyncio/stream, onewire, ds18x20,
dht, neopixel
binary start: 0x10000000
binary end: 0x1004afbc
embedded drive: 0x100a0000-0x10200000 (1408K): MicroPython

Fixed Pin Information
none

Build Information
sdk version: 1.4.0
pico_board: pico
boot2_name: boot2_w25q080
build date: Nov 30 2022
build attributes: MinSizeRel

 

9/ Transférer le fichier ‘firmware.uf2’ dans le Raspberry Pico, comme indiqué dans l’article :

Raspberry Pico : Comment transférer un fichier entre l’ordinateur et le Raspberry Pico

10/ Sous Thonny, dans la fenêtre ‘Shell’, s’affiche la version du micro-logiciel :

 

MicroPython v1.19.1-723-g771c16f3d on 2022-11-30; Raspberry Pi Pico with RP2040
Type "help()" for more information.
>>>

Qui correspond bien à la version qui a été compilé.

Les commentaires sont fermés