Todos los productos
Search
Centro de documentos

IoT Platform:Portar el SDK a ESP8266

Última actualización: Sep 03, 2026

Esta guía explica cómo portar el SDK para C 4.0 a una placa de desarrollo ESP8266 y utilizar una aplicación de demostración para conectarse a Alibaba Cloud IoT Platform.

Preparativos

Para portar el SDK, debe preparar los siguientes elementos:

  • Una placa de desarrollo. La placa utilizada en este tema es la ESP-LAUNCHER, que corresponde a la ESP8266EX_Demo_Board oficial.

  • Un cable USB.

  • Una computadora con Windows, Linux o macOS. Esta guía utiliza macOS como plataforma de desarrollo host.

Nota

Para obtener más información sobre cómo configurar un entorno de desarrollo en otros sistemas operativos, consulte Primeros pasos en

ESP8266_RTOS_SDK

.

Configurar el entorno de desarrollo

Nota

Las siguientes instrucciones para configurar el entorno de desarrollo y verificar que el ESP8266 funciona correctamente son solo de referencia. Si encuentra algún problema, póngase en contacto con el proveedor de su placa de desarrollo.

Para acelerar la configuración del entorno, lea el Readme del ESP8266 RTOS SDK. Los siguientes pasos describen cómo configurar el entorno en macOS:

  1. Install required software

    Ejecute el comando sudo easy_install pip para instalar el sistema pip.

    Ejecute el comando sudo pip install pyserial para instalar el módulo 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

    Ejecute estos comandos para clonar el repositorio oficial de ESP-IDF:

    Una vez completada la descarga, debe ejecutar el comando export IDF_PATH=~/esp/ESP8266_RTOS_SDK para configurar la ruta del IDF SDK.

    Nota
    • release/v3.3fd785ab0c50009ab93503ae785814136f6d1009b Esta demostración utiliza la rama . El ID de commit correspondiente es .

    • Para versiones anteriores a la v3.0 que no utilizan el framework ESP-IDF, puede ajustar el proceso según corresponda para completar la integración.

  3. Install the toolchain and compilation tool

    Descargue manualmente la cadena de herramientas para macOS y extráigala en el directorio ~/esp:

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

    Puede obtener las cadenas de herramientas para otros sistemas operativos en la página de ESP8266_RTOS_SDK en GitHub.

    Configure la ruta del sistema para la cadena de herramientas.

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

    Ejecute el siguiente script para agregar las configuraciones de todas las variables de entorno al archivo $HOME/.bash_profile:

    set_esp8266 ()
    {
        exprot IDF_PATH=$HOME/esp/ESP8266_RTOS_SDK
        export PATH=$PATH: $HOME/esp/xtensa-lx106-elf/bin
    }
  4. Conecte la placa de desarrollo

    Para encontrar el nombre del puerto serial en macOS, ejecute el comando ls /dev/cu.*. El nombre del puerto serial en esta demostración es /dev/cu.usbserial-AH06UHLH.

  5. Configure, compile, flashee y monitoree

    1. cd examples/wifi/simple_wifi/examples/wifi/simple_wifi/ Todas las configuraciones deben realizarse en la ruta del proyecto. Primero, vaya al directorio ejecutando .

    2. En ESP-IDF, ejecute make menuconfig para configurar el proyecto. Para obtener más información, consulte los métodos de portado a continuación.

    3. Una vez completada la configuración, ejecute el comando make all para compilar el firmware.

    4. Después de finalizar la compilación, ejecute el comando make flash para flashear el firmware. Asegúrese de que la placa de desarrollo esté en modo de descarga.

    5. Una vez flasheado el proyecto, ejecute el comando make monitor para monitorear el puerto serial. Asegúrese de que la placa de desarrollo esté en modo de trabajo.

    Ahora ha configurado el entorno de desarrollo de ESP8266 y ha compilado y flasheado correctamente el ejemplo de estación Wi-Fi.

    Nota

    Antes de continuar, asegúrese de que la placa de desarrollo funcione correctamente.

  6. Portar el SDK para C 4.0

    El proceso de portado implica importar el código fuente del SDK, configurar los archivos de la capa de portado del SDK y establecer el sistema de compilación.

    El directorio portfiles del SDK ya contiene el archivo de portado para ESP8266, por lo que solo necesita importar el código fuente del SDK y configurar el sistema de compilación para completar el portado.

    Para comprender mejor el proceso de portado, se recomienda leer la documentación del Sistema de compilación de ESP-IDF. Primero debe familiarizarse con algunos conceptos básicos de ESP-IDF:

    • Project: Un directorio que contiene todos los archivos fuente y de configuración necesarios para compilar su aplicación.

    • components: Piezas modulares de código independiente, compiladas en bibliotecas estáticas y vinculadas a la aplicación. Estos componentes modulares se almacenan en el directorio de ESP-IDF. También puede agregar sus propios componentes personalizados.

    Dado que el sistema de compilación de ESP8266-sdk utiliza GNU make de forma predeterminada, puede agregar el SDK para C a la compilación incluyendo su código y creando un archivo de configuración de compilación .mk correspondiente.

Métodos de portado

Existen dos métodos de portado disponibles:

  • Método 1: Agregar el SDK para C al directorio del proyecto y compilar el código fuente del SDK junto con el código fuente de su aplicación.

  • Método 2: Incorporar el SDK para C en el directorio de componentes de IDF como un componente personalizado de IDF.

Se recomienda utilizar el segundo método. Usar el SDK para C como un componente separado facilita su reutilización en diferentes proyectos y desacopla el código del SDK del código de su aplicación. Realice los siguientes pasos:

  1. Agregar el SDK para C como componente personalizado

    • Get the C Link SDK.

      Nota

      device OS

      FreeRTOS

      Advanced features

      Al personalizar el SDK, puede seleccionar para y dejar los demás parámetros con sus valores predeterminados. Seleccione según sea necesario. Para obtener más información, consulte

      Get C Link SDK

      .

    • Descargue el archivo adjunto posix_port.c, adaptado para ESP8266. Utilice este archivo para reemplazar portfiles/aiot_port/posix_port.c en el C Link SDK.

    • Tanto el C Link SDK como ESP-IDF contienen una biblioteca mbedtls. Para evitar conflictos de bibliotecas, modifique el archivo $IDF_PATH/components/C-SDK/core/sysdep/core_adapter.c y deshabilite la macro CORE_ADAPTER_MBEDTLS_ENABLED.

    • Copie el SDK al directorio $IDF_PATH/components. Luego, cree un archivo de compilación llamado component.mk en el directorio del SDK con el siguiente contenido:

      COMPONENT_ADD_INCLUDEDIRS := core core/sysdep core/utils components/ota
      COMPONENT_SRCDIRS := core core/utils core/sysdep components/ota portfiles/aiot_port/ external
  2. Portar la aplicación de demostración

    Puede modificar el ejemplo en examples/wifi/simple_wifi/ para demostrar la migración a la nube basada en Message Queuing Telemetry Transport (MQTT).

    La demostración nativa muestra cómo acceder a un punto de acceso Wi-Fi específico en modo estación Wi-Fi, lo que permite descargar el archivo fuente del adjunto para sobrescribir el archivo simple_wifi.c.

  3. Configurar, compilar y flashear: configuración de mbedTLS

    Ejecute el comando make menuconfig en el directorio del proyecto examples/wifi/simple_wifi/ para configurar el proyecto.

    1. En el menú SDK tool configuration, asegúrese de que Compiler toolchain path/prefix esté establecido en xtensa-lx106-elf-.

    2. En el menú Serial flasher config, cambie el nombre predeterminado del puerto serial de la placa de desarrollo ESP8266.

    3. En el menú Example Configuration, seleccione el modo Station y configure los parámetros WiFi SSID, WiFi Password y Maximum retry.

    4. Elija Component config > ESP8266-specific. En la página que aparece, establezca Main task stack size en 4096, guarde la modificación y salga.

    Para utilizar una clave precompartida (PSK) como método de intercambio de claves TLS, siga estos pasos:

    1. Elija Component config > mbedTLS. En la página que aparece, haga clic en TLS Key Exchange Methods.

    2. Active el interruptor Enable pre-shared-key ciphersuites.

    3. Agregue CFLAGS += -DMBEDTLS_PSK_MAX_LEN=64 al archivo component.mk del componente mbedtls.

    La siguiente información especifica las configuraciones:

    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

    Una vez completada la configuración, ejecute make all y make flash para compilar y flashear.

  4. Ejecutar la aplicación y ver registros: Registros

    Ejecute make monitor para abrir el monitor del puerto serial. Reinicie el dispositivo para ver los siguientes registros:

    ......
    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
    ......
    • El mensaje I (2342) simple wifi: Start linkkit main en la demostración indica que el SDK para C se ha iniciado.

    • El SDK para C genera registros que contienen [LK-XXXX]. El mensaje [2.450][LK-0313] MQTT connect success in 460 ms indica una conexión MQTT exitosa y muestra el tiempo que tomó conectarse.