Публікації

Показано дописи з липень, 2026

Як працює розбиття Flash-пам’яті в ESP32

Зображення
Організація Flash-памʼяті в ESP32 дуже нагадує мені те, як це було з жорсткими дисками на ПК за часів MBR. Там так само є завантажувач, таблиця розділів і, власне, розділи з даними. І яким би не був розмір флешу, правила розбиття не змінюються. Зазвичай таблиця розділів починається за адресою 0x8000 і займає 4 КБ. Але в деяких випадках може знадобитись більший розмір завантажувача, і доводится здвигати таблицю розділів далі. Cтруктура одного запису в таблиці розділів виглядає так: struct PartitionEntry { uint8_t magic ; // Магічне число для валідації запису uint8_t type ; // Тип розділу uint8_t subtype ; // Підтип розділу uint8_t reserved ; // Зарезервовано uint32_t offset ; // Зсув розділу у флеш-пам'яті uint32_t size ; // Розмір розділу char name [ 16 ]; // Ім'я розділу uint32_t flags ; // Прапори розділу }; Проте не варто жорстко на неї спиратися, у різн...

Як додати підтримку CH32V до Platform.IO

Зображення
CH32V — це доволі дешеві мікроконтролери архітектури RISC-V від WinChipHead (Nanjing Qinheng Microelectronics). Також є CH32F — це мікроконтролери на архітектурі ARM. Для початку нам знадобляться дві речі: Відлагоджувальна плата (девборда) CR-CH32VXX з CH32V003 — це один із найдешевших мікроконтролерів. Та WCH-LinkE — програматор для CH32V. У продажу є прості WCH-Link , але для серії CH32V00x вони не підходять, бо вона використовує однодротовий протокол програмування та відлагодження. А він підтримується лише в дорожчому WchLinkE. До речі, є проєкти, які з RP2040 роблять подібний програматор, але офіційні утиліти (MounRiver Studio) не підтримують нічого, окрім WCH-Link. Але я і не використовую офіційну IDE. Тому, напевно, найближчим часом спробую це зробити та описати методику. Чому я використовую PlatformIO, а не MounRiver Studio? З одного боку, MounRiver Studio є для Linux, який є моєю основною ОС для роботи. Але з іншого — коли я спробував її встановити і вона почала вима...

Огляд та запуск LTE-модему A7670E під Linux

Зображення
Характеристики: МГц та LTE-FDD: B1, B3, B5, B7, B8, B20. Зв’язок : GSM/GPRS/EDGE: 900/1800 Навігація : є вхід з GNSS-антени для супутникового позиціонування. Швидкість передачі : по LTE — завантаження (Downlink) до 10 Мбіт/с, віддача (Uplink) до 5 Мбіт/с. По EDGE: до 236.8 Кбіт/с в обидві сторони. Живлення : від 3.4 до 4.2 В — якраз у діапазоні робочої напруги Li-Ion акумуляторів. Інтерфейси : USB — модуль емулює мережеву карту (RNDIS) та UART. Ще є окремий “справжній” UART . А ось аналогового аудіоінтерфейсу для звуку та мікрофона тут немає. Слот для картки : на платі розпаяний звичайний зручний слот під NanoSIM. Окрім роз’єму micro-USB, на платі є стандартна гребінка pinhead на 7 контактів. Ось їхнє призначення: Літера Призначення G Земля (GND) R UART RX T UART TX K Керування живленням модуля (Power Key) V Живлення (VCC) G Земля (GND) S Sleep — за допомогою цього піна можна переводити модем у режим глибокого сну з мінімальним спож...