全部产品
Search
文档中心

IoT Platform:Port SDK ke ESP8266

更新时间:Jun 21, 2025

Tema ini menjelaskan cara memporting SDK untuk C 4.0 ke papan pengembangan ESP8266 dan menggunakan demo untuk terhubung ke Alibaba Cloud IoT Platform.

Persiapan

Untuk memporting SDK, Anda perlu menyiapkan item berikut:

  • Papan pengembangan. Papan yang digunakan dalam topik ini adalah ESP-LAUNCHER, yaitu papan demo resmi ESP8266EX_Demo_Board.
  • Kabel USB.
  • Komputer dengan sistem operasi Windows, Linux, atau macOS. Sistem operasi utama untuk pengembangan adalah macOS.
null Untuk informasi lebih lanjut tentang cara menyiapkan lingkungan pengembangan di sistem operasi lainnya, lihat Memulai di ESP8266_RTOS_SDK.

Menyiapkan lingkungan pengembangan

Disarankan untuk membaca ESP8266 RTOS Software Development Kit terlebih dahulu untuk mempercepat penyiapan lingkungan pengembangan. Ikuti langkah-langkah berikut untuk menyiapkan lingkungan macOS:

  1. Install required software

    Jalankan perintah sudo easy_install pip untuk menginstal sistem pip.

    Jalankan perintah sudo pip install pyserial untuk menginstal modul pySerial.

  2. Clone the ESP-IDF official repository
    cd ~
    mkdir esp && cd esp
    git clone git@github.com:espressif/ESP8266_RTOS_SDK.git -b release/v3.3

    Setelah selesai mengunduh, jalankan skrip export IDF_PATH=~/esp/ESP8266_RTOS_SDK untuk mengonfigurasi jalur SDK IoT Development Framework (IDF).

    null
    • Demo ini menggunakan cabang release/v3.3, dengan ID commit fd785ab0c50009ab93503ae785814136f6d1009b.
    • Espressif IoT Development Framework (ESP-IDF) telah digunakan di ESP8266_RTOS_SDK V3.0 dan versi setelahnya. Anda dapat memodifikasi ESP8266_RTOS_SDK dari versi sebelum V3.0 dan menggunakannya sesuai panduan ini.
  3. Install the toolchain and compilation tool

    Unduh secara manual paket toolchain macOS dan dekompres ke direktori .

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

    Toolchain untuk sistem operasi lainnya tersedia di halaman ESP8266_RTOS_SDK di GitHub.

    Konfigurasikan jalur sistem untuk toolchain.

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

    Jalankan skrip berikut untuk menambahkan konfigurasi semua variabel lingkungan ke file :

    set_esp8266 ()
    {
        exprot IDF_PATH=$HOME/esp/ESP8266_RTOS_SDK
        export PATH=$PATH: $HOME/esp/xtensa-lx106-elf/bin
    }
  4. Connect to the development board
    • Instal driver USB. Driver port serial yang diperlukan oleh driver USB ESP-LAUNCHER dapat diperoleh dari FTDI.
    • Dapatkan nama port serial. Jalankan perintah ls /dev/cu.* untuk menanyakan nama port pada macOS. Nama port serial dalam demo ini adalah /dev/cu.usbserial-AH06UHLH.
  5. Configure, compile, and flash the project, and monitor the serial port
    1. Semua konfigurasi harus dilakukan di jalur proyek. Pertama-tama, jalankan skrip cd examples/wifi/simple_wifi/ untuk masuk ke direktori examples/wifi/simple_wifi/.
    2. Di ESP-IDF, jalankan make menuconfig untuk mengonfigurasi proyek. Untuk informasi lebih lanjut, lihat metode porting berikut.
    3. Setelah konfigurasi selesai, jalankan perintah make all untuk mengompilasi firmware.
    4. Setelah kompilasi selesai, jalankan perintah make flash untuk mem-flash firmware. Pastikan papan pengembangan berada dalam mode unduhan.
    5. Setelah proyek di-flash, jalankan perintah make monitor untuk memantau port serial. Pastikan papan pengembangan berada dalam mode kerja.

    Sekarang, Anda telah menyiapkan lingkungan pengembangan ESP8266 dan mengompilasi serta mem-flash demo stasiun wifi.

  6. Port SDK for C 4.0

    Proses memporting SDK untuk C 4.0 mencakup impor kode SDK dan konfigurasi file port SDK serta sistem kompilasi.

    Direktori portfiles dari SDK berisi portfile untuk ESP8266. Oleh karena itu, Anda hanya perlu mengimpor kode sumber SDK dan mengonfigurasi sistem kompilasi untuk menyelesaikan porting SDK.

    Disarankan untuk membaca Build System dari IDF untuk mempelajari proses porting. Anda harus memahami istilah berikut tentang IDF:

    • project: Ini adalah direktori yang berisi semua file sumber dan file konfigurasi yang digunakan untuk membangun aplikasi.
    • components: Mereka adalah bagian modular dari kode mandiri, yang dikompilasi menjadi pustaka statis .a dan ditautkan ke aplikasi. Komponen modular ini disimpan di direktori komponen IDF. Anda dapat menambahkan komponen kustom.

    Secara default, sistem kompilasi SDK ESP8266 menggunakan GNU Make. Anda hanya perlu mengimpor kode C SDK dan menulis file konfigurasi .mk yang sesuai untuk mengompilasi SDK untuk C.

Porting methods

Berikut dua metode porting yang tersedia:

  • Metode 1: Impor SDK untuk C ke direktori proyek dan kompilasi kode sumber SDK bersama dengan kode sumber aplikasi Anda.
  • Metode 2: Perkenalkan SDK untuk C ke direktori komponen IDF sebagai komponen IDF kustom.

Disarankan untuk menggunakan metode kedua. Menggunakan SDK untuk C sebagai komponen terpisah membantu Anda menggunakan ulang di berbagai proyek dan memisahkan kode SDK dari kode aplikasi Anda. Ikuti langkah-langkah berikut:

  1. Add the SDK for C as a custom component

    Unduh SDK untuk C 4.0, salin SDK ke direktori $IDF_PATH/components, dan tambahkan file component.mk ke direktori SDK tersebut.

    COMPONENT_ADD_INCLUDEDIRS := core core/sysdep core/utils components/ota
    
    COMPONENT_SRCDIRS := core core/utils core/sysdep components/ota portfiles/freertos_port/ external
    null

    File freertos_port.c di direktori komponen portfiles/freertos_port adalah file porting SDK untuk ESP-IDF. File ini mengintegrasikan SDK untuk C dengan ESP-IDF dan mbedtls.

  2. Port the demo program

    Anda dapat memodifikasi contoh di examples/wifi/simple_wifi/ untuk mendemonstrasikan migrasi cloud berbasis Message Queuing Telemetry Transport (MQTT).

    Demo asli menunjukkan cara mengakses hotspot Wi-Fi tertentu dalam mode stasiun wifi. Anda dapat mengunduh file sumber dari lampiran untuk menimpa file simple_wifi.c.

  3. Configure, compile, and flash the project

    Jalankan perintah make menuconfig di direktori proyek examples/wifi/simple_wifi/ untuk mengonfigurasi proyek.

    1. Di menu SDK tool configuration, pastikan bahwa Compiler toolchain path/prefix diatur ke xtensa-lx106-elf-.
    2. Di menu Serial flasher config, ubah nama port serial default papan pengembangan ESP8266.
    3. Di menu Example Configuration, pilih mode Station, dan konfigurasikan WiFi SSID, WiFi Password, dan parameter Maximum retry.
    4. Pilih Component config > ESP8266-specific. Di halaman yang muncul, atur Main task stack size ke 4096, simpan modifikasi, lalu keluar.

    mbedtls configuration:

    Untuk menggunakan PSK sebagai metode pertukaran kunci TLS, Anda harus melakukan operasi berikut:

    1. Pilih Component config > mbedTLS. Di halaman yang muncul, klik TLS Key Exchange Methods.
    2. Nyalakan saklar Enable pre-shared-key ciphersuites.
    3. Tambahkan CFLAGS += -DMBEDTLS_PSK_MAX_LEN=64 ke file component.mk komponen mbedtls.

    Informasi berikut menentukan konfigurasi:

    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

    Setelah konfigurasi selesai, jalankan perintah make all dan make flash untuk menyelesaikan kompilasi dan flashing.

  4. View logs

    Jalankan perintah make monitor untuk memulai pemantauan port serial, lalu mulai ulang perangkat untuk melihat log berikut:

    ......
    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
    ......

    Log description:

    • I (2342) simple wifi: Start linkkit main adalah informasi log yang ditambahkan ke demo untuk mengidentifikasi bahwa SDK untuk C mulai bekerja.
    • Log yang berisi [LK-XXXX] disediakan oleh SDK untuk C. Dalam log tersebut, [2.450][LK-0313] MQTT connect success in 460 ms menunjukkan bahwa koneksi MQTT telah dibuat, dan mencakup waktu yang dikonsumsi.