Hatred's Log Place

DON'T PANIC!

Apr 11, 2019 - 10 minute read - programming embedded

MitM-like поддержка RTOS в GDB

Какое-то время назад я писал код прошивки для грабберов Epiphan линейки AV.io:

  • AV.io HD - наш пилот, на котором многое было отлажено и сформирована архитектура
  • AV.io SDI - закрепляем позиции
  • AV.io 4K - уже новое железо и новые подходы, теперь запускаемся практически мгновенно
  • KVM2USB 3.0 - глубокое переосмысление AV.io HD. По сути, благодаря заложенному потенциалу для модернизации в базовую модель, практически без модификации железа, чисто софтом смогли сделать новый продукт.

Там был задействован Cypress FX3, а SDK был построен поверх ThreadX. В качестве JTAG отладчика можно использовать Olimex ARM-USB-OCD-H в связке с OpenOCD. К сожалению, OpenOCD ничего не знает про треды в RTOS и, хотя, базовая поддержка присутствует в коде, конкретно для нашего процессора использовалась схема стекинга регистров, которая отличалась от того, что было уже реализовано. Пришлось разбираться и дорабатывать. Профиты от использования JTAG для разработки трудно переоценить, как минимум в случае распределённой работы.

Итак, время идёт. Теперь очередь за FPGA от Xilinx и его софтовым процессором MicroBlaze, где можно запустить портированый FreeRTOS версии 10.x. Но проблема ровно такая же: поддержки тредов в отладчике нет!

Mar 3, 2019 - 1 minute read - site

Миграция

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

Выбирал между GitHub Pages и GitLab Pages. Вторые из коробки предлагают больше места и больше возможностей по использования и кастомизации генераторов сайта. Первые - более удобное использование Let’s Encrypt, сводящееся к “поставить налочку использовать TLS/SSL”.

Но больший объём артифактов и возможность выбора генератора (хочу иметь, на крайний случай, возможность зайти в репозиторий и добавить/отредактировать статью со всеми смежными изменениями) склонил к GitLab Pages. В качестве генератора был выбран Hugo, написанный на Golang.

Для миграции с DokuWiki был использован, с доработками для себя, dokuwiki-to-hugo. После чего была череда причёсываний наколенными скриптами (в частности, были восстановлены теги из BlogTNG). Тема пока оставлена неизменённая hugo-octopress. Много косяков в вёрстке, не все картинки лежат в правильных местах и могут не отображаться. Комментарии смигрировал тоже, поэтому, если находите где-то косяк - сообщайте.

Немного про лимиты. Размер репозитория на GitLab - 10G. Но сайт деплоится как артифакт CI, а для него лимит - 1G. Т.е. максимальный размер сайта - 1G.

Feb 5, 2019 - 1 minute read - linux

Дожились... Теперь и батарейки могут зависать...

Лаптоп рапортует, что батарея есть, заряд 54%, но… она не заряжается, ни разражается.

Выхлоп acpi -i:

Battery 0: Unknown, 53%
Battery 0: design capacity 8147 mAh, last full capacity 7264 mAh = 89%

Unknown - это статус заряда-разряда.

Вынимаю батарейку при включенном питании и вставляю обратно:

Battery 0: Charging, 56%, 00:58:42 until charged
Battery 0: design capacity 7770 mAh, last full capacity 6928 mAh = 89%

рукалицо.

PS если кто не знает, то батарейки в лаптопах содержат контроллер, с которым хост общается по SMBus (3v3 версия протокола I2C с официальной частотой до 100 kHz).

Jan 3, 2019 - 1 minute read -

Выключить глобально Heads-Up уведомления на Asus Zenfone Max 4 (ZC554KL) и Max M1 (ZB555KL)

Возможно и на всех Android 8.x, в случае, если вас как и меня они крайне раздражают:

  1. включить режим разработчика и отладку по USB
  2. на хосте поставить android-tools (например pacman -S android-tools)
  3. подключить USB кабелем и выполнить команду:```bash adb shell settings put global heads_up_notifications_enabled 0

Oct 12, 2018 - 1 minute read -

Интересная информация про импульсные блоки питания

Наткнулся на блог камрада @kirich. Очень интересно, коротко и по делу. В частности, искал, как правильно заземлить паяльную станцию, жало и корпус.

Итак:

Oct 12, 2018 - 1 minute read -

Станция для жал T12 на STM32

Обновил свою “рародную” станция для жал T12 на STC контроллере и LED индикаторах до контроллера на STM32 и OLED дисплеем. Версия железа 2.1S.

Для обновки брал:

  • сам котроллер
  • акриловую переднюю панель
  • и заодно новую ручку с более глубокой посадкой жал

Немного материалов в тему

Осталось только сделать заземление, как описано тут:

Aug 30, 2018 - 1 minute read -

Анализатор сигналов на 8 каналов и 24MHz на базе демоплаты FX2LP

Потребовалось посмотреть консистентность общения c устройством по шине I2C. Вспомнил, что в закромах Родины валяется демоплата за 120 рубликов (сейчас в пределах 200-300 рублей) на FX2LP. Покупалась для реализации SMBus-USB адаптера, что бы перепрошить батарейку ноутбука. До перепрошивки не дошло, но всплыло где-то в голове, что эта плата фигурировала как анализатор сигналов.

Jun 6, 2018 - 1 minute read - linux

Делим длинную строку в консоли

Открыл для себя утилиту fold:

$ echo "Я помню чудное мгновенье, передо мной явилась ты, как мимолётное видение, как гений чистой красоты" | fold -s -w80
Я помню чудное мгновенье, передо мной 
явилась ты, как мимолётное видение, как 
гений чистой красоты

-s - делить по пробельным символам, -wXXX - ширина вывода. За подробностями в man 1 fold.

Jun 4, 2018 - 1 minute read - programming

QtC crashed in master

Давеча обновил QtC из транка и словил:

terminate called after throwing an instance of 'Sqlite::StatementHasError'
ConnectionServer error: "QLocalSocket: Remote closed" "/tmp/QtCreator-NVcPQb/ClangBackEnd-15319"

Аварийный останов (стек памяти сброшен на диск)

Ключевое: Sqlite::StatementHasError

Не стал глубоко разбираться, чуточку gdb и strace и просто удалил старую базу индексации clang-плагина:

rm -f $HOME/.config/QtProject/qtcreator/symbol-experimental-v1.db

Или, в более новых версиях QtC:

rm -f $HOME/.cache/QtProject/QtCreator/symbol-experimental-v1.db

Судя по всему поменялась схема, а процедуры её изменения в автоматическом режиме ещё не реализовали.

UPD 2019-08-13: актуально делать время от времени — повторилось снова.

May 30, 2018 - 1 minute read - programming

Хотели как лучше...

Это прекрасно:

png.c: In function ‘png_get_libpng_ver’:
png.c:700:17: warning: the comparison will always evaluate as ‘true’ for the address of ‘png_ptr’ will never be NULL [-Waddress]
    if (&png_ptr != NULL)  /* silence compiler warning about unused png_ptr */
                 ^

“Хочешь забыть эту боль?..” (c) Майор Пейн

May 24, 2018 - 1 minute read - linux programming

errno(1)

No comments…

$ sudo pacman -S moreutils

$ errno -l
errno -l
EPERM 1 Операция не позволена
ENOENT 2 Нет такого файла или каталога
ESRCH 3 Нет такого процесса
EINTR 4 Прерван системный вызов

$ errno EAGAIN
EAGAIN 11 Ресурс временно недоступен

$ errno 39
ENOTEMPTY 39 Каталог не пуст

По желанию добавляется env LANG=C.

На Ubuntu: sudo apt install moreutils