前段时间,要开发一个新功能,结果发现必须在5版本以上,那没办法了,升呗
这是官网的迁移指南
从 4.4 迁移到 5.0 - ESP32 - — ESP-IDF 编程指南 v5.4.1 文档
1.升迁构建系统
把每个cmakelist的EXTRA_COMPONENT_DIRS部分的 "$ENV{IDF_PATH}/examples/cxx/experimental/experimental_cpp_component"目录移除,因为5.4.1框架下没有这个目录
在编译的时候需要设置cmakelist的EXTRA_COMPONENT_DIRS具体引用了哪些组件,否则编译的时候会全部编译,会导致升迁困难
!!!这里注意set(EXTRA_COMPONENT_DIRS)一定要添加在set(PROJECT_VER "1.0")中间cmake_minimum_required(VERSION 3.5)和
ESP LOG对数据类型判断的忽略
在项目CMakeLists中增加这个(这个方法本人未验证过,本人是一个一个改的)
add_compile_options(-Wno-error=format= -Wno-format)
如果应用了blufi,则需要在对应自定义组件的CMakeLists增加mbedtls(引入该组件记得开启menuconfig的MBEDTLS_DHM_C配置项)
如果有组件代码用了adc相关内容,则需要在对应自定义组件的CMakeLists增加esp_adc
2.迁移指南会提到很多弃用的组件,升迁难度不大的尽量尝试升迁,难度过大的请直接使用旧驱动,根据迁移指南将不提示对应警告的配置项勾上即可
3.根据迁移指南里面的内容,一个一个查看删除了的api以及函数的变化,然后在自己代码库全局查找,若有,则根据指南进行修改
4.然后尝试进行编译,此时会出现一些编译错误,根据提示进行修改即可,有gcc升级后C语言的变化,或者是打印日志格式化字符串的变化等,可以根据编译报错以及参照官方框架源码使用方式进行更改
如果此时引入了esp-adf,编译此时可能会碰到freertos的冲突问题,可以通过使能configENABLE_BACKWARD_COMPATIBILITY这个配置项解决冲突
此时,大部分工作已经做完可以编译通过了,此时大家将代码烧录进设备可能会碰到较多异常情况,这时,便可以通过日志分析,在这里大家碰到较多的是内存相关问题,需要再menuconfig中使能ESP PSRAM,然后去抄你没升迁版本时候的配置,将漏选的选上,如果此时你发现这个配置在menuconfig中找不到,甚至相近的也没有,那是因为你没有引入对应的组件,比如ESP PSRAM这个配置项就需要引入spi_flash esp_psram这俩个官方组件才会出现,如果有静态创建的东西,如果要使用外部静态内存创建一定要开启FREERTOS_TASK_CREATE_ALLOW_EXT_MEM这个配置项,此时如果内存还不够,出现问题,那么寻找SPIRAM_MALLOC_ALWAYSINTERNAL这个配置项,将其往小调,调的越小,内部内存会有更多空闲。