21. OTA代码分析 - 3

1. 概述

OTA总体采用异步的流程;

ota_ble_event_callback接收OTA事件后,将其推入到队列中;

ota_ble_rx_handler_thread监听队列,通过对事件的分类,进入的不同的处理流程

2. 代码分析

ota_ble_adapter_init

void ota_ble_event_callback(bes_ble_ota_event_param_t *param) -> ble回调

-> BES_BLE_OTA_CCC_CHANGED

-> BES_BLE_OTA_DISCONN:

-> BES_BLE_OTA_RECEVICE_DATA:

ota_ble_push_rx_data()

osMailPut(ota_ble_rx_event_mailbox_id, event)  -> 推送消息到其他线程处理

 

-> BES_BLE_OTA

-> BES_BLE_OTA_SEND_DONE

ota_ble_rx_handler_thread -> ota_ble_rx_mailbox_get() -> 处理线程-读取队列消息

ota_control_handle_received_data -> ble接收信息

_hand
PackageManager: System package ecarx.ads no longer exists; it&#39;s data will be wiped[2025-07-18 10:21:15.406] 01-01 08:00:12.782 1358 1358 I PackageManager: Finished scanning system apps. Time: 133 ms, packageCount: 74 , timePerPackage: 1 , cached: 128[2025-07-18 10:21:15.406] 01-01 08:00:12.786 1358 1358 E System : ******************************************[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : ************ Failure starting system services[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : java.lang.NullPointerException: Attempt to read from field &#39;com.android.server.pm.PackageSignatures com.android.server.pm.PackageSettingBase.signatures&#39; on a null object reference[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.pm.PackageManagerService.assertPackageIsValid(PackageManagerService.java:11584)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.pm.PackageManagerService.scanPackageNewLI(PackageManagerService.java:10427)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.pm.PackageManagerService.addForInitLI(PackageManagerService.java:9192)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.pm.PackageManagerService.scanPackageChildLI(PackageManagerService.java:8881)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.pm.PackageManagerService.scanDirLI(PackageManagerService.java:8720)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.pm.PackageManagerService.scanDirTracedLI(PackageManagerService.java:8673)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2977)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:2378)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:649)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.SystemServer.run(SystemServer.java:450)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.server.SystemServer.main(SystemServer.java:311)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at java.lang.reflect.Method.invoke(Native Method)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E System : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:891)[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E Zygote : System zygote died with exception[2025-07-18 10:21:15.406] 01-01 08:00:12.787 1358 1358 E Zygote : java.lang.NullPointerException: Attempt to read from field &#39;com.android.server.pm.PackageSignatures com.android.server.pm.PackageSettingBase.signatures&#39; on a null object reference[2025-07-18 10:21:15.437] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.pm.PackageManagerService.assertPackageIsValid(PackageManagerService.java:11584)[2025-07-18 10:21:15.437] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.pm.PackageManagerService.scanPackageNewLI(PackageManagerService.java:10427)[2025-07-18 10:21:15.437] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.pm.PackageManagerService.addForInitLI(PackageManagerService.java:9192)[2025-07-18 10:21:15.437] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.pm.PackageManagerService.scanPackageChildLI(PackageManagerService.java:8881)[2025-07-18 10:21:15.437] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.pm.PackageManagerService.scanDirLI(PackageManagerService.java:8720)[2025-07-18 10:21:15.437] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.pm.PackageManagerService.scanDirTracedLI(PackageManagerService.java:8673)[2025-07-18 10:21:15.437] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2977)[2025-07-18 10:21:15.437] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:2378)[2025-07-18 10:21:15.437] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:649)[2025-07-18 10:21:15.437] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.SystemServer.run(SystemServer.java:450)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.server.SystemServer.main(SystemServer.java:311)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E Zygote : at java.lang.reflect.Method.invoke(Native Method)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E Zygote : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:891)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 D AndroidRuntime: Shutting down VM[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: java.lang.NullPointerException: Attempt to read from field &#39;com.android.server.pm.PackageSignatures com.android.server.pm.PackageSettingBase.signatures&#39; on a null object reference[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.pm.PackageManagerService.assertPackageIsValid(PackageManagerService.java:11584)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.pm.PackageManagerService.scanPackageNewLI(PackageManagerService.java:10427)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.pm.PackageManagerService.addForInitLI(PackageManagerService.java:9192)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.pm.PackageManagerService.scanPackageChildLI(PackageManagerService.java:8881)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.pm.PackageManagerService.scanDirLI(PackageManagerService.java:8720)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.pm.PackageManagerService.scanDirTracedLI(PackageManagerService.java:8673)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2977)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:2378)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:649)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.SystemServer.run(SystemServer.java:450)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.server.SystemServer.main(SystemServer.java:311)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)[2025-07-18 10:21:15.468] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)[2025-07-18 10:21:15.500] 01-01 08:00:12.787 1358 1358 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:891)[2025-07-18 10:21:15.500] 01-01 08:00:12.788 1358 1358 E AndroidRuntime: Error reporting crash[2025-07-18 10:21:15.500] 01-01 08:00:12.788 1358 1358 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method &#39;void android.app.IActivityManager.handleApplicationCrash(android.os.IBinder, android.app.ApplicationErrorReport$ParcelableCrashInfo)&#39; on a null object reference[2025-07-18 10:21:15.500] 01-01 08:00:12.788 1358 1358 E AndroidRuntime: at com.android.internal.os.RuntimeInit$KillApplicationHandler.uncaughtException(RuntimeInit.java:143)[2025-07-18 10:21:15.500] 01-01 08:00:12.788 1358 1358 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)[2025-07-18 10:21:15.500] 01-01 08:00:12.788 1358 1358 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1063)[2025-07-18 10:21:15.500] 01-01 08:00:12.788 1358 1358 E AndroidRuntime: at java.lang.Thread.dispatchUncaughtException(Thread.java:1955)[2025-07-18 10:21:15.500] 01-01 08:00:12.788 1358 1358 I Process : Sending signal. PID: 1358 SIG: 9[2025-07-18 10:21:15.500]
最新发布
07-19
xecuting action: flash Serial port /dev/ttyACM0 Connecting.... Detecting chip type... ESP32-S3 Running ninja in directory /home/jichu/esp32/lvgl_display/build Executing "ninja flash"... [1/1] cd /home/jichu/esp32/lvgl_displa...isplay/build/bootloader/bootloader.bin Bootloader binary size 0x5240 bytes. 0x2dc0 bytes (36%) free. [2/5] Linking CXX executable lvgl_display.elf FAILED: lvgl_display.elf : && /home/jichu/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/xtensa-esp32s3-elf-g++ -mlongcalls -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32S3=0 -Wl,--Map=/home/jichu/esp32/lvgl_display/build/lvgl_display.map -Wl,--no-warn-rwx-segments -fno-rtti -fno-lto -Wl,--gc-sections -Wl,--warn-common -T esp32s3.peripherals.ld -T esp32s3.rom.ld -T esp32s3.rom.api.ld -T esp32s3.rom.libgcc.ld -T esp32s3.rom.newlib.ld -T esp32s3.rom.version.ld -T memory.ld -T sections.ld CMakeFiles/lvgl_display.elf.dir/project_elf_src_esp32s3.c.obj -o lvgl_display.elf -L/home/jichu/esp32/esp-idf/components/soc/esp32s3/ld -L/home/jichu/esp32/esp-idf/components/esp_rom/esp32s3/ld -L/home/jichu/esp32/lvgl_display/build/esp-idf/esp_system/ld -L/home/jichu/esp32/esp-idf/components/esp_phy/lib/esp32s3 -L/home/jichu/esp32/esp-idf/components/esp_coex/lib/esp32s3 -L/home/jichu/esp32/esp-idf/components/esp_wifi/lib/esp32s3 -L/home/jichu/esp32/esp-idf/components/bt/controller/lib_esp32c3_family/esp32s3 esp-idf/xtensa/libxtensa.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/efuse/libefuse.a esp-idf/esp_mm/libesp_mm.a esp-idf/driver/libdriver.a esp-idf/esp_pm/libesp_pm.a esp-idf/mbedtls/libmbedtls.a esp-idf/esp_bootloader_format/libesp_bootloader_format.a esp-idf/esp_app_format/libesp_app_format.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/esp_partition/libesp_partition.a esp-idf/app_update/libapp_update.a esp-idf/spi_flash/libspi_flash.a esp-idf/pthread/libpthread.a esp-idf/esp_system/libesp_system.a esp-idf/esp_rom/libesp_rom.a esp-idf/hal/libhal.a esp-idf/log/liblog.a esp-idf/heap/libheap.a esp-idf/soc/libsoc.a esp-idf/esp_hw_support/libesp_hw_support.a esp-idf/freertos/libfreertos.a esp-idf/newlib/libnewlib.a esp-idf/cxx/libcxx.a esp-idf/esp_common/libesp_common.a esp-idf/esp_timer/libesp_timer.a esp-idf/app_trace/libapp_trace.a esp-idf/esp_event/libesp_event.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/esp_phy/libesp_phy.a esp-idf/vfs/libvfs.a esp-idf/lwip/liblwip.a esp-idf/esp_netif/libesp_netif.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/esp_coex/libesp_coex.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/bt/libbt.a esp-idf/unity/libunity.a esp-idf/cmock/libcmock.a esp-idf/console/libconsole.a esp-idf/http_parser/libhttp_parser.a esp-idf/esp-tls/libesp-tls.a esp-idf/esp_adc/libesp_adc.a esp-idf/esp_eth/libesp_eth.a esp-idf/esp_gdbstub/libesp_gdbstub.a esp-idf/esp_hid/libesp_hid.a esp-idf/tcp_transport/libtcp_transport.a esp-idf/esp_http_client/libesp_http_client.a esp-idf/esp_http_server/libesp_http_server.a esp-idf/esp_https_ota/libesp_https_ota.a esp-idf/esp_lcd/libesp_lcd.a esp-idf/protobuf-c/libprotobuf-c.a esp-idf/protocomm/libprotocomm.a esp-idf/esp_local_ctrl/libesp_local_ctrl.a esp-idf/espcoredump/libespcoredump.a esp-idf/wear_levelling/libwear_levelling.a esp-idf/sdmmc/libsdmmc.a esp-idf/fatfs/libfatfs.a esp-idf/json/libjson.a esp-idf/mqtt/libmqtt.a esp-idf/nvs_sec_provider/libnvs_sec_provider.a esp-idf/perfmon/libperfmon.a esp-idf/spiffs/libspiffs.a esp-idf/touch_element/libtouch_element.a esp-idf/usb/libusb.a esp-idf/wifi_p
03-14
<think>好的,我现在要处理用户提供的关于ESP32-S3项目编译失败的日志。首先,我需要仔细阅读日志内容,找出关键错误信息。用户执行了`ninja flash`命令,但在链接阶段出现了问题,具体是`FAILED: lvgl_display.elf`,说明生成可执行文件时失败。 首先,我注意到链接器命令中使用了`xtensa-esp32s3-elf-g++`,这可能涉及到C++的链接问题。常见的失败原因可能包括内存不足、库缺失或版本不兼容、符号未定义等。用户的环境是ESP-IDF,可能使用了LVGL库,所以需要检查相关依赖是否正确配置。 日志中的错误没有直接显示具体的错误信息,这可能是因为输出被截断或者需要更详细的编译日志。因此,我应该建议用户增加编译的详细程度,例如运行`ninja -v flash`来获取更多信息。此外,检查是否有未定义的引用(undefined reference)或库路径问题。 另一个可能性是项目的sdkconfig配置不正确,特别是对于ESP32-S3的配置,例如PSRAM设置、分区表大小等。用户需要确认`sdkconfig`中是否选择了正确的芯片型号,以及LVGL相关配置是否适配ESP32-S3。 内存不足也是一个常见问题,尤其是在链接阶段。Bootloader的大小显示为0x5240字节,剩余36%的空间,这可能没问题,但主应用程序可能超出了可用内存。需要检查分区表是否合理,以及应用程序的代码量和内存需求。 还有可能是工具链的问题,比如xtensa-esp32s3-elf-g++的版本是否与ESP-IDF版本兼容。用户使用的ESP-IDF版本是否支持所选的LVGL版本?需要确认版本兼容性,并尝试重新安装或更新工具链。 此外,检查CMakeLists.txt和组件依赖是否正确,特别是LVGL组件是否被正确包含,路径是否正确。如果用户自定义了组件,可能存在路径错误或编译选项冲突。 最后,建议用户清理构建目录(删除build文件夹)并重新编译,有时候旧的构建文件会导致链接错误。如果问题依旧,查看更详细的日志或尝试简化项目以隔离问题。</think>您在尝试通过 `ninja flash` 命令烧录 ESP32-S3 固件时遇到了链接阶段的编译错误。以下是问题分析和解决步骤: --- ### **错误定位** 日志显示关键错误: ```bash FAILED: lvgl_display.elf : && /home/jichu/.espressif/tools/.../xtensa-esp32s3-elf-g++ ... (链接命令) ``` 此错误表明在生成最终可执行文件 `lvgl_display.elf` 时,链接器 (`xtensa-esp32s3-elf-g++`) 失败。 --- ### **可能原因** 1. **内存不足** - Bootloader 剩余空间:$$ 0x5240 \text{ bytes (总)} - 0x2dc0 \text{ bytes (剩余)} = 0x2480 \text{ bytes (已用)} $$ - 主程序 (`lvgl_display.elf`) 可能超出芯片 Flash 或 RAM 限制。 2. **依赖库缺失或冲突** - 检查是否缺少 LVGL 相关库(如 `lvgl/liblvgl.a`)。 - 确保所有组件(如 Wi-Fi、SPIFFS)在 `sdkconfig` 中正确配置。 3. **符号未定义 (Undefined Reference)** - 常见于未实现函数、头文件未包含或库未链接。 4. **工具链版本不兼容** - ESP-IDF 版本与 LVGL 组件或第三方库存在兼容性问题。 --- ### **解决步骤** #### 1. **启用详细日志** 重新编译并输出详细错误信息: ```bash ninja -v flash | tee build.log ``` 检查 `build.log` 中具体的未定义符号或路径错误。 --- #### 2. **检查内存配置** - **分区表**:确认 `partitions.csv` 中 `app` 分区大小是否足够。 - **sdkconfig**:通过 `idf.py menuconfig` 检查: - **Component config → LVGL → Memory settings**(调整 LVGL 缓冲区大小)。 - **Serial flasher config → Flash Size** 是否匹配硬件。 --- #### 3. **验证依赖关系** - **组件路径**:确保 LVGL 组件路径正确(`CMakeLists.txt` 中 `EXTRA_COMPONENT_DIRS`)。 - **库链接**:在 `CMakeLists.txt` 中添加缺失库: ```cmake target_link_libraries(${PROJECT_NAME} PRIVATE lvgl) ``` --- #### 4. **清理并重新编译** 清除旧构建文件: ```bash rm -rf build idf.py build ``` --- #### 5. **缩小问题范围** - **最小化代码**:注释掉 LVGL 初始化代码,逐步排查功能模块。 - **更新工具链**:重新安装 ESP-IDF 或更新至稳定版本(如 v5.1)。 --- ### **扩展建议** - **使用官方例程**:从 `esp-idf/examples/peripherals/lcd/lvgl` 测试基础功能。 - **内存分析工具**:通过 `idf.py size-components` 查看各组件内存占用。 如果仍有问题,请提供 `build.log` 中的具体错误信息,以便进一步诊断!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值