На примере SDK AC630N_bt_data_transfer_sdk---AC632, но метод просмотра аналогичен для других чипов и версий SDK.
Размер FLASH: может быть 2 Мбит (256 КБ), 4 Мбит (512 КБ) и 8 Мбит (1 МБ), всего три варианта, в зависимости от конкретной модели.
https://gitee.com/Jieli-Tech/fw-AC63_BT_SDK/issues/I4Y5CG
| --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------ |
| Первый сектор (первые 4КБ) | Зарезервировано, ini-файл конфигурация: EOFFSET=1; // bk * n | Необязательный |
| uboot | Код загрузки, обновления и т. д. | Обязательный |
| app code 0 (app. bin) | Прикладной код | Обязательный |
| app code 1 (db_update_data. bin) | Дополнительный прикладной код, используется при двойном резервном копировании | Необязательный |
| Виртуальная память (VM) | Размер регулируется, минимальный размер — 8КБ; циклический механизм хранения и равномерного удаления | Обязательный |
| ------ Расширенная область VM для OTA ----- | Для OTA требуется запомнить некоторые временные области, компилятор автоматически увеличивает размер VM | Обязательный |
| Блок данных Bluetooth (BTIF) | Информация Bluetooth (например, информация trim, MAC-адрес и т. д.), записывается один раз | Обязательный || Личная область | Уникальная область флеш-памяти для хранения больших объёмов информации | Необязательный |
| ------ Оставшаяся область флеш-памяти ------ | | |
| Последний сектор (последние 4 КБ) | Информация сертификата, триплета, номера серии, MAC-адреса и т. д., конфигурация: NEED_RESERVED_4K=NO; // YES | Необязательный |### 2. Конечные файлы после компиляции:
jl_isd.bin = uboot.boot + app.bin + p11_code.bin + tone.cfg + cfg_tool.bin + другие ресурсные файлы. (не включает область VM)
jl_isd.fw = информация загрузчика + jl_isd.bin (выравнивание 256 байт) + jl_isd.bin (выравнивание 4КБ)
обновление.ufw = обновление.bin + нескольких форматов jl_isd.bin
На примере проекта AC630N_bt_data_transfer_sdk_release_v2.1.0, 632, AC632N_spp_and_le.cbp:
Функция | app.bin | jl_isd.bin | Количество кода для отдельной функции |
---|---|---|---|
mcu-sdk | 30КБ | 44КБ | |
bt_data_transfer_sdk только запущенный системный RTOS | 42КБ | 52КБ | Занимаемое ОС: 12КБ |
RTOS + BLE | 106КБ | 120КБ | Занимаемое BLE: 64КБ |
RTOS + BLE + EDR | 171КБ | 184КБ | Занимаемое EDR: 65КБ |
RTOS + BLE + EDR + приложение печати | 193КБ | 203КБ | Приложение печати: 22КБ |
RTOS + BLE + EDR + приложение печати + библиотека печати | 245КБ | 255КБ | Библиотека печати: 52КБ |
RTOS + BLE + EDR + приложение печати + библиотека печати + OTA | 258КБ | 272КБ | Одиночное резервное копирование OTA: 13КБ |
Поскольку область VM расширяется автоматически в зависимости от функциональности, оставшееся пространство в flash-памяти увеличивается вместе с областью VM.
Поэтому оставшееся пространство = размер VM - минимальное необходимое пространство для выбранного метода OTA.
Номер модели чипа | Общий размер памяти SRAM + КЭШ |
---|---|
AD140, AC104 | 32КБ + OnClickListener 4 * 4КБ |
AD150 | 20КБ + OnClickListener 2 * 4КБ |
AD160 | 40КБ + OnClickListener 4 * 4КБ |
AC632 | 73КБ + OnClickListener 9КБ |
AC631 | 64КБ + OnClickListener 16КБ |
AC635, AC695 | 192КБ + OnClickListener 16КБ |
AC636, AC696 | 128КБ + OnClickListener 16КБ |
AC637, AC697 | 176КБ + OnClickListener 36КБ |
AC638, AC698 | 176КБ + OnClickListener 36КБ |
Доступна только SRAM, согласно компилятору, она делится на три части: стек, статические данные, куча. Пример с AC632: всего 73КБ SRAM:
Таймер периодически вызывает mem_stats(), что позволяет отслеживать оставшееся пространство RAM.
const char log_tag_const_d_HEAP_MEM AT(.LOG_TAG_CONST) = 1; // CONFIG_DEBUG_LIB(TRUE);
static void test_timer_loop(void *priv)
{
mem_stats();
}
void board_power_init(void)
{
sys_timer_add(NULL, test_timer_loop, 1000);
...
}
```// Соответствующий вывод (необходимо обратить внимание только на физическую память):
// [Debug]: [HEAP_MEM] Текущее свободное пространство в куче 58168 байт, минимальное свободное пространство в куче 58080 байт, размер физической памяти 27136 байт
Функция | Оставшаяся доступная RAM | Потребление RAM одной функцией |
---|---|---|
mcu-sdk | 48 КБ | Драйвер чипа: 25 КБ |
bt_data_transfer_sdk (только системный RTOS) | 39 КБ | ОС: 9 КБ |
RTOS + BLE | 26 КБ | BLE: 13 КБ |
RTOS + EDR | 24 КБ | EDR: 15 КБ |
RTOS + BLE + EDR | 14 КБ | BLE + EDR: 25 КБ |
RTOS + BLE + EDR + OTA | 10 КБ | Одиночное резервное копирование OTA: 4 КБ |
Вход Перед тем как оставить комментарий