LINUX.ORG.RU

Сообщения ncrmnt

 

Оценить концентрацию меди в растворе персульфата

 , ,

Как многие знают, при травлении персульфатом когда раствор перенасыщается медью ВНЕЗАПНО оно начинает осаждаться на меди пп, при этом приводя к браку и матерным высказываниям в адрес вселенной.

Так вот. Мониторить это на глаз по «голубизне» как-то некошерно, думал запилить автоматику. Надо мониторить:

  • Концентрацию меди (полосочка HEALTH раствора), пока думаю это сделать датчиком цвета и светодиодом белым. Вроде бы вполне себе метод.
  • Концентрацию, собственно, персульфата, чтобы по мере необходимости всыпать добавку/разбавить.
  • С температурой вопрос вроде бы ясен, PID-loop решает.

В тред приглашается заслуженный химик ЛОРа Dorif.

ncrmnt
()

Дебажим освещение...

 , , ,

На даче проблема - светодиодные лампы на дохнут аки мухи от дихлофоса: в сети ~240 и народ еще постоянно варит, драйвера дохнут быстро и с дымовыми эффектами. Потому решил решить проблему освещения раз и навсегда, заодно добавить колдунство и эльфиек, куда ж без них. Для реализации я вооружился: atmega328p, PT4115 из китаев и nrf24l01. Собственно BOM вышел очень дешев влезает в 5$ не считая самой платы.

Вот теперь и сижу тихо мирно отлаживаю свой адов светодиодный драйвер, получивший кодовое имя «Кровавая Мэри Поппинз» за цвет паяльной маски. Фичи:

  • Есть фича обновления фирмвари по-воздуху
  • До трех программируемых выключаетелей (действия задаются в конфиге).
  • 6 каналов для светодиодов со стабилизацией по току и диммингом. На каждый ток до 1.2А (макс. ток задается смд резистором).
  • 256 уровней яркости на каждый канал. Если нужного номинала токоограничивающего резюка нет, можно дополнительно ограничить яркость в конфиге, пожертвовав некоторым количеством уровней яркости.
  • Есть управление по беспроводному интерфейсу через мою RPC-like приблуду, чтобы потом добавить управление голосом, как дойдут руки.
  • В фоне по нему же сливает периодически данные о напряжениях (цифра / питание диодов / температура (встроенный в atmega328p термодатчик)

Сама железка в окружении bus pirate, uISP + nrf24l01, 6x3W светодиодов (10W больно по глазам бьют. Да и даже от трехватных уже за время отладки плачу, словно эмо).

Видео первого теста с 10W диодом: https://www.youtube.com/watch?v=fnd1b0jGTpM

Собственно, на скриншоте можно увидеть емакс, конфигурационный файл самописного формата (tinyconf), который тупо шьется в eeprom и парсится на железке, кусок ядра самой системы (по привычке все железо-специфичное регистрирую в одном единственном платформо-зависимом файле, так что если припрет эту хрень можно будет без особых проблем перетащить на другую аппаратную платформу). В консоле отладочный выхлоп с платы. Плату для этого прототипа делал сам ЛУТом, в виде маски - тонер цветного принтера. Но так как все тьфу тьфу завелось на следующей неделе буду отправлять заказ на завод, чтобы запилили штучек эдак 30 таких малышек.

Ну и, конечно, proud to be - 146% arduino free!

ncrmnt
()

Вышел rf24boot v0.1

 , ,

Группа Hardware and Drivers

rf24boot — открытый (GPLv2) загрузчик для микроконтроллеров, который позволяет обновлять микропрограмму «по воздуху».

Основные функции:

  • Поддержка произвольного количества разделов, каждый из которых может быть загрузочным (если это поддерживается МК).
  • Простой протокол: основная машина состояния занимает меньше 200 строк.
  • Переносимость: сделан на базе antares, потому может быть легко перенесен на другие архитектуры МК, которые поддерживаются этой системой сборки.
  • Простота настройки: все возможные параметры настраиваются через kconfig.
  • Небольшой Большой размер: Влезает в 4096 байт на архитектуре avr*.

В этой версии пока поддерживаются только 8-битные микроконтроллеры Atmel AVR (в которых есть поддержка функции bootloader и существует возможность задать секцию boot размером хотя бы 4096 байт). Поддержка STM32 будет добавлена сразу как только у автора появится время и необходимость сделать железку с stm32 и nrf24l01.

В виде usb-программатора пока используется OpenHardware проект uISP. В планах есть создание более быстрого usb-донгла на основе stm32.

*) 4096 байт это минимум, сколько я смог получить без серьезных последствий для читаемости кода и не прибивая все гвоздями к архитектуре avr.

Исходный код на GitHub

>>> Подробности в блоге автора (ncrmnt.org)

ncrmnt
()

Переделка ATX БП с 12 на 20 вольт, реально ли?

 , ,

Собственно, спецам. Сам пока схематику не реверсил/раскуривал, но вопрос такой: насколько реально, там обычно опорное резисторами задается или вхардкожено в импульсники?

А то светодиоды оказались с прямым около 14 вольт, с учетом падений на степе и прочим получаю 9 из заявленных 10ти ватт только при напруге питания моего драйвера в ~15 вольт, а там еще падение на проводах будет.

ncrmnt
()

Кровавая Мэри Поппинз

 , ,

Пофиксил ламинатор, запилил маску в стиле «кровавая мэри поппинз».

Пруф: http://rghost.net/private/52560306/4a2486d6489f0cc285d7ad44543cd2ac/image.png

Для тех кто не в теме - плата не заводская, а 100% кустарная. В виде маски тонер от цветного CLP-365

ncrmnt
()

Кому CFLки для Acer AL1732?

 ,

Собственно на операционный стол к пожилому некроманту угодил Acer AL1732, решивший после 5 секунд вырубать подсветку. Ну думаю, на CFL драйвере кондеры беременные. Разбираю, и впрямь не только беременные но уже и родили. Перепаял - все равно в защиту уходит. Видимо крантец лампе. Разбираю матрицу, ампутирую лампы. Одна из 4х CFLек почернела немного, и накрылась. Остальные 3 исправны. Выпилил CFLки, наклеил светодиодные ленточки с белыми диодами, запитал от входных 12 вольт. В итоге получил новомодный моник с LED подсветкой, с которого сейчас и пишу этот пост. . За сим у меня нарисовались три здоровые CFL лампы и драйвер для них. Отдам самовывозом в мск, если кому надо для реанимации схожих моников. Драйвер - все каналы здоровы (проверял).

ncrmnt
()

Меня что, укусил кто-то?

 ,

Стал обращать внимание на прогрессирующее развитие неприязни к солнечному свету. Днем тяжелее заставить себя работать, мысли текут медленнее, а с наступлением темноты наоборот повышается работоспособность. По молодости было не так заметно, а теперь что-то совсем жесть. Что-то так и подмывает перейти на режим где днем спать а ночью бодрствовать. Укусов на теле нет, питаюсь нормально, святой воды и крестов не шарахаюсь, глаза здорового красного цвета. Что посоветует ЛОР-врач?

ncrmnt
()

Нашел тут крутой OSHW...

 ,

ncrmnt
()

ЛУТ 90го уровня.

 , ,

Таки запилен: http://pics.ncrmnt.org/index.php?album=junk/colorsilk/

Правда, ламинатор я убил внезапно... Но это поправимо. И драйвера CLP-365 по ходу придется патчить, чтобы он тонера не жалел.

ncrmnt
()

USB-Ламинатор с WEB-интерфесом: нанесение маски

 ,

В общем, для тех кто пропустил - сделал вот такую вот вундервафлю. И тут приходит мне пятничная мысль в голову. А можно ли запилить им паяльную маску? Оказывается - можно

Больше фоток

В общем, пора покупать цветной лазерник...

ncrmnt
()

цветной лазерный/светодиодный принтер

 ,

Посоветуйте сабж.

Хочется: Температура плавления тонера не более 200 градусов, возможность отключения экономии тонера, равномерный и щедрый залив тонером больших плигонов. 600dpi как минимум, возможность печати на тонкой бумаге и мелких кусочках. Разумеется, поддержка линуксом, желательно cups'ом из коробки. Ну и цена не более 10 * 10^3 деревянных.

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

Применение: ЛУТ

ncrmnt
()

WEB 2.0 USB-Ламинатор

 , ,

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

Разумеется, нужную температуру оно не докочегаривало, тонер даже не плавился и не переводился, сколько не прокатывай. Разобрал. Выпилил оттуда термореле, на герметик для формирования прокладок двигателя (держит до +375 градусов!) посадил 100к NTC терморезюк в стекле, сделал платку управления на atmega48. Внутрь зашил фирмварю на базе antares и vusb. Далее набыдлокодил апплет для своего lunartool'а (моя convenience обертка над lualibusb).

Дальше решил раскурить lapis. Это такой аппликейшн сервер на moonscript и OpenResty. За один вечерок освоил мунспик^Wмунскрипт, и набыдлокодил расширение для своего lunartool'а которое берет уже написанный апплет, но вместо интерфейса командной строки цепляет его к веб-серверу уже готовым API, которое можно дергать ajax'ом. Для построения графиков я заюзал js библиотеку flot.

Итогом моего сумасшествия стал... WEB 2.0 USB ламинатор с веб интерфейсом. Подобрав температуру, которая очень уж хорошо совпала с теоретическими 176 градусами получил идеальные результаты и практически 100%-ю воспроизводимость.

Вундервафлю в действии можно увидеть тут: http://www.youtube.com/watch?v=IpNvShfgSik&feature=youtu.be

Отдельное спасибо bk_ за музыку, за которую тытруб не блокирует видео и не обмазывает рекламой. Исходники надо?

ncrmnt
()

Навител готов

 большая политика, ,

... Для межзвездных перелетов и большой политики.

http://ncrmnt.org/wp/wp-content/uploads/2013/12/IMG_2431-1024x575.jpg

Для Ъ: Украина несовместима с Республика Беларусь, Земля.

Кстати, как в Белоруссии с 3g/EDGE? Для покупки симки паспорт нужен, али на каждом углу как в Крыму? Какого ОПСОСА выбирать?

ncrmnt
()

О размере кода.

 , , ,

Сейчас пытаюсь ужать библиотечку для работы с nrf24L01 до вменяемых размеров, чтобы еще сильнее ужать свой бутлоадер для обновления фирмвари... При этом пытаюсь не превратить сам код в нечитаемое УГ. После игр с флажками компилятора, добавления -Wl,relax и еще пятка флажков помимо -Os вроде стало ужиматься в 4к. Думаю... С хрена 3/4 кода выжирает сама библиотека. Стал смотреть листинг. В общем забавно достаточно, оказалось. На авр:

* вызов функции foo() обойдется в 4 байта.

* вызов функции по указателю 8 байт

* вызов функции из структурки obj->foo() - 24 байта

Впрочем, это С. Тут все не так плохо. А если использовать плюсы - вызов метода класса foo.bar() обойдется нам в 34 байта !!!! Это к тому почему я считаю плюсы на 8битной аврке наркоманией

ncrmnt
()

Не проходит прекомпиляция asset'ов.

 , ,

Debian wheezy, развертыаю gitlab.

bundle exec rake assets:precompile RAILS_ENV=production --trace выдает страшнющий трейс и валится. Выхлоп: http://p.ncrmnt.org/99/

В dmesg при этом появляется веселенькое такое упоминание: [108663.023736] Unhandled prefetch abort: breakpoint debug exception (0x002) at 0xb4dbecb4

В какую сторону копать?

ncrmnt
()

Кому тут openssl speed на odroid-x2?

 , красногдазие

Все это добро крутится на debian wheezy armhf. Отмечу, что тесты тут юзают только одно ядро. Если сравнивать с cubieboard, то видно что некоторые тесты будут быстрее даже на меньшей в два раза частоте камня из-за того, что боттлнеком является память. (DDR2 vs DDR3) На arch linux arm будет быстрее из-за более агрессивной оптимизации под более поздние камни.

http://p.ncrmnt.org/96/ (спрятал на копипасту специально для операюзеров)

И да, у нас в сортире^Wсерверной сегодня deploy

Воткнул второй odroid-x2. Стойка резана под них на лазере, шпильки М4. Дополнительно еще планируется парочка этажей. Жесткие диски тут временно, уйдут в планируемый NAS с RAID-5. Заодно докрутил u-boot на x2, чтобы завелось usb и чтобы брал ядро с роутера по tftp, так что теперь обновление ядра производится заливкой zImage-odroid на в /tftp на роутер. К слову там еще только предстоит развернуть наконец-то nginx и продумать как мне лучше перераспределить нагрузку на два узла и дождаться когда приедут из китая печатки под мой кастомный APC с блэкджеком и gsm модулем. Заодно призвал на стену демона красноглазия, чтобы неустанно смотрел своими глазами на сервак и хранил его от аппаратный сбоев ;)

ncrmnt
()

KDE4 на Pipo Max M6 Pro 3g

 , ,

Итак, пожалуй уже есть чем похвастаться. Самый, так сказать первый вариант, преальфа. Надоело мне ждать пока KDEшники запилят свой планшет, потому решил сделать это сам.

Да, девочки, Debian Wheezy на armhf это вам не розовая Gentoo на x86. Это свое, особое красноглазие не для слабонервных ;) После чудных приключений в 4х сериях я таки запустил (пока поверх fb и с sd карты (ядро в нанде)) KDE4 на RK3188. Как это не странно, но гуй не особенно тормозит даже на позорном тормозном софтовом рендере, включая перетаскивание и ресайз (хотя матрица-то 2048х1536). Артефакты имеются на сложных лейаутах но отчего и почему только предстоит выяснять.

Прошлые серии детектива: [ один | два (linux.org.ru)| три (linux.org.ru)| четыре ]

Собственно, с 4й серии изменилось немного. Я немного докрутил драйвер lcdc0, чтобы завелся без проблем fbcon по дефолту. Заодно теперь оно не паникует при попытке прочитать disp_info в /sys/class/graphics/fb0/. Более того, оно и лог загрузки теперь стало без проблем выводить и даже с цветом. Жаль только лого при включенном fbcon оно не рисует.

Выпилил к чертям свинячьим RK_EARLYPRINTK и эпичный костыль с консолью поверх FIQ дебаггера (sic!). Там где-то был рейс намертво вешавший иногда систему, потому как только я избавился от этой содомии все стало намного стабильнее и отзывчивее.

Немного разгреб костыли в board файле и добавил поддержку звука, хотя пока еще не проверял еще.

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

Немного докрутил степпинг частоты DDR, на 600 Mhz работает стабильнее и сильно быстрее.

Немного докрутил степпинг проца по частоте, выставив заявленные 1.8Ghz вместо 1.6Ghz в пределе. Пока полет нормальный.

Ну и, наконец, самое главное - я запустил KDE4. Пока поверх /dev/fb0, без мали, в моем ядре нет даже упоминания о том, что оно существует. Есть в соседнем бранче ядра откуда надо это дело перетаскивать и раскуривать если что будет не так.

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

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

Следите за новостями и подписывайтесь на тег rk3188. Образы и сырцы будут выложены на шитхаб сразу, как только будет рабочая (более или менее) система с работающим более или менее мали. А еще там on2 нетыканный...

Сам скриншот

ncrmnt
()

rk3188: дисплей

 ,

Продолжаем наш нерегулярный сериал в толксах про треш, угар и линукс. Злобный некромант против чуда китайской мысли, Pipo MAX M6 Pro.

[ первая серия | вторая серия | третья серия ]

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

Острой проблемой стоял дисплей, ибо без него все остальное будет просто бесполезнейшим бесполезняком. Проблем добавляло то, что именно моя LCD матрица в ядре никоим образом не упоминалась, что наводило на очень неприятные мысли о том, что тайминги придется добавать с матами, при помощи дизассемблера, мата и грубой силы. Ибо документации у меня было чуть меньше, чем вообще нихрена. Повезло, что в #linux-rockchip люди могли рассказать то, что не написано в документации даже мелким шрифтом на китайском и безо всяких NDA. Но не по поводу LCDC, ибо в основном там тусовка крутится вокруг андройд-стиков типа UG802 и тому подобных.

Итак, начнем с подключения. На LCDC0 и попутно на i2c-2 шине висит некая хрень, зовущаяся anx6345, являющаяся eDP трансмиттером. Документации на нее чуть меньше, чем вообще никакой, но суть примерно такая: входит в нее параллельный вход от LCDC, а из нее идет DP до LCD панели. Такая конфигурация в ядре есть, есть и драйвер на anx. Но вот, западло - панелька там другая, хоть тоже и ретина с тем же разрешением.

Попытки завести anx6345 с наскоку мне не удались. Оказалось, что там как-то очень хитро включается и отключается питание панели. Иными словами - на стоковом ядре я видел на i2c-2 по адресам 0x38, 0x39 и 0x3d этот anx, а на моем самосборе докрученном получал кукишь, несмотря на то, что gpio врубающие 3.3v, 1.8v я честно прописал.

Дальнейшие копания не выявили никаких i2c-gpio/spi-gpio расширителей, потому голос внутри моей головы тихо и ясно произнес - «а все ли я учел с gpio?»

Выяснилось, что нет.

Были там ноги, которые сдампил в виде "?" gpio-user-drv, то есть китайцы выполняя request_gpio не удосужились написать кому и зачем оно нужно.

Именно поэтому я полез в исходники драйвера GPIO и раскурил регистровую карту. Благо, одного хедера с дефайнами оказалось достаточно, чтобы найти по какому офсету лежит Data Register а по какому Direction Register.

Честно сдампив devmem'ом значения при работающем дисплее и восстановив их на своем ядре я опять получил фигу. На i2c-2 anx'а не появилось.

«Ну точно сдвиговый регистр! Или еще какая НЁХ.»

Следующая мысль была простая. Так как devmem ммапит в память приложения кусок физического пространства, то и обращения к нему будут явно сильно быстрее, чем через gpio api ядра. А значит, мы реально можем восстановить что там происходит! За пять минут из исходников devmem2.c я запилил тупой трейсер, который насилует указанный адрес памяти и логгирует все его изменения, после чего выводит историю изменений в консоль. Пара минут работы дампера, и у меня в руках скрипт который включает anx6345, и который успешно это делает в том числе и на моем ядре.

devmem 0x2000A000 32 0x515101
devmem 0x2000A000 32 0x515001
devmem 0x2000A000 32 0x514001
devmem 0x2000A000 32 0x515001
devmem 0x2000A000 32 0x511001
devmem 0x2000A000 32 0x515001
devmem 0x2000A000 32 0x515005
devmem 0x20080000 32 0xA8034E0
devmem 0x20080000 32 0x1A8034E0

Для начала я запихнул это в ядро, прямо перед инициализацией anx6345, потом разберусь что из этого оставить. Achievement unlocked: eDP трансивер заработал!

Но если Вы думаете, что на этом приключения закончились победой, Вы ошибаетесь. Экран по прежнему был черным, а драйвер anx сообщал что незадетектил клока.

Пришло время раскуривать сырцы rk-fb, rk-fb сам не раскурится. Клока anx скорее всего не видел потому, что lcdc0 не запускался. Чтобы это сделать надо его пнуть через файлик в sysfs. Влияет ли это на то успешно стартует anx6345 или нет? А хрен его знает, потому первым хаком я заставил lcdc0 заводиться автоматом сразу перед тем, как драйвер anx6345 будет делать свой probe.

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

* Pipo черезжопно по-своему настраивают anx под эту панель.

* LCDC0 настроен на другие тайминги/параметры и требуют хаков. Самое время вспомнить про i2cdump, собрать его статически и снять дамп i2c регистров anx6345 на андроеде.

В пользу этого предположения говорило то, что в логе стока в инициализации панели говориться fps:56, а у меня fps:48 i2cdump и впрямь показал разницу. Так как из документации на anx6345 был только хедер с названиями регистров, пробежавшись по нему я понял, что это разница тупо в статусных регистрах. И говорили они что нихрена не работает.

Пришла пора дампить регистры LCDC0. Регистры сами не сдампятся. Еще минут пятнадцать медитации, запись единички в очередной файлик enable в sysfs и...

Успех!

Оказалось, что по дефолту LCDC, который умеет накладывать оверлеи выводит только бэкграунд, который был черным. Случайно лулза ради заменив в сырцах меджик намбер с нулей на 0xffки я получил белый экран, а немного поковыряв нашел тот enable, записав единичку в который наконец-то увидел содержимое fb. И вроде даже ничего никуда не поехало, и тайминги правильные оказались...

Achievement unlocked: LCD панелька заработала.

Вот пожалуй и все на сегодня, пора спать. На очереди иксы, mali, on2, причесывание этого хозяйства.

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

ncrmnt
()

RK3188: Вайфай.

 ,

Продолжаем сериал про треш и угар. Злобный некромант против чуда китайской мысли, Pipo MAX M6 Pro. первая серия вторая серия

Сегодня особых продвижений не было, дисплей все так же молчит. Процедуру раскурки регистровой карты GPIO и PINMUX'а и написанием дампера для стока я решил отложить на завтра (Хорошо хоть на стоке devmem включен, без него было бы тяжко!).

Решил заняться вайфаем. За вайфай отвечает комбо-чип внутри которого bcm4329, который сидит на SDIO. Который наотрез оказался собираться. Одел говнодавы, засучил рукава взял ключ на 28 и пошел чинить. В ходе почина в подземельях нашлись следующие артефакты:

эпичная установка канала в легаси рокчиповом коде. Прямо таки «Fuck the FCC!»

Не менее эпичный способ включать и выключать вайфай втыканием и вытыканием офигеннейшего по своей сути модуля!

Ну и, наконец, на этот раз уже опупенный код выставления канала в драйвере броадкома. Люди с кантри-кодом RU должны страдать. Остальные лезут править код при включенном -Werror

Вайфай вроде почти завел, на #linux-rockchip уже почти свой в доску... остались мелочи подчистить. И на этой неделе таки придумать как завести панельку.

ncrmnt
()

Посоветуйте опсоса и тариф.

 ,

Местоположение: нерезиновый дефолтсити. Нужен тариф для пары железяк, у которых единственная активность в сети будет одна-две смски (или http post запроса через гпрс-интернеты) в полгода в лучшем случае (в случае, как легко догадаться, факапа. т.е. случай на самом деле худший, но да не суть). Соответственно вставил симку и забыл. И чтобы оператор эту симку не заблокировал за неиспользование/не перевел на тариф с абонентнкой.

ncrmnt
()