RSS
people

Всяческие поделки

Немного новостей с моих «полей».

Я уже рассказывал, что делаю небольшой плеерок на базе OMAP3530 процессора.

Уже было все готово, как выяснилось, что каким-то образом работа потоков в QT среде не совсем соответствует тому, что написано в документации: не всегда приходит событие завершения процесса. Особенно, если процесс насильственно завершается.

Я использовал обычный линуксовый MPlayer, который запускал с помощью QProcess класса. Оно работало пару — тройку раз, но потом падало. И отловить этот момент пока что не представляется для меня возможным.

Тогда я решил все-же отказаться от встроенного DAC'а этой платы и софтового проигрывателя, и прилепил платку расширения на базе VLSI VS1053b.

Вот так вот выглядит теперь весь плеерок:

Плеер с платой расширения

Плеер с платой расширения

Плеер с платой расширения

Вид с верхнего боку

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

Уже есть первый успех: тест чипа работает — он уже «умеет» пищать разные ноты. Теперь дело за малым — доработать драйвер для управления через IOCTL системный вызов из программы и научить программу слать файлы на этот чип.

Параллельно этому, в качестве тренировки в «шаблонах проектирования C++», стряпаю небольшой коммуникатор для домашней сети, на подобие ICQ, работающий с домашней сетью и с сервером MySQL.

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

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

Еще одной особенностью этого генератора является то, что его можно использовать и в других проектах, где несколько «участников» общаются между собой (пересылают данные).

Как доделаю — выложу исходники, может кому пригодится, кто знает.

Ну пока вот такие вот новости. Вдруг кому интересно, мало ли :) .

3 комментария к “Всяческие поделки”

  1. malkut.ss пишет:

    А Вы не смотрели в сторону открытого драйвера (sourceforge.net/projects/vs10xx/). Правда он написан под ARM9.

  2. MasterAlexei пишет:

    Нет, не смотрел. Надо будет глянуть.

    Не думаю, что есть особая разница между линуксовым драйвером для ARM9 и cortex'ом А8-ым.

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

  3. malkut.ss пишет:

    Я сейчас интересным проектом занимаюсь. Основан тоже на архитектуре Cortex-A8, только процессор Sitara AM3894 :-)

Оставить комментарий или два

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