164 lines
6.7 KiB
ReStructuredText
164 lines
6.7 KiB
ReStructuredText
..
|
|
Copyright (C) 2023 Jeremie Salvi.
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.3
|
|
or any later version published by the Free Software Foundation;
|
|
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
|
A copy of the license is included in the section entitled "GNU
|
|
Free Documentation License".
|
|
|
|
Installation de l'environnement sous ArchLinux
|
|
==============================================
|
|
|
|
Introduction
|
|
------------
|
|
|
|
Tout d'abord je tiens à vous rassurer, cela doit fonctionner sur la majorité des distributions.
|
|
Je vais utiliser vscodium (fork de visual studio code sans la télémétrie microsoft),
|
|
un framework basé sur electron, donc compatible multi OS et multi distributions.
|
|
L'emulateur basé sur QEMU sera compilé à la main, donc ça devrait passer sur n'importe quel linux 😊.
|
|
|
|
.. warning:: Je suis passé en root pour ne pas m'encombrer avec ``sudo``, pensez y si nécessaire
|
|
|
|
Pour plus d'infos en général, allez faire un tour sur `La documentation officielle de l'esp 32 <https://docs.espressif.com/projects/esp-idf/en/latest/esp32/>`_
|
|
|
|
Installation de vscodium
|
|
------------------------
|
|
|
|
Vscodium n'est pas disponible dans les paquets officiels ArchLinux, il faut donc aller sur les ArchLinux User Repositories (AUR.)
|
|
|
|
`Dépot AUR des binaires vscodium <https://aur.archlinux.org/packages/vscodium-bin>`_
|
|
|
|
.. code-block:: bash
|
|
:linenos:
|
|
:caption: installation de vscodium
|
|
|
|
cd /opt
|
|
git clone https://aur.archlinux.org/vscodium-bin.git
|
|
cd vscodium-bin/
|
|
makepkg
|
|
pacman -U vscodium-bin-1.72.2.22289-1-x86_64.pkg.tar.zst
|
|
|
|
.. warning:: Si vous êtes en root pour programmer, il faut utiliser les arguments suivants pour
|
|
lancer vscodium : ``codium --no-sandbox --user-data-dir ~/.config/vscodium``
|
|
|
|
Pour le confort de développement, nous allons installer une extension pour améliorer
|
|
l'autocompletion en C/C++. Elle n'est pas disponible sur le marketplace vscodium, il faut l'installer
|
|
manuellement. On la télécharge `ici <https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools>`_.
|
|
|
|
On l'installe depuis le menu des extensions comme ci dessous.
|
|
|
|
.. image:: ../images/esp32/ms_cpp_extension.png
|
|
:width: 400
|
|
|
|
Nous allons aussi utiliser l'extension native debug pour l'intégration du debugeur.
|
|
Elle se trouve dans le store. Pour l'utilistation, on verra ça dans la partie
|
|
`création d'un environnement vscodium </esp32/vscode_integration.html#configurer-le-debugeur>`_.
|
|
|
|
.. image:: ../images/esp32/native_debug_extension.png
|
|
:width: 400
|
|
|
|
Installation des prérequis pour l'esp-idf (Espressif IoT Development Framework)
|
|
-------------------------------------------------------------------------------
|
|
|
|
La commande est directement fournie dans la documentation, il suffit de la copier coller :
|
|
|
|
.. code-block:: bash
|
|
|
|
pacman -S --needed gcc git make flex bison gperf python cmake ninja dfu-util ccache libusb
|
|
|
|
Installation et configuration de l'esp-idf
|
|
------------------------------------------
|
|
|
|
Dans un premier temps, on récupère les dépots :
|
|
|
|
.. code-block:: bash
|
|
:linenos:
|
|
|
|
mkdir -p /opt/esp
|
|
cd /opt/esp
|
|
git clone --recursive https://github.com/espressif/esp-idf.git
|
|
|
|
Il faut ensuite installer les outils. Par defaut ils sont installés dans ``$HOME/.espressif``.
|
|
On peut changer cet emplacement grâce à la variable d'environnement ``IDF_TOOLS_PATH``.
|
|
|
|
.. code-block:: bash
|
|
:linenos:
|
|
|
|
export IDF_TOOLS_PATH=/opt/esp/esp-idf/.espressif
|
|
cd esp-idf
|
|
./install.sh esp32
|
|
|
|
L'environnement utilise un paquets d'outils, il est dur de mémoriser tout
|
|
les chemins et les variables d'environnement. Heureusement on nous fournit aussi un sctipt
|
|
qui rend tout ça accessible depuis la console. Pour ça il faut le charger :
|
|
|
|
.. code-block:: bash
|
|
|
|
. /opt/esp/esp-idf/export.sh
|
|
|
|
Comme il faut l'appeller dans chaque nouveau terminal, on
|
|
se créer un alias pour faciliter l'accès :
|
|
|
|
.. code-block:: bash
|
|
|
|
alias esp_idf_import=". /opt/esp/esp-idf/export.sh"
|
|
|
|
On colle cette ligne dans notre .bashrc ou notre .profile. Pour vérifier qu'on
|
|
a bien tout importé, on tappe la commande env, et on devrait avoir les infos
|
|
suivantes :
|
|
|
|
.. code-block:: bash
|
|
:linenos:
|
|
|
|
env
|
|
>> ESP_IDF_VERSION="5.1"
|
|
>> ESP_ROM_ELF_DIR="/opt/esp/esp-idf/.espressif/tools/esp-rom-elfs/20220823/"
|
|
>> IDF_DEACTIVATE_FILE_PATH="/tmp/tmpxj9n6nndidf_46523"
|
|
>> IDF_PATH="/opt/esp/esp-idf"
|
|
>> IDF_PYTHON_ENV_PATH="/opt/esp/esp-idf/.espressif/python_env/idf5.1_py3.10_env"
|
|
>> IDF_TOOLS_EXPORT_CMD="/opt/esp/esp-idf/export.sh"
|
|
>> IDF_TOOLS_INSTALL_CMD="/opt/esp/esp-idf/install.sh"
|
|
>> IDF_TOOLS_PATH="/opt/esp/esp-idf/.espressif"
|
|
>> OPENOCD_SCRIPTS="/opt/esp/esp-idf/.espressif/tools/openocd-esp32/v0.11.0-esp32-20221026/openocd-esp32/share/openocd/scripts"
|
|
>> PATH="/opt/esp/esp-idf/components/esptool_py/esptool:/opt/esp/esp-idf/components/espcoredump:/opt/esp/esp-idf/components/partition_table:/opt/esp/esp-idf/components/app_update:/opt/esp/esp-idf/.espressif/tools/xtensa-esp-elf-gdb/12.1_20221002/xtensa-esp-elf-gdb/bin:/opt/esp/esp-idf/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin:/opt/esp/esp-idf/.espressif/tools/esp32ulp-elf/2.35_20220830/esp32ulp-elf/bin:/opt/esp/esp-idf/.espressif/tools/openocd-esp32/v0.11.0-esp32-20221026/openocd-esp32/bin:/opt/esp/esp-idf/.espressif/python_env/idf5.1_py3.10_env/bin:/opt/esp/esp-idf/tools:/usr/local/sbin:/usr/local/bin:/usr/bin"
|
|
|
|
Si l'on à pas les chemins ``/opt/esp/esp-idf`` dans le path et les variables d'environnement ``IDF_``, les outils fournis
|
|
dans l'ESP-IDF ne fonctionneront tout simplement pas.
|
|
|
|
Compilation de qemu-system-xtensa patché pour les esp32
|
|
-------------------------------------------------------
|
|
|
|
Espressif, l'entreprise qui concoit les ESP32, nous fournit un fork de QEMU modifié pour emmuler celui ci.
|
|
On le trouve à l'addresse suivante : `GitHub du fork QEMU <https://github.com/espressif/qemu>`_.
|
|
Toute la procédure est expliquée ici : `Wiki du dépot <https://github.com/espressif/qemu>`_.
|
|
|
|
Je ne vais pas tout réexpliquer ici, ce qu'il faut savoir c'est que nous ne voulons pas
|
|
recompiler tout qemu, juste le binaire qemu-system-xtensa modifié pour esp32. Je vais donc
|
|
refaire la compilation en désactivant un maximum de fonctionnalités inutiles. On trouve la
|
|
liste des fonctionnalités dans le fichier ``configure`` du dépot.
|
|
|
|
.. code-block:: bash
|
|
:linenos:
|
|
:caption: compilation de QEMU pour esp32
|
|
|
|
#!/bin/bash
|
|
cd /opt
|
|
git clone https://github.com/espressif/qemu.git
|
|
cd qemu
|
|
./configure --target-list=xtensa-softmmu \
|
|
--enable-gcrypt \
|
|
--enable-debug --enable-sanitizers \
|
|
--disable-strip --disable-user \
|
|
--disable-capstone --disable-vnc \
|
|
--disable-sdl --disable-gtk \
|
|
--disable-opengl --disable-vfio-user-server
|
|
ninja -C build
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|