Немного новостей с моих «полей».
Я уже рассказывал, что делаю небольшой плеерок на базе OMAP3530 процессора.
Уже было все готово, как выяснилось, что каким-то образом работа потоков в QT среде не совсем соответствует тому, что написано в документации: не всегда приходит событие завершения процесса. Особенно, если процесс насильственно завершается.
Я использовал обычный линуксовый MPlayer, который запускал с помощью QProcess класса. Оно работало пару — тройку раз, но потом падало. И отловить этот момент пока что не представляется для меня возможным.
Тогда я решил все-же отказаться от встроенного DAC'а этой платы и софтового проигрывателя, и прилепил платку расширения на базе VLSI VS1053b.
Вот так вот выглядит теперь весь плеерок:
И в данный момент я занимаюсь тем, что пишу драйвер для этого чипа под Линукс, и изменяю программку, которая будет этот драйвер использовать. На данный момент я определился, что драйвер в ядре будет предоставлять только основные возможности записи и чтения регистров чипа, и определение момента, когда чипу надо докидывать данных. А всю логику работы с чипом помещу в программный модуль, который с этим чипом будет общаться. Т.е. интеграцию в систему Линукс делать не планирую пока что.
Уже есть первый успех: тест чипа работает — он уже «умеет» пищать разные ноты. Теперь дело за малым — доработать драйвер для управления через IOCTL системный вызов из программы и научить программу слать файлы на этот чип.
Параллельно этому, в качестве тренировки в «шаблонах проектирования C++», стряпаю небольшой коммуникатор для домашней сети, на подобие ICQ, работающий с домашней сетью и с сервером MySQL.
Во время его разработки набросал небольшой генератор кода для обработки протокола коммуникации, в котором можно задавать пакеты с данными, пересылаемыми между участниками общения, а в программе только используется заранее определенный интерфейс чтения из, и записи данных в пакет, общий для всех видов передаваемых данных, а сами данные определяются константами, которые так-же генерятся генератором.
Данный генератор облегчает добавление новых типов пакетов: не надо лезть в самый низший уровень и добавлять вручную код для копирования разных типов данных в/из пакета.
Еще одной особенностью этого генератора является то, что его можно использовать и в других проектах, где несколько «участников» общаются между собой (пересылают данные).
Как доделаю — выложу исходники, может кому пригодится, кто знает.
Ну пока вот такие вот новости. Вдруг кому интересно, мало ли .
3 комментария к “Всяческие поделки”
Оставить комментарий или два
Пожалуйста, зарегистрируйтесь для комментирования.
21st July 2012 в 22:47
А Вы не смотрели в сторону открытого драйвера (sourceforge.net/projects/vs10xx/). Правда он написан под ARM9.
22nd July 2012 в 7:37
Нет, не смотрел. Надо будет глянуть.
Не думаю, что есть особая разница между линуксовым драйвером для ARM9 и cortex'ом А8-ым.
Но основной моей целью было именно самому научиться писать драйвера под встраиваемый линукс, да и вообще под встраиваемый линукс что-то более менее полезное написать, что я и сделал, собвтсенно. Надо только вот в порядок все привести, чтобы оно стабильно работало, и можно на стенку вешать
23rd July 2012 в 18:44
Я сейчас интересным проектом занимаюсь. Основан тоже на архитектуре Cortex-A8, только процессор Sitara AM3894