Pull to refresh
40
0
Константин Аладышев @Kostr

Инженер-программист

Send message
Забавно, месяц назад на дне рождении у бабули пришла похожая идея. Так что имею аналогичный репозиторий grandma_TV (но babooshka конечно милее)) и похожий девайс.
У меня правда немного другой концепт. Дома валялась Raspberry Pi 3b+ и я просто подключил её к монитору по HDMI. Дополнительно для более мощного звука подключил колонки к монитору (а то родные мне нормально, а вот бабуле боюсь тиховато были бы). Через активный USB хаб подключил к малине жёсткий диск на 500ГБ, куда записываю фото-видео в папки Program_1, Program_2,… Скрипт на Python при загрузке системы парсит содержимое папок (определяет длительности видео) и считает «продолжительность канала». Определяем текущее время канала по формуле «время малины % продолжительность канала», и таким образом делаем ощущение, что каналы работают в реальном времени. Управление точно также с ИК датчика (у меня это стандартный KY-022) через lirc, пульт купил с самыми большими кнопками в обычном магазине.
У меня каналы тематические:
— Передачи про животных (Документали Дэвида Аттенборо вроде «Семь миров одна планета»)
— Старые советские фильмы
— Научно-популярные передачи («Космос: пространство и время», «Неизвестная планета Земля»...)
— Старые французские фильмы (Пьер Ришар, Луи Де Фюнес, Фантомас и все-все-все)
— Современное кино
— Опера
— Балет
— Цирк Дю Солеи
— Старые семейные ЧБ фотографии
— Цветные семейные фотографии и видео
Видео проигрываю с помощью VLC и python-bindings для него, а фотки показываю с помощью feh.
Модный корпус делать не стал, просто купил пилот с кнопкой, включил в него все БП, и упаковал так, чтобы только кнопка виднелась с огоньком (чтобы можно было на неё нажать, и всё обесточить, чтобы бабуля была максимально спокойна). А малину прикрепил к обратной стороне монитора.
Для пульта сделал фотоинструкцию с тем, какие кнопки, что значат. Я правда ограничился кнопками программ, выключения, «громче-тише звук» и «следующая-предыдущая программа». Дополнительно сделал «перемотку на следующую-предыдущую» передачу и «показать/скрыть название фильма и оставшееся время», но пока их не презентовал бабуле, жду пока освоит основной функционал =)

Разработка о которой шла речь в данной статье уже завершена. И это был уже не первый наш проект на coreboot.
Для своих плат мы просто снимаем лог с UART, т.к. специально проектировали платы с соответствующим SuperIO, чтобы была такая возможность. В этом случае необходимости ни в Post карте, ни в USB-debug не возникает.
При портировании coreboot на проприетарные платы как-то пришлось ковыряться с LPC анализатором, чтобы посмотреть, как надо инициализировать местный SuperIO на который не было даташита в открытом доступе.
Помимо открытых источников информации у нас есть NDA с Intel и AMD, это даёт нам доступ к программным даташитам на процессор и чипсет, этого хватает. Без них же остаётся только уповать на то, что в coreboot всё портировали правильно (спойлер — это маловероятно), и модификация крайне затруднена.
В итоге порог вхождения в тему зависит от того насколько ваша кастомная плата будет отличаться от ближайшего аналога в coreboot, и от того насколько хорошо этот аналог поддерживается сам в coreboot.
Какие отличия вы имеете в виду? Всё, что описано в разделе «Теория» вроде справедливо и для Intel, и для AMD, а пример настройки из раздела «Практика» специфичен не то, что для Intel, а для конкретного чипсета LynxPoint-LP.
Спасибо! Тип MSI называется «IR-PCI-MSI», потому что у вас работает interrupt remapping. У меня в coreboot к сожалению нет ACPI таблицы DMAR и IOMMU даже не работает, так что и такой фичи нет. Если вы загрузитесь с опцией «intremap=off», то вывод /proc/interrupts у вас должен стать более похожим на мой из статьи.
В исследовании от Intel Reducing Interrupt Latency Through the Use of Message Signaled Interrupts говорится, что прерывание через MSI в 3 раза быстрее чем через IO-APIC и в 5 раз быстрее чем через PIC.
rutenis curiousGeorge — спасибо за замечания. Будет ли более правильным сказать, что «на самом деле ISA устройства могут разделять линию прерываний, при условии что они спроектированы с учётом возможности подобного разделения. Но стандарт не делает это требование обязательным, поэтому в целом подключение нескольких ISA устройств к одной линии IRQ не является безопасным»?
Безусловно важные термины в контексте разговора о прерываниях. Но в данной статье хотелось обсудить контроллеры прерываний и те прерывания, на которые драйвер устройства может повесить обработчик.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer
Lead