Обновление состоит из двух этапов и показывает два процента прогресса:
cpu_reset()
, что может привести к потере контроля над состоянием I/O и отключению Bluetooth.При компиляции и скачивании в логе сборки отображается информация о свободном пространстве: важна только информация, указанная при скачивании
Методы изменения:
#define TCFG_USER_EDR_ENABLE 0 // Включение функции EDR
#define CONFIG_VM_LEAST_SIZE 8K
Минимальный размер — 8К, увеличивайте размер в зависимости от потребностей с шагом в 8К.
NEED_RESERVED_4K=NO; // Выключение хранения 4К
Замените файл tone.cfg в папке tools на файл с пустым звуком.
const int support_dual_bank_update_en = 1; // Включить двойное резервное копирование, не забудьте установить этот параметр в 1
const int support_vm_data_keep = 1; // При обновлении требуется сохранение данных VM
// Включение проверки соединения, должно совпадать с конфигурацией APP
#define BT_CONNECTION_VERIFY 0 // 0 - проверка, 1 - отсутствие проверки
```## 3. Настройка структуры файла обновления
При компиляции без подключения микросхемы и при компиляции с подключением микросхемы информация может не совпадать
```c
// Определение размера флэш-памяти
#define FLASH_SIZE_256K 0x40000
#define FLASH_SIZE_512K 0x80000
#define FLASH_SIZE_1M 0x100000
#define FLASH_SIZE_2M 0x200000
#define FLASH_SIZE_4M 0x400000
#define CONFIG_FLASH_SIZE FLASH_SIZE_256K // Конфигурация размера флэш-памяти
``````c
#define CONFIG_DB_UPDATE_DATA_GENERATE_EN 1 // Генерация db_data.bin (для использования с протоколами сторонних производителей)
#define CONFIG_ONLY_GENERATE_ALIGN_4K_CODE 1 // UFW генерирует одну версию кода, выровненную до 4К
FLASH_SIZE = CONFIG_FLASH_SIZE; // Размер флэш-памяти
FORCE_4K_ALIGN = YES; // Выравнивание до 4К байт
SPECIAL_OPT = 0; // Генерировать только один flash.bin
Если название Bluetooth слишком длинное (более 16 байт), следует обратить внимание, что название Bluetooth должно находиться в adv пакете, а остальные типы данных должны быть помещены в rsp пакет
При использовании EDR и BLE с одним адресом:
```c
if (__this->JL_ble_status != BLE_ST_NOTIFY_IDICATE) {
if (__this->rcsp_ble->adv_enable) {
__this->rcsp_ble->adv_enable(NULL, 0);
}
rcsp_printf("%s[__this->JL_ble_status:%d]", __func__, __this->JL_ble_status);
__this->JL_ble_status = BLE_ST_NOTIFY_IDICATE;
}
#define CONFIG_UPDATE_JUMP_TO_MASK 1
// способ обновления конфигурации для перехода к u-boot: 0 — прямой reset, 1 — переход
При входе в OTA обновление, чтобы обеспечить стабильность и избежать сбоев, вызванных другими функциями, рекомендуется отключить все активные внешние устройства.
Например, как показано на следующем рисунке:
У некоторых SDK есть ошибки в ota.bin, поэтому его следует заменить на последний SDK.
[WPS Облако] AC630X-V221-OTA патч-004
https://kdocs.cn/l/ckG1N4vds3VG
https://gitee.com/Jieli-Tech/fw-AC63_BT_SDK/issues/I4O1AP
gpio_shortpress_reset_config(0); // 1 -- enable 0 -- disable
gpio_longpress_pin0_reset_config(IO_PORTA_09, 0, 0);
// isd_config_rule.c закомментируйте эту строку
/* RESET = CAT3(CONFIG_RESET_PIN, CONFIG_RESET_TIME, CONFIG_RESET_LEVEL); // port_время_нажатия_уровень_эффективности */
После успешной установки тестового приложения происходит сброс. При этом устройство не выключается, а сразу переходит в режим работы для продолжения обновления.
Если имеется порт пробуждения, то после сброса устройство должно автоматически выключаться.
При двойном резервировании тестовое обновление постоянно повторяется без сброса устройства.
## Одиннадцатый раздел: действия при невозможности решения проблемы
Если обновление провалилось на прототипе, проверьте ту же программу на плате разработки, чтобы убедиться, что она работает правильно.
Удалите некоторые функции из существующей программы, чтобы уменьшить объем кода и проверить возможность нормального обновления.
Включите печать данных уровня приложения, используя ota_debug.bin и переименовывая его в ota.bin,
измените #define CONFIG_UBOOT_DEBUG_PIN USBDP // PA05
и #define TCFG_UART0_TX_PORT IO_PORT_DP
.
Попробуйте использовать другие устройства (Android, iOS) или другие приложения (Android, мини-чат WeChat) для исключения проблем.# Проблемы разработки приложений
Перед разработкой приложения обязательно проведите тестирование с использованием официальных версий приложений Jackii.
Андроид приложение: [Jackii OTA Update] https://gitee.com/Jieli-Tech/Android-JL_OTA
iOS приложение: [Jackii OTA] https://gitee.com/Jieli-Tech/iOS-JL_OTA
Мини-приложение WeChat: [Jackii OTA] https://gitee.com/Jieli-Tech/WeChat-Mini-Program-OTA
Для выявления проблем необходимо включить переключатель LOG и отправить полный логовый файл, как это указано в описании репозитория приложения.
Вход Перед тем как оставить комментарий