Skip to content

一、ESP32-S3引脚分布图(电路图)

image-0image-1

暂时无法在飞书文档外展示此内容

二、嵌入式开发与 Python 开发流程的本质区别

💡

三、ESP-IDF 编译工具链使用基本流程是怎么样的?

ESP-IDF大致流程是:

IDE → 编辑代码 → 点击编译 → 构建系统 → 链接器 → 生成 .bin → 烧录到 单片机Flash → 芯片复位 → CPU读取指令并操作寄存器

这就是典型的 裸机/RTOS 嵌入式开发流程。

🔍 更精确的步骤:

  1. C 源代码 (.c)
  2. 预处理(.C)↓
  3. 预处理(Preprocessing) #include, #define 展开、宏替换 → 生成 .i 文件
  4. 编译器(compiler)把 C → 汇编(.s)
  5. C 代码(.i) → 汇编(.s)
  6. 汇编器(assembler)把 汇编 (.s)→ 机器码(.o) 汇编(.s)→ 目标文件(.o)
  7. 链接(linker)只负责合并 .o 文件,构建系统(CMake/Ninja)负责调度编译和链接,不产生汇编或机器码 所有 .o + 库(如 libc、driver)→ 可执行 ELF 文件(.elf)
  8. 生成固件(Post-build)后处理工具(esptool / objcopy)把 .elf → .bin
    1. objcopy:从 .elf 提取 .bin(去掉调试符号)
    2. 合并 bootloader + partition table + app → 最终烧录镜像
  9. 烧录(Flashing) 通过串口(UART)或 JTAG,将 .bin 写入 Flash 的指定偏移地址(如 App 在 0x10000)
  10. 复位(Resetting):
  11. 芯片重启,CPU 的程序计数器(PC)指向 ROM 中的固化引导程序
  12. 启动(Boot)
    1. 第一阶段:芯片上电 → ROM bootloader(只读,不可修改)
    2. 第二阶段:加载二级 bootloader(位于 Flash 0x1000)
    3. 第三阶段:bootloader 读取分区表 → 跳转到 App 入口(通常 0x10000)
    4. 运行:CPU 从 App 入口地址逐条取指执行,初始化 RAM、外设、调用 app_main()。App 初始化 → 调用 app_main() → 进入 FreeRTOS 调度

💡 关键点:程序不是“运行在操作系统上”,而是直接控制硬件,CPU 的 PC 寄存器被设置为入口地址,开始取指执行。没有“进程”、“文件系统”(除非你挂载 SPIFFS/FATFS)、“动态库”等概念。


觉醒,然后燎原。 © 2026 门主引擎