-
- в nano был printf без плавучки, и с буфером для него нужно было
ручками рулить. может чего изменилось - Vit(28.02.2026 23:30)
- включил плавучку, разница примерно в 1,5к. включил FPU - еще
немного разницы - POV(01.03.2026 00:05)
- я о printf - Vit(01.03.2026 00:05)
- ЕМНИП, newlib printf подтягивает malloc/free. Если жалко килобайты,
лучше заменить на что-нибудь типа такого: SciFi(1 знак., 01.03.2026 00:19, ссылка)
- по случаю бывает и не жалко, а в общем согласен. интересно, как в последних версиях - printf имя так и осталось замакросенное? - Vit(01.03.2026 00:43)
- А если только sprintf использовать, все равно аллокаторы потянет? Eddy_Em(242 знак., 01.03.2026 00:30)
- ... там куча говна... факт: ваша программа на 90% состоит не из
вашей программы а из libc/newlib/тра-та-та... причем эти
"тра-та-та" на 90% в случае не крупного embedded состотит из
printf/scanf + malloc/free/exit. выводы: a) 0.81 доля прошивки
обычного embedded-обывателя - мусор. б) не линкуйте ничего внешнего
кроме своего кода! то что нужно выдирайте и портируйте по месту. в)
пунк б - это дорого больно и неприятно, капитализьм негодуе на меня
за такое - оно мешает klen(79 знак., 01.03.2026 14:37, +1)
- а из библ линкер не выкидывает неиспользуемое? - POV(02.03.2026 15:37)
- picolibc VVB(409 знак., 02.03.2026 09:08, ссылка)
- Я больше скажу. Можно отключить линкеру подтягивание стандартной
библиотеки, а нужные функции добавлять в проект в виде исходников
откуда угодно. Что-то я отсюда брал: SciFi(1 знак., 02.03.2026 09:10, ссылка)
- моя схема такая же - выдираю из diet libc функции. если можно
оптимизировать с учетом архитектуры кортексиков(stm32xxxx) и ядер
qk (ch32vxx) делаю из них обертки С++ и складываю в один хидер. либ
у меня нет вообще - все мержится в один исходник для более
благоприятных условий оптимизатора, линкеру отается только LTO. от
printf-like избавился - т.к. я похоронил С и полностью перешел на
C++, сделал шаблонные cout cin - мне радость быстрота и
безопасность стека. klen(1 знак., 02.03.2026 13:40, ссылка)
- заглянул. извините, но memcpy иногда защищённый (с перекрытием областей, а не насчёт NULL-pointer) требуется. - Vit(03.03.2026 13:30)
- Ну ты и монстр. - VVB(02.03.2026 15:19)
- моя схема такая же - выдираю из diet libc функции. если можно
оптимизировать с учетом архитектуры кортексиков(stm32xxxx) и ядер
qk (ch32vxx) делаю из них обертки С++ и складываю в один хидер. либ
у меня нет вообще - все мержится в один исходник для более
благоприятных условий оптимизатора, линкеру отается только LTO. от
printf-like избавился - т.к. я похоронил С и полностью перешел на
C++, сделал шаблонные cout cin - мне радость быстрота и
безопасность стека. klen(1 знак., 02.03.2026 13:40, ссылка)
- Я больше скажу. Можно отключить линкеру подтягивание стандартной
библиотеки, а нужные функции добавлять в проект в виде исходников
откуда угодно. Что-то я отсюда брал: SciFi(1 знак., 02.03.2026 09:10, ссылка)
- Это уж не про меня ☺ У меня нет ни аллокаторов, ни printf'ов… - Eddy_Em(01.03.2026 17:55)
- Вы подскажите ему, мне и всем кто не знает, как посмотреть, что и сколько занимает. objdump если я не путаю. А есть ещё возможность зависимости вызовов строить... - Dingo(01.03.2026 15:54)
- А что не так с бабками? Они хорошие. С ними лучше, чем без них. А
хороший код? Его в рамочку и на стену, чтобы любоваться, что ли?
:-) - SciFi(01.03.2026 14:40)
- с бабками "не то" то что их вывели в ранг культа секты
человеческой. на верно не сильно ошибусь если предположу что вам
уже за писят.... не пора ли подумать о вечном? темный тjнель в
перспективе не пугает? - klen(01.03.2026 15:52, +2)
- Забавно слышать это от человека, который вывел в ранг культа секты "хороший код" :-) - SciFi(01.03.2026 16:39)
- с бабками "не то" то что их вывели в ранг культа секты
человеческой. на верно не сильно ошибусь если предположу что вам
уже за писят.... не пора ли подумать о вечном? темный тjнель в
перспективе не пугает? - klen(01.03.2026 15:52, +2)
- ... там куча говна... факт: ваша программа на 90% состоит не из
вашей программы а из libc/newlib/тра-та-та... причем эти
"тра-та-та" на 90% в случае не крупного embedded состотит из
printf/scanf + malloc/free/exit. выводы: a) 0.81 доля прошивки
обычного embedded-обывателя - мусор. б) не линкуйте ничего внешнего
кроме своего кода! то что нужно выдирайте и портируйте по месту. в)
пунк б - это дорого больно и неприятно, капитализьм негодуе на меня
за такое - оно мешает klen(79 знак., 01.03.2026 14:37, +1)
- ЕМНИП, newlib printf подтягивает malloc/free. Если жалко килобайты,
лучше заменить на что-нибудь типа такого: SciFi(1 знак., 01.03.2026 00:19, ссылка)
- я о printf - Vit(01.03.2026 00:05)
- включил плавучку, разница примерно в 1,5к. включил FPU - еще
немного разницы - POV(01.03.2026 00:05)
- Ого! Там картинки что ли и куча шрифтов? - Eddy_Em(28.02.2026 23:05)
- несколько векторных шрифтов - POV(28.02.2026 23:17)
- ооо.... красная тряпка... ну давай станцуем с ключиками. под какой
проц компиляеш, дай список ключей на компиляции и ликовке.
попробуем пожать бинарь, если скорость не нужна. ты не платишь
кейлу. - klen(28.02.2026 22:59)
- make мне сделал болван на основе моего, передылвал кое-что из
старого-неуклюжего... POV(606 знак., 28.02.2026 23:15, ссылка)
- плавающая запятая используетя? нужна? - klen(01.03.2026 14:25)
- да, много - POV(01.03.2026 15:08)
- Зачем soft-float, если там FPU есть? Eddy_Em(32 знак., 01.03.2026 00:01, ссылка, ссылка)
- Я знаю. Для отладки пока отключил, затем включил POV(1 знак., 01.03.2026 00:03, ссылка)
- Странно: как hard-float может дать больше кода, чем soft-float? У
меня ровно наоборот наблюдалось, когда экспериментировал и с тем, и
с этим. Eddy_Em(256 знак., 01.03.2026 00:09)
- Я не очень в теме, но как по мне - хард флоат содержит только работу с FPU (ок, пусть будет периферийный узел), а софт - тащит все необходимые программы для непосредственно расчёта через целочисленную арифметику. - Dingo(01.03.2026 15:43)
- нужно все смотреть - скорее всего данный случай - искоренить double, отсавить только float. есть распространенная ошибка auto z = 1.0 ; приведет к распространению double. нужно auto z = 1.0f ; или принудительно флагом -fsingle-precision-constant - klen(01.03.2026 14:30)
- по умолчанию вроде как везде дабл, и он весь софтовый. если таки
дабл вызывается, то софт-арифметика есть, зато добавляется хардовая
для флоата. насколько вырезается софтовая часть для флоата при этом
- хз - Vit(01.03.2026 00:15)
- Ну, я стараюсь таки обычно только флоатами ограничиваться, а чтобы
не париться и в каждой константе не писать "f", использую
"-fsingle-precision-constant" — так по умолчанию все константы
считаются флоатами без необходимости неявного преобразования из
double. Eddy_Em(268 знак., 01.03.2026 00:19, +1)
- Подозреваю, что предупреждение о неявном преобразовании в дабл,
спасёт Олега от роста объёма кода при включении аппаратной точки. - Nikolay_Po(01.03.2026 09:58)
- оно есть, всё вычещено - POV(01.03.2026 10:03, +1)
- Подозреваю, что предупреждение о неявном преобразовании в дабл,
спасёт Олега от роста объёма кода при включении аппаратной точки. - Nikolay_Po(01.03.2026 09:58)
- Ну, я стараюсь таки обычно только флоатами ограничиваться, а чтобы
не париться и в каждой константе не писать "f", использую
"-fsingle-precision-constant" — так по умолчанию все константы
считаются флоатами без необходимости неявного преобразования из
double. Eddy_Em(268 знак., 01.03.2026 00:19, +1)
- Странно: как hard-float может дать больше кода, чем soft-float? У
меня ровно наоборот наблюдалось, когда экспериментировал и с тем, и
с этим. Eddy_Em(256 знак., 01.03.2026 00:09)
- Я знаю. Для отладки пока отключил, затем включил POV(1 знак., 01.03.2026 00:03, ссылка)
- плавающая запятая используетя? нужна? - klen(01.03.2026 14:25)
- make мне сделал болван на основе моего, передылвал кое-что из
старого-неуклюжего... POV(606 знак., 28.02.2026 23:15, ссылка)
- Если работает каг нада, то чо париться? - mse homjak(28.02.2026 22:56)
- Так 50к прилетело. Это мне не очень приятно, не так много места
остается под доработки - далее во флеши накопитель. - POV(28.02.2026 23:09)
- Ну, дык, пользуй Кейл, если он даёт меньший код. Я к этому. - mse homjak(01.03.2026 00:08)
- пришло время лицензионной чистоты ((( - POV(01.03.2026 09:50)
- По опыту, добавление в прожэкт функционала, на объёме сказывается
так себе. Все библиотеки подключены, все накладные расходы
понесены, а логика места много не занимает. Килобайт-два-три,
туду-сюду. Ну понятно, если вдруг понадобилось какой стек
УСБ/эзернет поднять, сожрёт скока-то. - mse homjak(01.03.2026 12:42)
- Да что там того USB? 4кБ флеша + сколько не жалко ОЗУ на буферы. Eddy_Em(95 знак., 01.03.2026 12:46)
- Ну мало ли, вот стока и не хватит. Чо делать? - mse homjak(01.03.2026 12:48)
- Хз. У меня никогда не было ситуации, чтобы не хватало 32кБ флеша. Ещё и место остаётся, чтобы настройки хранить. Eddy_Em(290 знак., 01.03.2026 12:53)
- Ну мало ли, вот стока и не хватит. Чо делать? - mse homjak(01.03.2026 12:48)
- Да что там того USB? 4кБ флеша + сколько не жалко ОЗУ на буферы. Eddy_Em(95 знак., 01.03.2026 12:46)
- По опыту, добавление в прожэкт функционала, на объёме сказывается
так себе. Все библиотеки подключены, все накладные расходы
понесены, а логика места много не занимает. Килобайт-два-три,
туду-сюду. Ну понятно, если вдруг понадобилось какой стек
УСБ/эзернет поднять, сожрёт скока-то. - mse homjak(01.03.2026 12:42)
- пришло время лицензионной чистоты ((( - POV(01.03.2026 09:50)
- анекдотец напомнило Vit(1 знак., 28.02.2026 23:19, картинка, +2)
- Не может быть, что у тебя 250 КБ кода. У меня когда файлы для
вебморды стали поджимать, я выселил их во внешнюю флешку, например. - SciFi(28.02.2026 23:10)
- Таки свой формат под свой рендер! Tektur 160 символов (у него
только LINE) например в 10к уложился! - POV(28.02.2026 23:30)
- А смысл? Место под код закончилось :-) - SciFi(28.02.2026 23:31)
- Да, из мегабайта половина отдана под накопитель. а еще загрузчик
место ест. Пока укладываюсь, но если будет развитие проекта, уже
начнет поджимать. - POV(28.02.2026 23:33)
- Блин, что за мода пошла, пользовать програм флэш под накопители?
Есть-жэ QSPI, мегабайтные флэшки, по цэне говна. Нет норот экономит
3 копейки, а потом уродуется со сбоями и дырами флэши, порченной
програмной памятью итыды. - mse homjak(01.03.2026 12:47)
- Кроме ат45 всё неудобно, надо зеркало страницы держать. Все как со
своей флешкой. Для мелких МК писец как неудобно. А для больших -
так зачем дополнительную флешь? - POV(01.03.2026 16:58)
- Да, АТ45 с двумя буферами, были агонь-агонь. - mse homjak(01.03.2026 18:06)
- Даже один буфер рулил POV(1 знак., 01.03.2026 19:39, ссылка)
- если есть DMA на SPI, то лучше без AT45, ибо они сами подорвали с
буквы D доверие к рандомной дозаписи. остальные плюшки перестают
быть интересны - Vit(01.03.2026 17:25)
- Что-то я не припоминаю возможность дозаписи [страницы] в ИМС ревизии D... Да и в документации не нахожу. С NAND'ами нет путаницы? - Toчкa oпopы(02.03.2026 12:30)
- Я массово использовал D - нет проблем. Но сейчас помимо E наверное
и не купить. - POV(01.03.2026 17:46)
- я тоже проблему не получал. но производитель пугал - Vit(01.03.2026 18:28)
- Да, АТ45 с двумя буферами, были агонь-агонь. - mse homjak(01.03.2026 18:06)
- Время доступа. Из внешней флэшки что-то прочитать на порядок
дольше. А еще для флэшки нужно место на плате, возле процессора,
разводка всех сигналов не абы какая, более высокая чувствительность
к наводкам. Во многих случаях програмная флэш удобнее внешней. - AlexBi(01.03.2026 13:43)
- Ну, накопитель на флэш, одним тока временем стирания-записи
угандошит время доступа. На этом фоне QSPI на 50МГц, это так,
поссать вышел.Место нужно, но зачем рядом? и как на каких-то сратых
сантиметрах, что-то наведётся? А нащщот надёжности, у меня товарищ,
телеки ремонтирует. так у него, долгие годы, была кормящая сися,
семейство каких-то телеков, где настройки всего, с пульта,
хранились во флэши проца. И в процэссе записи или ещо чего, дета
раз в пару лет телек mse homjak(113 знак., 01.03.2026 16:27)
- Подразумевается, что "накопитель" будет использоваться для записи
очень редко, а для чтения очень часто. Сантиметры на плате не сами
по себе, а в окружении всяких других сигналов, по шинам земли и
питания могут ходить транзитные токи, так и получаются наводки,
пульсации, звон. Зачем усложнять себе жизнь? - AlexBi(02.03.2026 00:59)
- Ну бли-и-и-ин... Какие наводки? Какая жизнь? QSPI, это синхронный
интерфейс, частота 50МГц(ну пусть 100 у продвинутых). Пушпуллы со
всех сторон. Длина линий - сантиметры. "Пульсации, звон, сложная
жизнь..." - mse homjak(02.03.2026 11:19)
- Если только на плате есть что-то ещё, что не любит звон на
дорожках, типа радиоприёмника. А так постоянно ставлю SPI flash, за
много лет ни разу не видел наводок, сбоев. - SciFi(02.03.2026 11:22)
- Видимо мне в этом плане не везет. Пару раз использовалось СПИ-флэш,
и оба раза не удалось заставить ее работать на высокой частоте, шли
ошибки при чтении, приходилось уходить на более низкие частоты и
резисторы для подавления звона. Звон не любит само СПИ, звон на
клоке. - AlexBi(02.03.2026 12:03)
- Тоже сталкивался. Не предусмотрел резисторы и плата в итоге осталась без SPI-флеши. AlexG(111 знак., 02.03.2026 12:58)
- Видимо мне в этом плане не везет. Пару раз использовалось СПИ-флэш,
и оба раза не удалось заставить ее работать на высокой частоте, шли
ошибки при чтении, приходилось уходить на более низкие частоты и
резисторы для подавления звона. Звон не любит само СПИ, звон на
клоке. - AlexBi(02.03.2026 12:03)
- Если только на плате есть что-то ещё, что не любит звон на
дорожках, типа радиоприёмника. А так постоянно ставлю SPI flash, за
много лет ни разу не видел наводок, сбоев. - SciFi(02.03.2026 11:22)
- Ну бли-и-и-ин... Какие наводки? Какая жизнь? QSPI, это синхронный
интерфейс, частота 50МГц(ну пусть 100 у продвинутых). Пушпуллы со
всех сторон. Длина линий - сантиметры. "Пульсации, звон, сложная
жизнь..." - mse homjak(02.03.2026 11:19)
- :) классика Vit(1 знак., 01.03.2026 16:43, ссылка)
- Подразумевается, что "накопитель" будет использоваться для записи
очень редко, а для чтения очень часто. Сантиметры на плате не сами
по себе, а в окружении всяких других сигналов, по шинам земли и
питания могут ходить транзитные токи, так и получаются наводки,
пульсации, звон. Зачем усложнять себе жизнь? - AlexBi(02.03.2026 00:59)
- Ну, накопитель на флэш, одним тока временем стирания-записи
угандошит время доступа. На этом фоне QSPI на 50МГц, это так,
поссать вышел.Место нужно, но зачем рядом? и как на каких-то сратых
сантиметрах, что-то наведётся? А нащщот надёжности, у меня товарищ,
телеки ремонтирует. так у него, долгие годы, была кормящая сися,
семейство каких-то телеков, где настройки всего, с пульта,
хранились во флэши проца. И в процэссе записи или ещо чего, дета
раз в пару лет телек mse homjak(113 знак., 01.03.2026 16:27)
- Кроме ат45 всё неудобно, надо зеркало страницы держать. Все как со
своей флешкой. Для мелких МК писец как неудобно. А для больших -
так зачем дополнительную флешь? - POV(01.03.2026 16:58)
- Блин, что за мода пошла, пользовать програм флэш под накопители?
Есть-жэ QSPI, мегабайтные флэшки, по цэне говна. Нет норот экономит
3 копейки, а потом уродуется со сбоями и дырами флэши, порченной
програмной памятью итыды. - mse homjak(01.03.2026 12:47)
- Да, из мегабайта половина отдана под накопитель. а еще загрузчик
место ест. Пока укладываюсь, но если будет развитие проекта, уже
начнет поджимать. - POV(28.02.2026 23:33)
- А смысл? Место под код закончилось :-) - SciFi(28.02.2026 23:31)
- Таки свой формат под свой рендер! Tektur 160 символов (у него
только LINE) например в 10к уложился! - POV(28.02.2026 23:30)
- Ну, дык, пользуй Кейл, если он даёт меньший код. Я к этому. - mse homjak(01.03.2026 00:08)
- +1. Ну и байки про компиляторы армянское радио придумывает не хуже бедуинов, очевидно, зачёт ему. - SciFi(28.02.2026 22:58)
- Так 50к прилетело. Это мне не очень приятно, не так много места
остается под доработки - далее во флеши накопитель. - POV(28.02.2026 23:09)
- в nano был printf без плавучки, и с буфером для него нужно было
ручками рулить. может чего изменилось - Vit(28.02.2026 23:30)