#1 2026-04-10 15:32:09

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 187

Розмір прошивки

Оце заходився зробити нагрівач з текрмостабілізацією. Нічого складного: термопара з датчиком MAX6675, LCD дисплей 1602, енкодер, симистор. Замість контроллера взяв stm32f103 - китайську blue pill. Всередину - freertos (красиво ж wink ). Готові ардуїнівські ліби зручно.. Х%%к-х%%к і в production wink І воно все разом - упсь, не влізло sad Штош, взяв тулзовину puncover, дивлюсь куди ділось 32к флешки.
2026-04-10_15-05.png

Я так розумію, дуже багато місця зайняла float математика, яку притягнула з собою ліба термометра (_adddf3, __aeabi_dmul і тому подібне). Але абсолютний рекордсмен - HAL (HAL_I2C_EV_IRQHandler, HAL_RCC_OscConfig,HAL_UART_IRQHandler). Без HAL мабуть буде незручно. freertos - помітно. Страшні ардуїнівські функції десь в кінці.

Можна, звичайно, трохи побайто%%битись, переписати лібу без float. Або без freertos обійтись. Чи взяти інший фреймворк спробувати. Що порадите?

Неактивний

#2 2026-04-10 23:29:32

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 809

Re: Розмір прошивки

Що у вас за конфігурація platformio?
Які саме ліби використовуєте?

Для термостата що там потрібно? Регулятор та примітивний UI. Не дуже розумію, навіщо там RTOS.

jokeR пише:

взяв тулзовину puncover, дивлюсь куди ділось 32к флешки.

А objdump що показує? Окрім .text є ще секції .data та .rodata.

Наприклад, дисплей хоч і символьний, але бібліотека може тягнути кастомні бітмапи для завантаження в CGRAM. 

jokeR пише:

Я так розумію, дуже багато місця зайняла float математика, яку притягнула з собою ліба термометра (_adddf3, __aeabi_dmul і тому подібне).

Їх може і який-небудь snprintf() притягнути.

jokeR пише:

Але абсолютний рекордсмен - HAL (HAL_I2C_EV_IRQHandler, HAL_RCC_OscConfig,HAL_UART_IRQHandler).

Так це мабуть ардуінівська Wire. Вона дурна.
UPD: сама по собі HAL_I2C_EV_IRQHandler() в stm32f1xx_hal_i2c.c монструозна. Не розумію, навіщо імплементувати і master, і slave mode в одному місці одночасно.

Остання редакція dimich (2026-04-10 23:40:33)

Неактивний

#3 Вчора 08:54:27

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 187

Re: Розмір прошивки

Концепція rtos сподобалась, вирішив спробувати на чомусь простому wink Зручніше ніж ардуїнівський суперцикл - окремі ізольовані таски. Управління симістором по Брезенхейму окремо, регулятор окремо, дисплей окремо. Але розмір не радує.
Так то без float все помістилось. Правда цілочисленний PID регулятор може спрацювати не так як хочеться, спаяю, подивлюсь.

Що у вас за конфігурація platformio?
Які саме ліби використовуєте?

[env:bluepill_f103c6]
platform = ststm32
board = bluepill_f103c6
framework = arduino
lib_deps = 
	stm32duino/STM32duino FreeRTOS@^10.3.3
	locple/LiquidCrystal I2C Multilingual@^2.0.2

Максимально безхитрістно.

Так це мабуть ардуінівська Wire. Вона дурна.

Походу так. І походу притягнув її дисплей з i2c.

Неактивний

#4 Вчора 10:02:16

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 809

Re: Розмір прошивки

jokeR пише:

Зручніше ніж ардуїнівський суперцикл - окремі ізольовані таски. ... Але розмір не радує.

А ще окремий стек в RAM для кожної задачі. Та й цикл воно, наскільки бачу, все одно крутить, тільки пустий.
Логіку ізолювати можна і без RTOS. То якщо задачам пріорітети потрібні, тоді має сенс. Ну то таке.

jokeR пише:

Правда цілочисленний PID регулятор може спрацювати не так як хочеться

Fixed point? Для вашої задачі, думаю, точності має вистачити.

jokeR пише:

Походу так. І походу притягнув її дисплей з i2c.

Якщо в самому HAL так інтерфейс до I2C реалізовано, то воно і напряму, без Wire, буде здорове. Я би пошукав альтернативні імплементації, щоб без slave mode. Якщо нема, то можна й HAL'івську імплементацію трохи порізати. Але там окрім I2C іншого болота теж вистачає.

Також можна спробувати зібрати з LTO (build_flags = -flto). Але не факт, що успішно злінкується без танців з бубном.

Неактивний

#5 Вчора 14:17:04

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 187

Re: Розмір прошивки

Якщо в самому HAL так інтерфейс до I2C реалізовано

Схоже на те. Жодного ifdef я не побачив.

Походу тут дилема. Або крос-платформне Arduino - більш-менш однаково працює будь де. І лібу знайти можна під що завгодно. Зручно. Але жирне. Або закопуватись в stm32-специфічні фреймворки. Як мінімум для дисплея з i2c ліба під cmsis існує wink

Неактивний

#6 Вчора 22:46:28

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 809

Re: Розмір прошивки

jokeR пише:

Походу тут дилема.

В розробці так завжди wink За виграш в одному доводиться платити чимось іншим.

jokeR пише:

І лібу знайти можна під що завгодно.

Можна відмовитись від ардуіно фреймворка і збирати прямо з FreeRTOS. Звісно, бібліотеки, що використовують ардуіно-специфічні API, доведеться або адаптувати, або замінити, або реалізувати самому.

Але жирне.

Жирне воно буде в будь-якому разі. 32 кілобайта на 32-бітній архітектурі - це не ті ж 32 кілобайта на 8-бітній.   

jokeR пише:

Як мінімум для дисплея з i2c ліба під cmsis існує

Доречі, хіба у 1602 дисплея рідний інтерфейс - I2C? Там же мабуть HD44780 і екстендер типу PCF8574. Якщо підключити через рідний інтерфейс, то не потрібно ні Wire, ні I2C HAL. Датчик MAX6675 на SPI же наче б то.

Неактивний

#7 Сьогодні 01:58:08

Kino
Учасник
Зареєстрований: 2019-02-28
Повідомлень: 123

Re: Розмір прошивки

мдя. лет двадцать назад такие проекты умудрялись в тини13 впихивать, а нынче стм с 32кб не хватает.

Неактивний

#8 Сьогодні 02:13:05

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 809

Re: Розмір прошивки

Kino пише:

лет двадцать назад такие проекты умудрялись в тини13 впихивать, а нынче стм с 32кб не хватает.

Зараз теж ніхто не заважає впихнути. Але критерії змінились. Зараз цінується, щоб без занурення в тему і через півдня якось запрацювало. Ресурси на розробку (час × кваліфікація) дорожчі за елементну базу.

Неактивний

#9 Сьогодні 02:31:12

Kino
Учасник
Зареєстрований: 2019-02-28
Повідомлень: 123

Re: Розмір прошивки

dimich пише:

Зараз цінується, щоб без занурення в тему і через півдня якось запрацювало.

Хм. Чет у автора через полдня нифига не запрацювало... или это другое?

Неактивний

#10 Сьогодні 02:43:32

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 809

Re: Розмір прошивки

Kino пише:

Чет у автора через полдня нифига не запрацювало... или это другое?

Яка там у автора мотивація використовувати STM32 і RTOS для цієї задачі - то не моя справа) Я про загальну тенденцію в індустрії, де "не влазить в STM32F103 - візми STM32F411", бо так виходить дешевше.

Неактивний

#11 Сьогодні 02:52:13

Kino
Учасник
Зареєстрований: 2019-02-28
Повідомлень: 123

Re: Розмір прошивки

dimich пише:

Я про загальну тенденцію в індустрії, де "не влазить в STM32F103 - візми STM32F411", бо так виходить дешевше.

Ну тоже такое... помнится, в проекте для индустрии, меня просили пошагово в отладчике показывать как будет работать программа, чтобы нигде никаких глюков, иначе за "пр%еб" в программе, компании накладывались штрафные санкции. Представляю как сейчас такое можно показать, например, на есп32 со встроенной закрытой операционкой.

зы. я не про бытовые безделушки, а там, где глюк в программе может стоить человеку здоровья или жизни.

Остання редакція Kino (Сьогодні 02:54:20)

Неактивний

#12 Сьогодні 03:08:53

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 809

Re: Розмір прошивки

Kino пише:

Представляю как сейчас такое можно показать, например, на есп32 со встроенной закрытой операционкой.

Із теорії надійності, система може вважатись надійною лише коли доведена коректність взаємодії між її складовими компонентами, і кожний компонент системи є також надійним (рекурсивно).
Проприєтарні технології - то взагалі окрема тема.

Kino пише:

я не про бытовые безделушки, а там, где глюк в программе может стоить человеку здоровья или жизни.

Такі проекти мають проходити незалежний аудит і сертифікацію.

Неактивний

#13 Сьогодні 03:16:49

Kino
Учасник
Зареєстрований: 2019-02-28
Повідомлень: 123

Re: Розмір прошивки

dimich пише:

Із теорії надійності, система може вважатись надійною лише коли доведена коректність взаємодії між її складовими компонентами, і кожний компонент системи є також надійним (рекурсивно).

Случайно, не Вы ли мне ТАУ в КПИ преподавали? )))


Kino пише:

Такі проекти мають проходити незалежний аудит і сертифікацію.

Так отож. Помница на ютубе видел передачку, где аппарат лучевой терапии, из-за глюка в программе убил несколько пациентов. А ведь наверняка такой аппарат проходил все проверки.

Неактивний

#14 Сьогодні 03:23:24

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 809

Re: Розмір прошивки

Kino пише:

Случайно, не Вы ли мне ТАУ в КПИ преподавали? )))

Ні, не памʼятаю такого в своїй біографії)

Kino пише:

Помница на ютубе видел передачку, где аппарат лучевой терапии, из-за глюка в программе убил несколько пациентов. А ведь наверняка такой аппарат проходил все проверки.

Therac-25? Якраз після того інциденту вимоги до сертифікації в мед.індустрії були переглянуті та суттєво посилені.

Неактивний

#15 Сьогодні 03:30:03

Kino
Учасник
Зареєстрований: 2019-02-28
Повідомлень: 123

Re: Розмір прошивки

dimich пише:

Therac-25? Як раз після того інциденту вимоги до сертифікації в мед.індустрії були переглянуті та суттєво посилені.

ага. Вот мне и стало интересно, каким образом нынче можно проверить безотказность действия электронной приблуды, если даже программист не знает как работает та ОС, если исходники закрыты и хрен его знает что она там вытворит.

да что далеко ходить, когда появились есп (а там без freertos никак) думаю дай проверю, действительно ли они так хороши. Записал на сд большой wav файл и поставил на проигрыш. И что? Когда никогда, да подвисон в проигрыше случался, видимо та ос что-то себе там придумала поработать... так что мое мнение, где нужны точные времянки - нафиг ту ос и пишем ручками.

Остання редакція Kino (Сьогодні 03:39:50)

Неактивний

#16 Сьогодні 04:20:41

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 809

Re: Розмір прошивки

Kino пише:

Вот мне и стало интересно, каким образом нынче можно проверить безотказность действия электронной приблуды, если даже программист не знает как работает та ОС, если исходники закрыты и хрен его знает что она там вытворит.

В теорії, має бути специфікація інтерфейсів такої ОС. Якщо програма користується інтерфейсами коректно, згідно специфікації, то все ок. Для того такі мови як C та C++ стандартизовані по ISO. А наскільки довіряти самій такій закритій ОС - нехай уже менеджмент вирішує і бере на себе відповідальність, а не програміст.
Те ж саме і з залізом.

Kino пише:

когда появились есп (а там без freertos никак) ... видимо та ос что-то себе там придумала поработать...

Хіба там якась закрита ОС? Я глибоко не копав, але наскільки знаю, там похідна від FreeRTOS чи щось подібне, і збирається з ісходніків. То сама архітектура Xtensa наче б то пропрієтарна. А останні сімейства ESP32 на ядрі Risc-V взагалі.

Неактивний

#17 Сьогодні 10:51:10

Kino
Учасник
Зареєстрований: 2019-02-28
Повідомлень: 123

Re: Розмір прошивки

dimich пише:

Хіба там якась закрита ОС? Я глибоко не копав, але наскільки знаю, там похідна від FreeRTOS чи щось подібне

RF часть (wifi и BT) точно закрыта, поставляется уже скомпилированными бинарниками, а так да, там freertos.

Причем пишут, что эта часть работает на ядре 0, то если свою прошивку запустить на втором ядре, всё равно когда никогда может тормозок проскочить. Так что, для управления ядерным реактором, я больше бы доверился стм, а не этой китайской фигне.

Остання редакція Kino (Сьогодні 10:57:15)

Неактивний

#18 Сьогодні 11:23:48

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 809

Re: Розмір прошивки

Kino пише:

Причем пишут, что эта часть работает на ядре 0, то если свою прошивку запустить на втором ядре, всё равно когда никогда может тормозок проскочить.

Ну, блоби фірмварі зараз багато де завантажуються: на GPU, на аудіочіпах, на мережевих адаптерах. Але що в ESP32 воно прямо на одному з ядер виконується, не знав. Не розумію таких рішень.

Kino пише:

Так что, для управления ядерным реактором, я больше бы доверился стм, а не этой китайской фигне.

100%

Неактивний

#19 Сьогодні 11:51:48

jokeer
Гість

Re: Розмір прошивки

>> Хм. Чет у автора через полдня нифига не запрацювало... или это другое?

У автора все запрацювало (в теоріі. Індикатор блимає, цифри показує. Припаяє симістор - буде видно і на практиці. Техніка безпеки вимагає не спішити).
Він не бачить особливого смислу упарюватись в attiny, якщо stm32 дешевше.
Питання було в методиці зменшити розмір прошивки без особливого байтоложества wink

#20 Сьогодні 11:59:35

jokeer
Гість

Re: Розмір прошивки

>> Якщо підключити через рідний інтерфейс

Була така ідея wink але це жмут проводів і можливо конвертор логічних рівнів з 3.3 на 5 В..

#21 Сьогодні 12:09:17

jokeer
Гість

Re: Розмір прошивки

>> я не про бытовые безделушки, а там, где глюк в программе может стоить человеку здоровья или жизни.

До речі, в кожному радіокерованому дроні є esp8265/esp8266/esp32. Таке життя..

#22 Сьогодні 12:20:13

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 809

Re: Розмір прошивки

jokeer пише:

До речі, в кожному радіокерованому дроні є esp8265/esp8266/esp32. Таке життя..

Ну, не прям в кожному, різні бувають. А там де є - то не від хорошого життя, а за принципом "краще так, ніж ніяк".

Неактивний

#23 Сьогодні 17:07:32

Kino
Учасник
Зареєстрований: 2019-02-28
Повідомлень: 123

Re: Розмір прошивки

jokeer пише:

До речі, в кожному радіокерованому дроні є esp8265/esp8266/esp32. Таке життя..

Слышал, но не видел. В основном ardupilot на F411-473.

Неактивний

#24 Сьогодні 17:16:14

jokeer
Гість

Re: Розмір прошивки

В elrs/lora трансівері.

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму