Tous les produits
Search
Centre de documentation

IoT Platform:Portage du SDK vers l'ESP8266

Dernière mise à jour :Aug 10, 2026

Ce guide explique comment porter le SDK C 4.0 sur une carte de développement ESP8266 et utiliser une application de démonstration pour se connecter à Alibaba Cloud IoT Platform.

Préparatifs

Pour porter le SDK, préparez les éléments suivants :

  • Une carte de développement. La carte utilisée dans cette rubrique est l'ESP-LAUNCHER, qui correspond à la carte officielle ESP8266EX_Demo_Board.

  • Un câble USB.

  • Un ordinateur exécutant Windows, Linux ou macOS. Ce guide utilise macOS comme plateforme de développement hôte.

Remarque

Pour plus d'informations sur la configuration d'un environnement de développement sous d'autres systèmes d'exploitation, consultez la section Get started de

ESP8266_RTOS_SDK

.

Configuration de l'environnement de développement

Remarque

Les instructions suivantes relatives à la configuration de l'environnement de développement et à la vérification du bon fonctionnement de l'ESP8266 sont fournies à titre indicatif. Si vous rencontrez des problèmes, contactez le fournisseur de votre carte de développement.

Pour accélérer la configuration de l'environnement, lisez le fichier ESP8266 RTOS SDK Readme. Les étapes ci-dessous décrivent la configuration de l'environnement sous macOS :

  1. Install required software

    Exécutez la commande sudo easy_install pip pour installer pip.

    Exécutez la commande sudo pip install pyserial pour installer le module pySerial.

  2. Clone the official ESP-IDF repository

    cd ~
    mkdir esp && cd esp
    git clone https://github.com/espressif/ESP8266_RTOS_SDK.git -b release/v3.3

    Exécutez ces commandes pour cloner le dépôt officiel ESP-IDF :

    Une fois le téléchargement terminé, exécutez la commande export IDF_PATH=~/esp/ESP8266_RTOS_SDK pour configurer le chemin du SDK IDF.

    Remarque
    • Cette démonstration utilise la branche release/v3.3. L'ID de commit correspondant est fd785ab0c50009ab93503ae785814136f6d1009b.

    • Pour les versions antérieures à la v3.0 qui n'utilisent pas le framework ESP-IDF, adaptez le processus en conséquence pour finaliser l'intégration.

  3. Install the toolchain and compilation tool

    Téléchargez manuellement la chaîne d'outils pour macOS, puis extrayez-la dans le répertoire ~/esp :

    mkdir -p ~/esp
    cd ~/esp
    tar -xzf ~/Downloads/xtensa-lx106-elf-macos-1.22.0-100-ge567ec7-5.2.0.tar.gz

    Vous pouvez obtenir les chaînes d'outils pour d'autres systèmes d'exploitation sur la page ESP8266_RTOS_SDK sur GitHub.

    Configurez le chemin système pour la chaîne d'outils.

    export PATH=$PATH:$HOME/esp/xtensa-lx106-elf/bin

    Exécutez le script suivant pour ajouter les configurations de toutes les variables d'environnement au fichier $HOME/.bash_profile :

    set_esp8266 ()
    {
        exprot IDF_PATH=$HOME/esp/ESP8266_RTOS_SDK
        export PATH=$PATH: $HOME/esp/xtensa-lx106-elf/bin
    }
  4. Connectez la carte de développement

    Pour identifier le nom du port série sous macOS, exécutez la commande ls /dev/cu.*. Dans cette démonstration, le nom du port série est /dev/cu.usbserial-AH06UHLH.

  5. Configurez, compilez, flashez et surveillez

    1. Accédez au répertoire examples/wifi/simple_wifi/ en exécutant cd examples/wifi/simple_wifi/. Effectuez toutes les configurations dans le chemin du projet.

    2. Dans ESP-IDF, exécutez make menuconfig pour configurer le projet. Pour plus d'informations, reportez-vous aux méthodes de portage décrites ci-dessous.

    3. Une fois la configuration terminée, exécutez la commande make all pour compiler le firmware.

    4. Après la compilation, exécutez la commande make flash pour flasher le firmware. Assurez-vous que la carte de développement est en mode téléchargement.

    5. Une fois le projet flashé, exécutez la commande make monitor pour surveiller le port série. Vérifiez que la carte de développement est en mode de fonctionnement.

    Vous avez désormais configuré l'environnement de développement ESP8266, compilé avec succès l'exemple de station Wi-Fi et flashé la carte.

    Remarque

    Avant de poursuivre, assurez-vous que la carte de développement fonctionne correctement.

  6. Portez le SDK C 4.0

    Le processus de portage implique l'importation du code source du SDK, la configuration des fichiers de la couche de portage du SDK et la mise en place du système de build.

    Le répertoire portfiles du SDK contient déjà le fichier de portage pour l'ESP8266. Il vous suffit donc d'importer le code source du SDK et de configurer le système de build pour finaliser le portage.

    Pour mieux comprendre le processus de portage, nous vous recommandons de lire la documentation ESP-IDF relative au Build System. Familiarisez-vous d'abord avec quelques concepts de base d'ESP-IDF :

    • Project : un répertoire contenant tous les fichiers source et de configuration nécessaires à la construction de votre application.

    • components : modules de code autonomes, compilés en bibliothèques statiques et liés à l'application. Ces composants modulaires sont stockés dans le répertoire ESP-IDF. Vous pouvez également ajouter vos propres composants personnalisés.

    Étant donné que le système de build esp8266-sdk utilise GNU make par défaut, vous pouvez ajouter le SDK C au build en incluant son code et en créant un fichier de configuration de build .mk correspondant.

Méthodes de portage

Deux méthodes de portage sont disponibles :

  • Méthode 1 : ajoutez le SDK C au répertoire du projet et compilez le code source du SDK conjointement avec le code source de votre application.

  • Méthode 2 : intégrez le SDK C dans le répertoire des composants d'IDF en tant que composant IDF personnalisé.

Nous vous recommandons d'utiliser la seconde méthode. L'utilisation du SDK C en tant que composant distinct facilite sa réutilisation dans différents projets et découple le code du SDK de celui de votre application. Procédez comme suit :

  1. Ajoutez le SDK C en tant que composant personnalisé

    • Obtenir le SDK de liaison C.

      Remarque

      Lorsque vous personnalisez le SDK, vous pouvez sélectionner FreeRTOS pour le device OS et laisser les autres paramètres par défaut. Sélectionnez Advanced features selon vos besoins. Pour plus d'informations, consultez

      Obtenir le SDK de liaison C

      .

    • Téléchargez le fichier joint posix_port.c, adapté à l'ESP8266. Utilisez ce fichier pour remplacer portfiles/aiot_port/posix_port.c dans le SDK de liaison C.

    • Le SDK de liaison C et ESP-IDF contiennent tous deux une bibliothèque mbedtls. Pour éviter les conflits de bibliothèques, modifiez le fichier $IDF_PATH/components/C-SDK/core/sysdep/core_adapter.c et désactivez la macro CORE_ADAPTER_MBEDTLS_ENABLED.

    • Copiez le SDK dans le répertoire $IDF_PATH/components. Ensuite, créez un fichier de build nommé component.mk dans le répertoire du SDK avec le contenu suivant :

      COMPONENT_ADD_INCLUDEDIRS := core core/sysdep core/utils components/ota
      COMPONENT_SRCDIRS := core core/utils core/sysdep components/ota portfiles/aiot_port/ external
  2. Portez l'application de démonstration

    Vous pouvez modifier l'exemple situé dans examples/wifi/simple_wifi/ pour illustrer la migration vers le cloud basée sur MQTT (Message Queuing Telemetry Transport).

    La démonstration native montre comment accéder à un point d'accès Wi-Fi spécifique en mode station Wi-Fi. Vous pouvez télécharger le fichier source de la pièce jointe pour écraser le fichier simple_wifi.c.

  3. Configuration mbedTLS : configurez, compilez et flashez

    Exécutez la commande make menuconfig dans le répertoire du projet examples/wifi/simple_wifi/ pour configurer le projet.

    1. Dans le menu SDK tool configuration, assurez-vous que Compiler toolchain path/prefix est défini sur xtensa-lx106-elf-.

    2. Dans le menu Serial flasher config, modifiez le nom du port série par défaut de la carte de développement ESP8266.

    3. Dans le menu Example Configuration, sélectionnez le mode Station et configurez les paramètres WiFi SSID, WiFi Password et Maximum retry.

    4. Choisissez Component config > ESP8266-specific. Sur la page qui s'affiche, définissez Main task stack size sur 4096, enregistrez la modification, puis quittez.

    Pour utiliser une clé pré-partagée (PSK) comme méthode d'échange de clés TLS, suivez ces étapes :

    1. Choisissez Component config > mbedTLS. Sur la page qui s'affiche, cliquez sur TLS Key Exchange Methods.

    2. Activez l'option Enable pre-shared-key ciphersuites.

    3. Ajoutez CFLAGS += -DMBEDTLS_PSK_MAX_LEN=64 au fichier component.mk du composant mbedtls.

    Les informations suivantes spécifient les configurations :

    COMPONENT_ADD_INCLUDEDIRS := port/include mbedtls/include port/esp8266/include
    COMPONENT_SRCDIRS := mbedtls/library port port/esp8266
    COMPONENT_OBJEXCLUDE := mbedtls/library/net_sockets.o
    COMPONENT_SUBMODULES += mbedtls
    CFLAGS += -DMBEDTLS_PSK_MAX_LEN=64

    Une fois la configuration terminée, exécutez make all et make flash pour compiler et flasher.

  4. Exécutez l'application et affichez les journaux

    Exécutez make monitor pour ouvrir le moniteur de port série. Redémarrez l'appareil pour afficher les journaux suivants :

    ......
    I (274) esp_image: segment 1: paddr=0x00073818 vaddr=0x40273810 size=0x0e5fc ( 58876) map
    I (300) esp_image: segment 2: paddr=0x00081e1c vaddr=0x3ffe8000 size=0x00a3c (  2620) load
    I (301) esp_image: segment 3: paddr=0x00082860 vaddr=0x40100000 size=0x00a50 (  2640) load
    I (308) esp_image: segment 4: paddr=0x000832b8 vaddr=0x40100a50 size=0x05854 ( 22612) load
    I (325) boot: Loaded app from partition at offset 0x10000
    I (349) system_api: Base MAC address is not set, read default base MAC address from EFUSE
    I (359) system_api: Base MAC address is not set, read default base MAC address from EFUSE
    phy_version: 1155.0, 6cb3053, Nov 11 2019, 17:31:08, RTOS new
    I (413) phy_init: phy ver: 1155_0
    I (418) reset_reason: RTC reset 1 wakeup 0 store 0, reason is 1
    I (425) simple wifi: ESP_WIFI_MODE_STA
    I (473) simple wifi: wifi_init_sta finished.
    I (479) simple wifi: connect to ap SSID:C_SDK_Test password:1234abcd
    I (614) wifi: state: 0 -> 2 (b0)
    I (659) wifi: state: 2 -> 3 (0)
    I (671) wifi: state: 3 -> 5 (10)
    I (676) wifi: pm start, type: 2
    I (2320) event: sta ip: 192.168.0.101, mask: 255.255.255.0, gw: 192.168.0.1
    I (2329) simple wifi: got ip:192.168.0.101
    I (2334) simple wifi: connected to ap SSID:C_SDK_Test password:1234abcd
    I (2342) simple wifi: Start linkkit main
    [1.990][LK-0313] MQTT user calls aiot_mqtt_connect api, connect
    [2.000][LK-0317] mqtt_basic_demo&a13FNXXXXXX
    [2.000][LK-0318] 4780A5F17990D8DC4CCAD392683ED80160C4C2A1FFA649425CD0E2666A8593EB
    [2.010][LK-0319] a13FNXXXXXX.mqtt_basic_demo|timestamp=2524608000000,_ss=1,_v=sdk-c-4.0.0,securemode=2,signmethod=hmacsha256,ext=1,|
    [2.020][LK-031A] devicename|hmacsha256|a13FNXXXXXX&mqtt_basic_demo|2524608000000
    [2.020][LK-031A] 3A27B38E1BAB95462F8EA659C15EE26319286EB1CB7B372451EE82A30A9E7FDF
    establish mbedtls connection with server(host='a13FNXXXXXX.itls.cn-shanghai.aliyuncs.com', port=[1883])
    [2.450][LK-0313] MQTT connect success in 460 ms
    AIOT_MQTTEVT_CONNECT
    [2.450][LK-0309] sub: /sys/a13FNXXXXXX/mqtt_basic_demo/thing/event/+/post_reply
    [2.460][LK-0309] pub: /sys/a13FNXXXXXX/mqtt_basic_demo/thing/event/property/post
    [LK-030A] > 7B 22 69 64 22 3A 22 31  22 2C 22 76 65 72 73 69 | {"id":"1","versi
    [LK-030A] > 6F 6E 22 3A 22 31 2E 30  22 2C 22 70 61 72 61 6D | on":"1.0","param
    [LK-030A] > 73 22 3A 7B 22 4C 69 67  68 74 53 77 69 74 63 68 | s":{"LightSwitch
    [LK-030A] > 22 3A 30 7D 7D                                   | ":0}}
    suback, res: -0x0000, packet id: 1, max qos: 1
    [2.530][LK-0309] pub: /sys/a13FNXXXXXX/mqtt_basic_demo/thing/event/property/post_reply
    [LK-030A] < 7B 22 63 6F 64 65 22 3A  32 30 30 2C 22 64 61 74 | {"code":200,"dat
    [LK-030A] < 61 22 3A 7B 7D 2C 22 69  64 22 3A 22 31 22 2C 22 | a":{},"id":"1","
    [LK-030A] < 6D 65 73 73 61 67 65 22  3A 22 73 75 63 63 65 73 | message":"succes
    [LK-030A] < 73 22 2C 22 6D 65 74 68  6F 64 22 3A 22 74 68 69 | s","method":"thi
    [LK-030A] < 6E 67 2E 65 76 65 6E 74  2E 70 72 6F 70 65 72 74 | ng.event.propert
    [LK-030A] < 79 2E 70 6F 73 74 22 2C  22 76 65 72 73 69 6F 6E | y.post","version
    [LK-030A] < 22 3A 22 31 2E 30 22 7D                          | ":"1.0"}
    pub, qos: 0, topic: /sys/a13FNXXXXXX/mqtt_basic_demo/thing/event/property/post_reply
    pub, payload: {"code":200,"data":{},"id":"1","message":"success","method":"thing.event.property.post","version":"1.0"}
    heartbeat response
    heartbeat response
    heartbeat response
    ......
    • Le message I (2342) simple wifi: Start linkkit main dans la démonstration indique que le SDK C a démarré.

    • Le SDK C génère des journaux contenant [LK-XXXX]. Le message [2.450][LK-0313] MQTT connect success in 460 ms indique une connexion MQTT réussie et affiche le temps nécessaire à la connexion.