All Products
Search
Document Center

IoT Platform:Port SDK ke ESP8266

Last Updated:Jun 21, 2026

Panduan ini menjelaskan cara melakukan porting SDK C 4.0 ke papan pengembangan ESP8266 dan menggunakan aplikasi demo untuk terhubung ke Alibaba Cloud IoT Platform.

Persiapan

Untuk melakukan porting SDK, Anda harus menyiapkan hal-hal berikut:

  • Papan pengembangan. Papan yang digunakan dalam topik ini adalah ESP-LAUNCHER, yaitu ESP8266EX_Demo_Board resmi.
  • Kabel USB.
  • Komputer yang menjalankan Windows, Linux, atau macOS. Panduan ini menggunakan macOS sebagai platform pengembangan host.
Catatan Untuk informasi lebih lanjut tentang cara menyiapkan lingkungan pengembangan pada sistem operasi lain, lihat Get started di ESP8266_RTOS_SDK.

Siapkan lingkungan pengembangan

Catatan Instruksi berikut untuk menyiapkan lingkungan pengembangan dan memverifikasi bahwa ESP8266 berfungsi sebagaimana mestinya hanya bersifat referensi. Jika Anda mengalami masalah, hubungi pemasok papan pengembangan Anda.

Untuk mempercepat penyiapan lingkungan, baca ESP8266 RTOS SDK Readme. Langkah-langkah berikut menjelaskan cara menyiapkan lingkungan di 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 official ESP-IDF repository
    cd ~
    mkdir esp && cd esp
    git clone https://github.com/espressif/ESP8266_RTOS_SDK.git -b release/v3.3

    Setelah unduhan selesai, jalankan perintah export IDF_PATH=~/esp/ESP8266_RTOS_SDK untuk mengonfigurasi path SDK IDF.

    Catatan
    • release/v3.3fd785ab0c50009ab93503ae785814136f6d1009bDemonstrasi ini menggunakan branch yang tercantum, lengkap dengan ID commit-nya.
    • Untuk versi sebelum v3.0 yang tidak menggunakan framework ESP-IDF, Anda dapat menyesuaikan prosesnya agar integrasi dapat diselesaikan.
  3. Install the toolchain and compilation tool

    Unduh rantai alat macOS secara manual, lalu ekstrak ke direktori ~/esp:

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

    Anda dapat memperoleh toolchain untuk sistem operasi lain di halaman ESP8266_RTOS_SDK di GitHub.

    Konfigurasikan path sistem untuk toolchain.

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

    Jalankan skrip berikut untuk menambahkan konfigurasi semua variabel lingkungan ke file $HOME/.bash_profile:

    set_esp8266 ()
    {
        exprot IDF_PATH=$HOME/esp/ESP8266_RTOS_SDK
        export PATH=$PATH: $HOME/esp/xtensa-lx106-elf/bin
    }
  4. Hubungkan papan pengembangan

    Untuk menemukan nama port serial di macOS, jalankan perintah ls /dev/cu.*. Nama port serial dalam demonstrasi ini adalah /dev/cu.usbserial-AH06UHLH.

  5. Konfigurasi, kompilasi, flash, dan monitor

    1. cd examples/wifi/simple_wifi/examples/wifi/simple_wifi/. Semua konfigurasi harus dilakukan di jalur proyek. Pertama, masuk ke direktori tersebut dengan menjalankan perintah di atas.
    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 melakukan flashing firmware. Pastikan papan pengembangan berada dalam mode download.
    5. Setelah proyek di-flash, jalankan perintah make monitor untuk memantau port serial. Pastikan papan pengembangan berada dalam mode kerja.

    Anda kini telah menyiapkan lingkungan pengembangan ESP8266 dan berhasil mengompilasi serta melakukan flashing contoh Wi-Fi station.

    Catatan Sebelum melanjutkan, pastikan papan pengembangan berfungsi dengan benar.
  6. Port SDK C 4.0

    Proses porting melibatkan impor kode sumber SDK, konfigurasi file layer porting SDK, dan penyiapan sistem build.

    Direktori portfiles SDK sudah berisi file port untuk ESP8266, sehingga Anda hanya perlu mengimpor kode sumber SDK dan mengonfigurasi sistem build untuk menyelesaikan porting.

    Untuk memahami proses porting dengan lebih baik, kami sarankan membaca dokumentasi ESP-IDF Build System. Anda harus terlebih dahulu memahami beberapa konsep dasar ESP-IDF:

    • Project: Direktori yang berisi semua file sumber dan file konfigurasi yang diperlukan untuk mem-build aplikasi Anda.
    • components: Potongan kode modular yang berdiri sendiri, dikompilasi menjadi pustaka statis dan ditautkan ke aplikasi. Komponen modular ini disimpan di direktori ESP-IDF. Anda juga dapat menambahkan komponen kustom sendiri.

    Karena sistem build ESP8266-sdk secara default menggunakan GNU make, Anda dapat menambahkan SDK C ke dalam build dengan menambahkan kodenya dan membuat file konfigurasi build .mk yang sesuai.

Metode porting

Tersedia dua metode porting berikut:

  • Metode 1: Tambahkan SDK C ke direktori proyek dan kompilasi kode sumber SDK bersama dengan kode sumber aplikasi Anda.
  • Metode 2: Masukkan SDK C ke direktori components IDF sebagai komponen IDF kustom.

Kami menyarankan menggunakan metode kedua. Menggunakan SDK C sebagai komponen terpisah memudahkan penggunaan ulang di berbagai proyek dan memisahkan kode SDK dari kode aplikasi Anda. Lakukan langkah-langkah berikut:

  1. Tambahkan SDK C sebagai komponen kustom

    • Dapatkan C Link SDK.
      Catatan device OSFreeRTOSAdvanced featuresSaat mengkustomisasi SDK, Anda dapat memilih opsi yang diperlukan dan membiarkan parameter lainnya pada pengaturan default. Pilih fitur sesuai kebutuhan. Untuk informasi selengkapnya, lihat Get C Link SDK.
    • Unduh file posix_port.c terlampir, yang telah disesuaikan untuk ESP8266. Gunakan file ini untuk menggantikan portfiles/aiot_port/posix_port.c di C Link SDK.
    • Baik C Link SDK maupun ESP-IDF mengandung pustaka mbedtls. Untuk menghindari konflik pustaka, modifikasi file $IDF_PATH/components/C-SDK/core/sysdep/core_adapter.c dan nonaktifkan makro CORE_ADAPTER_MBEDTLS_ENABLED.
    • Salin SDK ke direktori $IDF_PATH/components. Kemudian, buat file build bernama
      COMPONENT_ADD_INCLUDEDIRS := core core/sysdep core/utils components/ota
      COMPONENT_SRCDIRS := core core/utils core/sysdep components/ota portfiles/aiot_port/ external
  2. Port aplikasi demo

    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 wifi station. Unduh file sumber lampiran untuk menimpa file simple_wifi.c.

  3. Konfigurasi, kompilasi, dan flash

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

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

    Konfigurasi mbedTLS

    Untuk menggunakan kunci pra-bersama (PSK) sebagai metode pertukaran kunci TLS, ikuti langkah-langkah berikut:

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

    Informasi berikut menentukan konfigurasinya:

    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 make all dan make flash untuk mengompilasi dan melakukan flashing.

  4. Jalankan aplikasi dan lihat log

    Jalankan make monitor untuk membuka monitor 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

    • I (2342) simple wifi: Start linkkit main dalam demo menunjukkan bahwa SDK C telah dimulai.
    • [LK-XXXX][2.450][LK-0313] MQTT connect success in 460 msSDK untuk C menghasilkan log ini, yang menunjukkan keberhasilan koneksi MQTT beserta waktu yang diperlukan untuk terhubung.