LINUX.ORG.RU

Сообщения Vit

 

Лезет .data.impure_data из newlib, помогите избавиться

https://github.com/puzrin/dispenser ветки dev и standalone

Скрещиваю stm32cubeMX с PlatformIO. Хочется с одной стороны быстро мышкой валять конфиги, потому что очень много корректировок. А с другой, чтобы с самим проектом было удобно работать, т.к. конфиги - далеко не все.

Ну, в общем, оно работает, но захотелось пойти дальше - отказаться от того stm32cube который идет с pio, и компилять те сорцы которые родит куб. Смысл простой - когда все из одного места, меньше гимора что разъедутся версии инициализаторов и основного кода.

В общем, покопался в сорцах, почитал доку и слепил необходимые скрипты, все в ветке «standalone». И оно даже ок. Но вылезла проблема - видимо я все-таки что-то продолбал, и билд теперь отжирает килобайт оперативки под какую-то пургу «.data.impure_data». Вроде в интернетах народ с таким знаком, и рецепты дает, но я уже сто раз ключики сборки перепроверил, не нашел косяка.

Кто-нибудь может помочь разобраться? Я в сях и Scons совсем жопорук.

 , , , ,

Vit
()

А вот посоветуйте мощную настольную светодиодную лампу

Речь о лампах на пантографе, со струбциной. По непонятной мне причине, у светодиодных мощность всего 5-7W (обычно с питанием через USB). Найти мощнее с ходу не получилось. Точнее, нарыл такое, но там уже размер совершенно конский (хотя лампа реально крута).

Хочется компактную, с вращением везде где можно, эдак 20W, c регулировкой яркости. В идеале - еще и с подстройкой цветовой температуры. Цена не критична.

Можете посоветовать какие-то модели?

 ,

Vit
()

Бывают ли мягкие кабели Type-C <=> Type-C на 3А?

Хочу совсем мягкие метровый кабель Type-С на 3 ампера. Можно не полноценный, но с поддержкой USB-PD (пины сс0/сс1).

https://ru.aliexpress.com/item/32959147241.html - нашел пока «силиконовые», но они только на 2 ампера, и Type-C только с одного конца.

Можете что-нибудь посоветовать?

 ,

Vit
()

Resistive touchscreen напрямую к stm32 (4 wires). Норм или не стоит?

Нужно подключить 4-проводной резистивный тачскрин к stm32 (дисплей 320*240 2.4"). Вариантов 2:

  • поставить специальный интерфейсный чип за 15-30 центов.
  • завести напрямую (питать с GPIO, без дополнительных ключей).

Какая-то особая точность не нужна, там интерфейс с большими кнопками, не промажешь.

Если я правильно понимаю, внешний чип позволил бы увеличить точность измерений (за счет дифференциального подключения АЦП), но все равно тайминги надо будет выписывать ручками (задержки после перекоммутации АЦП, фильтрацию). То есть, код проще НЕ станет.

Собсна, вопрос. Если меня устраивает 8 бит точности и не надо мерить силу нажатия, есть ли смысл приворачивать внешний чип? Не то чтобы он мне мешал или денег жалко, просто не могу понять профит.

Ну да, на прямом включении сопротивление ключей GPIO внесет дополнительную погрешность, и пульсации по питанию будут срать. Но вроде это калибровкой и фильтрацией должно порезаться (если на точность 10 бит не замахиваться). Или нет?

Кто-нибудь подрубал мелкие резистивние тачскрины к микроконтроллеру напрямую? Как оно в реальной жизни?

 , ,

Vit
()

Посоветуйте высокотемпературное прокрытие для уменьшения ИК излучения

Настало время поплотнее заняться reflow-паялкой. Самый проблемный момент - как примотать керамический нагреватель (MCH 50x50mm 40W) к плате, чтобы она не сильно грелась.

Пробовал всякие китайские аэрогели в качестве прокладок… в общем это фуфломицин. Помимо того что пылит какой-то пудрой, он все-таки нагревается, и потом из-за него керамическая пластина долго остывает.

Решил делать с воздушным зазором. Конвекции вниз особо нет, но остается ИК-излучение. В теории, надо одну сторону нагревателя делать черной, другую зеркальной. Ну из того что я знаю, выбор по материалам не богатый, решил красить.

Верх закатал черной матовой Certa. Низ - Siana HQ зеркальный хром (она единственная в линейке высокотемпературная). Дальше подал напряжение и подносил ладонь на пару сантиметров :). Разница охренеть какая.

  • С черной стороны пластины конкретно жарят.
  • Неокрашенная беловатая поверхность, местами потемневшая от следов пальцев, греет довольно прилично
  • Окрашенная «зеркальным хромом» греет заметно слабее. Хотя ощущения штука субъективная конечно.

Хочется закрепить успех. Что-то этот «зеркальный хром» подозрительный. Поверхность какая угодно, но не зеркальная. И металлическая пыль облетает если пальцем потереть. Может есть какие-то еще способы сделать совсем зеркало, которое бы 300 градусов держало? Меня что угодно устроит, хоть зеркальная пленка на липкой основе, если клей выдержит.

PS. Также буду признателен за совет по клею на 400С. Только не экзотику типа ВК20 который 5 дней сохнет. Надо с алиэкспресса. Хочу панасониковскую графитовую термопленку сверху прилепить, чтобы температуру поверхности выровнять.

 mch,

Vit
()

float to string на эмбедах, без sprintf, как?

Посоветуйте, чем можно обычный float перегнать в строку, с заданной точностью? А то по всяким stackoverflow какие-то васянские снипеты и мутные самоделки с непонятными лицензиями. Сейчас юзаю sprintf, но он помимо жирности кастует float в double, что вызывает дополнтельное распухание зависимостей.

Мне не надо наворотов sprintf, хватило бы просто «распечатать с XX знаками после запятой», можно даже без отрицательных значений. Может есть какие-то известные библиотеки, от которых эмбед не треснет?

PS. Закопипастить 30 строк кода всегда успеется. Сначала хочу попробовать найти и заюзать библиотеку.

 , ,

Vit
()

Прошивка STM32F072CBT6 по USB, boot0 параллельно кнопке джойстика нормально?

https://easyeda.com/puzrin/dispenser

Обнаружил, что накосячил в схеме, и девайс не загнать в режим прошивки по USB. Надо как-то это пофиксить дешево и сердито. Пока задумка такая - поправить джойстик, чтобы вместо земли коротил пины на питание, и подключить boot0 параллельно одному из контактов.

Тогда если воткнуть USB с нажатой кнопкой, то запустится загрузчик. А если просто подать питание, то запустится прошивка и дальше состояние boot0 не должно иметь значения. Но это в теории. А на практике как? Какие-то подобные эффекты? Спрашиваю, потому что ни разу не имел дел с этими чипами.

Ну и минутка рекламы https://github.com/puzrin/dispenser :). Наконец-то покончил с библиотекостроительством, и начал лепить пошивку. С гуями получается довольно бодро. Скриншот в ридми. Фонты генерятся из TTF. Ради этого долго страдал, изобретал новый формат и писал конвертор. Там нормальный кернинг и хинтинг. Если разработчики LVGL осилят, будет еще и субпиксельный рендеринг.

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

 

Vit
()

Как развести питание аналоговой части stm32xxx?

Видел аппноты, на тему «как улучшить точность данных АЦП» для разных микроконтроллеров, но там слишком обще и нет конкретных цифр. Оставим в стороне выключение ядра при работе АЦП и прочие тонкости. Интересует только то, что связано с питанием аналоговой части.

На схемах из интернетов видел такие вещи:

  • RC-фильтр
  • LC-фильтр
  • «проходной» фильтр, типа LC, но вместо L «трубка с продетым проводом».
  • та же конструкция с псевдо-индуктивностью (не знаю названия), но не только в разрыве аналогового плюса, но и в разрыве аналоговой земли.

Хотелось бы комментариев:

  1. A как вообще «правильно»? И какие еще есть варианты.
  2. Можно ли питать процессор от мегагерцовой импульсной понижайки без промежуточного аналогового LDO, или про точность АЦП можно забыть? Вроде по паспорту там пульсации порядке 10мВ - не так уж и много (нужно мерить ~ 1мв, и есть возможность юзать программные накопительные фильтры).

 , ,

Vit
()

Как правильно паять LQFP и LGA?

Хочу разобраться, насколько легко паять LQFP / LGA в хоббийных условиях. Во-первых, потому что акселерометры кроме как в LGA не делают. Во-вторых, некоторые процы доступнее в LQFP, и занимают меньше места.

https://easyeda.com/puzrin/solder-training-board

Накидал плату для тренировок, осталось понять, как паять правильно. Я видел несколько вариантов:

  • облуживают только плату (типа эмулируют накатку шаров), потом сверху LQFP и греют.
  • облуживают только чип и т.д.
  • облуживают и плату и чип.

Какие вообще варианты наиболее толерантны к не сильно прямым рукам? И чтобы микроскопа не требовали.

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

И еще есть вопрос насчет центральной площадки под LQFP. Как там лучше расставить отверстия, чтобы излишки припоя стекали?

 , lqfp,

Vit
()

Посоветуйте очень компактный 2-контактный разъем на плату

Нужно подключать к плате ножную педальку, через разъем. Хочется покомпактнее такого.

«просто иголки под 90 градусов» ставить не хочу, т.к. не желательно чтобы торчали открытые, и термоусадку сажать неудобно (чтобы контакты не перекрыла).

Посоветуйте, где еще можно посмотреть, кроме питания и аудио.

 разъем

Vit
()

Присоветуйте UI :) для диспенсера паяльной пасты.

https://github.com/puzrin/dispenser

Делаю моторизованный дозатор паяльной пасты. Типа такого. От словацкого будет отличаться тем, что не нужна токарка и возможно не нужен отдельный программатор. От того что выложено на thingiverse - ну там вообще здоровые страховидлы. В общем, цель - сделать мелкую штуку из говна и палок, которую не жалко. Чтобы вместо перестановок шприцов сделать на каждый свой дозатор, и было недорого и просто.

Возник вопрос к пастопаятелям, а какие нужны фичи, чтобы было удобно? Единственный элемент управления - 5-позиционный джойстик-кнопка. Ну и светодиоды.

Пока надумал такое:

- влево-вправо - меняем скорость выдавливания
- вперед - выдавливаем

Под вопросом:

- короткое вперед - выдавливаем фиксированную порцию. Но тут непонятно, можно ли ее менять параллельно со скоростью, т.к. максимум зависит от диаметра иглы и вязкости.

Кто активно юзает хоть какие-нибудь разновидности диспенсеров (ручные, пневмо и т.п.)? Напишите какие у вас типовые задачи.

PS. Я в курсе про трафареты, но на мелких штучных платах дозатором проще. Да и для флюсов тоже удобно.

 ,

Vit
()

Дождались! Реестры пакетов от майкрософт на гитхабе

http://www.opennet.ru/opennews/art.shtml?num=50667

Майкрософт привернул к гитхабу собственные реестры npm, docker, mvn, nuget и gem. Потому что разработкой опенсорсов должны заниматься лохи, а деньги с этого получать те, кто этого достоин :)

 

Vit
()

Зацените спеку и конвертор битмапных шрифтов для эмбедов

https://github.com/littlevgl/lv_font_conv/blob/spec/doc/font_spec.md

Столкнулся с тем, что в эмбедах ну очень стремные шрифты. Векторные на ходу рисовать железки не тянут, а битмапные народ лепит без поддержки кернинга, с убогим сжатием и т.п. В общем, сел писать спецификацию и конвертор. Совсем с нуля колбасить не стал, вытянул ограниченное подмножество из OpenType/TrueType и приспособил под битмапы. Вроде вышло неплохо и достаточно универсально, нохотелось бы чтобы заценили те, кому подобная вещь нужна.

В отличие от u8g2, который точился под совсем чахлые AVR и поддерживает только битональные глифы, данная спека ориентирована больше под ARM и шрифты с анти-алиасингом. Чтобы рисовать красивые интерфейсы вроде Material Design. Но простенькие шрифты для OLED тоже поддерживаются и занимают совсем мало места. Всякие навороты вроде вертикального кернинга для арабского и акцентов, лигатуры и т.п. не поддерживаются «за ненадобностью».

Сам конвертор сделан на node.js и позволяет склеивать несколько шрифтов, менять коды символов, и вырезать только необходимые подмножества глифов. В основном сделано для того, чтобы сливать вместе английский + дополнительные европейские языки + CJK + иконки. Таким образом можно уйти от ада, когда разработчики хранят в репах «шрифты от васяна» с непонятными лицензиями и источником, и заскриптовать генерацию из ttf/woff.

Это все делалось с дальним прицелом под Rust, но поскольку он еще «не совсем готов» для эмбедов, будет использоваться с LittlevGL (надеюсь).

Посмотрите, чего еще не хватает, что не понятно, ну и поиграйтесь с конвертором. Прогресс, прмеры запуска и комментарии по размерам можно посмотреть тут https://github.com/littlevgl/lvgl/issues/995.

 

Vit
()

Сахарная вата

Решил вспомнить «вкус детства». Купил девайс под названием Smile CFM 1081 аж за 1300 рублей, эту самую вату делать.

И чего-то этот самый вкус не того... не вспоминается... Ну прикольно конечно, но как-то на один раз. А на озоне в отзывах взрослые тети и дяди прям слюни счастья пускают в отзывах. Аж завидно. Может я чего не так делаю?

Тут есть специалисты по вате :)? У меня еще здоровый мешок ароматизаторов для вейпинга валяется (они по факту все пищевые). Может капнуть на сахар?

Vit
()

Как правильно посчитать baseline для строки?

Нужно на МК печатать текст в строке. Без наворотов, смешивания нескольких фонтов, раздувания лайнбокса и т.п.

Как правильно посчитать положение baseline шрифта внутри строки?

https://iamvdo.me/en/blog/css-font-metrics-line-height-and-vertical-align - частично осилил эту статью, но там нигде явно не описано положение em-square относительно (ascent+descent)

 baseline, ,

Vit
()

Бывают ли человечьи Immediate Mode GUI?

Я тут столкнулся с понятием Immediate Mode GUI. Начинается там все со стандартного «MVC плёха» но дальше чувствуется запах серы :). Я в принципе положительно отношусь к выпиливанию стейтов, но делать это ценой смешивания кода со всем чем-то можно - как-то подозрительно. Как там анимацию приделывать - вообще непонятно.

Там есть вообще какая-то приличные по современным меркам реализации, пригодные на что-то большее чем накладывание субтитров на видео? Возможно мне попадались не самые лучшие библиотеки.

 , imgui

Vit
()

Посоветуйте алгоритмы сжатия битмапных шрифтов

Есть желание пожать битмапные фонты для тощих эмбедов. Т.к. с памятью не очень, а фонтов хочется хранить побольше, чтобы показывать Material Design во всей красе. https://github.com/littlevgl/lv_examples/issues/26#issuecomment-473279547 - тут примеры «картинок», которые в итоге хочется отрисовывать.

- Фонты размером от 8px до 32px
- Пиксели черно-белые, обычно от 1 до 4 бит (зависит от предпочтений юзера).

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

- декомпрессия должна быть простой, и не требовать много памяти
- сжатие желательно от 2 раз на шрифтах от 16px. Иначе мало смысла заморачиваться.

Можете посоветовать что-то более-менее готовое под такую задачу? Не абстрактно «юзай RLE, энтропию и посмотри сжатие факсов», а что-то более проработанное?

PS. То что внутри u8g2 я смотрел, но оно только под 1-битные пиксели, без оттенков.

 

Vit
()

Где найти разбивку символов по языкам?

Подскажите, где в юникодовском стандарте найти списки символов с разбивкой по языкам. Например «только русские буквы».

Нашел только «unicode blocks», но если брать cyrilic, там очень много лишнего.

 

Vit
()

Помогите «изобрести» опции командной строки для передачи кучи однотипных параметров

Изобретаю упаковщик фонтов для эмбедов, и что-то не получается сочинить набор параметров под текущие задачи/парсеры.

Нужно задавать следующие штуки:

- исходные фонты (их может быть много)
- для каждого фонта - свой набор диапазонов и отдельных глифов

Типа, мержить куски из нескольких фонтов в один (например, брать основной фонт и подклеивать к нему немного иконок).

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

Можете привести примеры как это обычно делают через командную строку? В идеале - чтобы можно было питоновским argparse обработать.

 ,

Vit
()

lv_i18n - gettext для embedded c

https://github.com/littlevgl/lv_i18n

Запилил аналог gettext для эмбедов. Поревьючьте пожалуйста. На название внимания не обращайте - привязок к lvgl нет, все универсально.

Смысл примерно такой же как у gettext, только на выходе генерится сишный файл со словариком. В качестве промежуточного формата - yaml, структура как в руби. Чтобы можно было и редактировать и экпорт-импорт с веб-переводилками наладить.

Вроде по архитектуре и workflow нормально получилось. Хотя возможны мелкие косяки, типа туповатых регулярок в сканере текстов.

 ,

Vit
()

RSS подписка на новые темы