ESP-IDF 例程——build_system

6. build_system 目录

6.1 wrappers

字段 描述
例程名称 使用包装器重新定义IDF函数
所在文件夹路径 examples\build_system\wrappers
核心功能说明 展示如何使用链接器包装器(wrapper)功能重新定义或覆盖ESP-IDF和引导加载程序中的任何公共函数,用于修改默认函数行为或扩展功能
主要调用的内部/外部函数或模块 - bootloader_print_banner(引导加载程序函数)
  • esp_restart(ESP-IDF函数)
  • 链接器选项:-Wl,–wrap=function_name |
    | 输入输出参数说明 | 配置参数:
  • 无特定输入参数,通过链接器选项配置要包装的函数

输出结果:

  • 引导加载程序启动时显示自定义消息
  • 重启前显示自定义消息
  • 成功重新定义函数的日志输出 |
    | 适用场景及典型应用案例 | - 需要修改ESP-IDF或引导加载程序默认行为但不希望修改源代码的场景
  • 功能扩展和定制开发
  • 调试和测试场景,临时替换函数实现
  • 跨版本兼容处理 |

6.2 技术要点

  • 利用链接器的–wrap选项实现函数包装
  • 包装函数命名规则:__wrap_function_name
  • 原函数通过__real_function_name访问
  • 仅适用于全局函数,静态函数无法被包装
  • 包装内部函数存在版本兼容性风险
  • 需注意函数内存位置(IRAM/Flash)的兼容性

6.3 构建与运行

  1. 设置目标芯片:idf.py set-target esp32c3
  2. 构建项目:idf.py build
  3. 烧录并监控:idf.py flash monitor

6.4 预期输出

I (30) boot-wrapper: message from a bootloader wrapper [...]Restarting in 5 seconds... Restarting is progress... [...]


ESP-IDF 例程——build_system
https://blog.zhaosn.top/ESP32-examples/06.build_system/
作者
Zhao SN
发布于
2026年1月21日
更新于
2026年1月21日
许可协议