乐鑫ESP32系列芯片是性价比非常高的嵌入式平台,不仅外设接口丰富,有较多的存储空间,还支持WIFI/BT等无线连接,同时也支持加密和权限管理等安全功能,这大大拓展了芯片的应用领域;当然,最重要的是该系列芯片的价格并不贵。个人是很看好ESP32系列芯片的前景,故此准备几篇文章来解析该芯片平台的功能,并为以后的开发做技术储备。
初次接触乐鑫ESP32,是从乐鑫的ESP-IDF开发环境开始的,这也是乐鑫主推的开发套件;另外也有Arduino开发套件,暂无涉及。IDF采用CMAKE编译系统,较晦涩复杂,本文不作解析,仅从使用IDF的角度出发。
IDF编译app固件按乐鑫官网的编程指南,安装好IDF开发环境,并复制examples\get-started\blink\作为测试用例,按下述命令编译测试:
>: idf.py set-target esp32c3 #配置目标芯片
>: idf.py menuconfig #图像化配置功能宏,这里修改宏CONFIG_BLINK_GPIO为13
>: idf.py build #编译blink测试用例
以下是整个编译过程的主要日志,可以看出涉及到哪些代码,以及编译结果。
Executing action: all (aliases: build)
Running ninja in directory G:\workspace\espressif\blink\build
Executing "ninja all"...
[0/1] Re-running CMake...
-- Building ESP-IDF components for target esp32c3
Processing 2 dependencies: #项目依赖的组件来源
[1/2] espressif/led_strip (2.5.2) #项目目录下的组件:\blink\managed_components\espressif__led_strip
[2/2] idf (5.1.2) #ESP-IDF目录components\下的组件
######编译器添加ESP32C3内部ROM的链接资源以及相关的组件代码路径,准备编译app(blink.bin)
-- Project sdkconfig file G:/workspace/espressif/blink/sdkconfig
-- App "blink" version: 1
-- Adding linker script G:/workspace/espressif/blink/build/esp-idf/esp_system/ld/memory.ld
-- Adding linker script G:/Program/Espressif/frameworks/esp-idf-v5.1.2/components/esp_system/ld/esp32c3/sections.ld.in
-- Adding linker script G:/Program/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c3/ld/esp32c3.rom.ld
-- Adding linker script G:/Program/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld
-- Adding linker script G:/Program/Espressif/frameworks/esp-idf-v5.1.2/components/esp_rom/esp32c3