Restart repo
This commit is contained in:
163
esp32/installation.rst
Normal file
163
esp32/installation.rst
Normal file
@@ -0,0 +1,163 @@
|
||||
..
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user