Имя:
Пароль:
-- ИЛИ --
Войти, используя:

Форум   Общая тематика и компьютеры   Программирование

Написание драйвера к Avertv Slim Express для Linux

 
Пост #59022 от 7 января 2009, 00:17 

Ilnursoft

Доброго времени суток!

Задача:
для линукс хочу написать драйвер к тв-тюнеру avertv express slim
линукс не поддерживает данный тюнер

Элементная база тюнера:
АЦП cx23885
ВЧ xc3028

За основу используется драйвер для cx23885 в линуксе.
можно посмотреть что за это драйвер, вот исходники

начал разбираться с написанием драйвера к тюнеру.
Что сделано:
1) распечатал все модули относящиеся к cx23885, определил что нужно будет изменять в модулях: cx23885-cards.c, cx23885-dvb.c (еще не определил конкретно что нужно дописать)
2) определил связи между модулями
3) разобрался что такое загружаемые модули ядра линукса (как их подгрузить и выгрузить)

В данный момент пытаюсь скомпилить сам отдельно модуль cx23885 без пересборки самого ядра.

Необходимо найти спецификацию по тюнеру. Думаю что можно использовать снятые регистры тюнера со страницы ЭТОЙ

Народ, посоветуйте это поможет при написании драйвера и вообще присоединяйтесь пользователи этого тюнера!


PS все я делаю в Russian Fedora 10. ядро2.6.27.9
Отправить личное сообщениеПрофиль пользователяРоссия
Kazan
Постов: 7
Нарушений: Нет
Пост #59093 от 9 января 2009, 18:20 

Ilnursoft

с компиляцией модуля без пересборки я сделал.
Это делается следующей командой в каталоге исходных кодов ядра:
make -C<путьдоисходников> SUBDIRS=$PWD modules

после компиляции появится модуль в моем случае, cx23885.ko , который можно загружать.

Поделюсь со своими успехами:
внес исправления в cx23885.h и cx23885-cards.c сделал так чтобы у меня определялся тюнер и после определения создается устройство video1, которое должно транслировать видеопоток аналогового телевидения, но mplayer выводит только зеленый экран. (Хотя бы)) )
Буду делать так чтобы хотя бы можно было смотреть аналоговое телевидение.
Исправленные исходные коды выложу позже.

при загрузки исправленного модуля cx23885.ko в dmesg выводится следующие сообщения
cx23885 driver version 0.0.1 loaded
cx23885 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
CORE cx23885[0]: subsystem: 1461 939, board: AverTV Hybrid Express Slim [card=11,autodetected]
cx23885[0]: i2c bus 0 registered
cx23885[0]: i2c bus 1 registered
cx23885[0]: i2c bus 2 registered
Tuner Input 0
Tuner type 0
Tuner Addr 0
cx23885[0]/0: registered device video1 [v4l2]
cx23885_dev_checkrevision() Hardware revision = 0xb0
cx23885[0]/0: found at 0000:02:00.0, rev: 2, irq: 16, latency: 0, mmio: 0x53000000
cx23885 0000:02:00.0: setting latency timer to 64

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

Исходные коды на сегодня в Моих файлах. Если не можете их скачать я вышлю по мылу.
Отправить личное сообщениеПрофиль пользователяРоссия
Kazan
Постов: 7
Нарушений: Нет
Пост #59161 от 12 января 2009, 11:37 

Dmitry Kornev

Ilnursoft : Исходные коды на сегодня в Моих файлах. Если не можете их скачать я вышлю по мылу.
Нужно просто ссылки прямо в форум поместить на необходимые файлы.
Отправить личное сообщениеПрофиль пользователяКонфигурация пользователяБлог пользователяРоссия
Челябинск
Постов: 6488
Нарушений: Нет
Пост #59165 от 12 января 2009, 11:46 

Ilnursoft

Драйвера предпоследняя версия.

Сегодня вечером залью последнюю версию..модифицированную.

Никому что ли данная тема не интересна? странно как то.
Отправить личное сообщениеПрофиль пользователяРоссия
Kazan
Постов: 7
Нарушений: Нет
Пост #59185 от 12 января 2009, 12:55 

Dmitry Kornev

Ilnursoft :Никому что ли данная тема не интересна? странно как то.
Тюнер просто не сильно распространенный, а плюс к этому Linux тоже не назовешь слишком популярным. :-) Но тема обязательно найдет своих читателей.
Отправить личное сообщениеПрофиль пользователяКонфигурация пользователяБлог пользователяРоссия
Челябинск
Постов: 6488
Нарушений: Нет
Пост #59225 от 12 января 2009, 23:29 

antokha

У меня Leadtek WinFast PxDVR3200H с такими же чипами и не пашет. Подсказать по написанию драйвера наврядли смогу, т.к. не знаю о драйверах в линуксе (у меня UBUNTU 8.10 64 bit) абсолютно ничего. А так кое-что интересное нашел:
Вышло новое ядро 2.6.28 (это ссылка на внесённые изменения файл весит 5,7 Mb) может в нём поддержку включили вроде бы.

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

Я тут подумал и вот что:

-- твоя карта имеет в своем наименовании express, значит интерфейс у неё PCIexpress, следовательно, в драйвере ввод/вывод сигнала (точнее потока сигнала) можно взять из драйвера на карту имеющую ту же интерфейсную микросхему.

-- Например, для своей я нашел ссылку на драйвера (Софт и драйверы > Linux там в разделе /releases/video4linux есть дрова на TV тюнеры моей фирмы, но на более урезанные по функциональности модели. Посмотри может что-то подойдет и для твоей.

Отредактировано: antokha (12.01.2009-23:59, назад)
Отправить личное сообщениеПрофиль пользователяРоссия
Нижний Новгород
Постов: 5
Нарушений: Нет
Пост #59355 от 17 января 2009, 23:27 

Ilnursoft

спасибо за совет!
почти недельное затишье и снова в бой!

Выкладываю немного переработанные драйвера для тв-тюнера. ДРАЙВЕР СКАЧАТЬ
они пока не показывают картинку. но все же кому интересно, то будет от чего отталкиваться.

Отзовитесь кому это интересно.
Отправить личное сообщениеПрофиль пользователяРоссия
Kazan
Постов: 7
Нарушений: Нет
Пост #59424 от 20 января 2009, 21:05 

and

интересно, но пока только в качестве наблюдателя.
Отправить личное сообщениеПрофиль пользователя
Постов: 3
Нарушений: Нет
Пост #59500 от 23 января 2009, 13:08 

V_Oz

дНАПШИ ДЕМЭ.
рЕЛЮ НВЕМЭ ХМРЕПЕЯМЮ. нДМЮЙН ЦНРНБ БШЯРСОХРЭ РНКЭЙН Б ПНКХ РЕЯРЕПЮ. хАН ОПНЦПЮЛЛХМЦ УНРЪ Х ДНЯРСОЕМ, МН МЕ МЮ ЮООЮПЮРМНЛ СПНБМЕ.

ня: яСяе 10.3 ЪДПН 2.6.22 ЙЮФХЯЭ.
мНСР юЯЕП 5920.

гЮОСЯРХРЭ РЧМЕП ОНД КХМСЙЯНЛ ГЮХМРЕПЕЯНБЮМ :) лНФЕРЕ ВЕПЕГ ЛШКН ДЮБЮРЭ ХМЯРПСЙЖХХ, ЕЯКХ УНРХРЕ.
Отправить личное сообщениеПрофиль пользователяРоссия
нПУЛЧБ
Постов: 4
Нарушений: Нет
Пост #59598 от 28 января 2009, 00:10 

antokha

Уважаемый V_Oz, не сообщите в какой кодировке ваше сообщение #59500. Спасибо.

добавлено спустя 3 ч. 19 минут

Решил я попробовать поправить эти файлы из твоего последнего релиза драйвера, но что-то у меня не хочет компилироваться:

/usr/src/linux-headers-2.6.27-11$ make -C"/home/anton/Leadtek WinFast PxDVR3200H" SUBDIRS=$PWD modules
make: Вход в каталог `/home/anton/Leadtek WinFast PxDVR3200H'
make: *** Нет правила для сборки цели `modules'. Останов.
make: Выход из каталога `/home/anton/Leadtek WinFast PxDVR3200H'

Может я что-то не так делаю?

Ещё вопрос: в файле cx23885.h это ты дописал строки или они там были? Как-то странно они выглядят:
extern struct list_head cx23885_devlist;
.......
#define SRAM_CH14 13 /* MOE Vid */
#define SRAM_CH15 14 /* MOE RSLT */
........

А в файле cx23885-cards.c в самом его окончании:
case CX23885_BOARD_AVERTV_SLIM:
request_module("tuner-xc2028");
break;

Ты вроде указал что у тебя тюнер xc3028, хотя может это и не столь важно, во всяком случае из-за этого может быть зеленый экран (нет настройки на канал).

Отредактировано: antokha (28.01.2009-00:18, назад)
Отправить личное сообщениеПрофиль пользователяРоссия
Нижний Новгород
Постов: 5
Нарушений: Нет
Пост #59623 от 29 января 2009, 10:04 

Ilnursoft

Спасибо за интерес к разработке.

Отвечаю на вопросы:
1) для компиляции попробуй просто сделать в каталоге /usr/src/linux-headers-2.6.27-11 написать команду
make modules



2)
> #define SRAM_CH14 13 /* MOE Vid */
> #define SRAM_CH15 14 /* MOE RSLT */
эти строки были уже

3)
> case CX23885_BOARD_AVERTV_SLIM:
> request_module("tuner-xc2028");
> break;

как я понял из описания этот модуль подходит и для x3028

Пока не совсем понимаю как можно использовать дамп регистров тв-тюнера в написании драйвера.
Хотя в моей последней версии которую я еще не выложил я понаитию их применил внекоторых частях программы.

Постараюсь сегодня выложить то что у меня есть)))
Отправить личное сообщениеПрофиль пользователяРоссия
Kazan
Постов: 7
Нарушений: Нет
Пост #59624 от 29 января 2009, 10:14 

V_Oz

кодировка .. кто ее знает? :) прокатило если поставить кои8-р и запостить. потом переключить в ср1251, чтобы прочитать. прошу обратить внимание разработчика сайта.


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

и тамошний драйвер не понимает (пока) тюнера хс3028. Ваш, как я понял из форума, понимает.
Самое интересное, что там пишут также то, что тюнер и Multimedia video controller CX23885 будут (или уже) внесены в ядро 2.6.26 (или 27, не помню)
конечно лопатить новое ядро и устанавливать это слишком муторно и зачастую без надобности, подумал я, и таки созрел, чтобы начать тыкать палкой в Ваш модуль :)

2 Антоха: tuner-xc2028 по сути аналог 3018 (как пишут на том же сайте) и как видно на сайте производителя отличается от 3028 в поддержке DVB-T. вопрос в том, какую прошивку заливает драйвер (или вышеуказанный модуль) в тюнер. в нашем случае это должна быть именно 3028.
-----------------------------------------------

Опера 9.63
Сборка:
2474
Платформа:
Linux
Система:
i686, 2.6.22.17-0.1-default
Qt library
3.3.8
Отправить личное сообщениеПрофиль пользователяРоссия
нПУЛЧБ
Постов: 4
Нарушений: Нет
Пост #59625 от 29 января 2009, 10:36 

antokha

Кстати я поставил ядро 2.6.28.6-generic из репозитория Ubuntu 9.04 Jaunty. Всё определилось: по dmesg определяются cx23885 и xc3028. Оригинальную прошивку я вынул как там написано.Создались устройства в /dev/dvb/adapter0: frontend0, demux0, dvr0, net0. Totem видит устройство цифрового телевидения, но поскольку у меня нет его, проверить работоспособность этого режима не могу. Все программы не видят в этом устройстве ни приёмника аналогового ТВ, ни радио.
Отправить личное сообщениеПрофиль пользователяРоссия
Нижний Новгород
Постов: 5
Нарушений: Нет
Пост #59626 от 29 января 2009, 10:48 

V_Oz

И еще к автору . на V4L сайте есть репа http-ссылка где кто-то работает над тюнером. может это как-то поспособствует написанию? Хотя как я понял суть сводится к связке драйвера контроллера и драйвера тюнера, что практически уже произошло.
Отправить личное сообщениеПрофиль пользователяРоссия
нПУЛЧБ
Постов: 4
Нарушений: Нет
Пост #59629 от 29 января 2009, 11:55 

Ilnursoft

antokha, у тебя какой тв-тюнер? надо попробовать это ядро...
Отправить личное сообщениеПрофиль пользователяРоссия
Kazan
Постов: 7
Нарушений: Нет
Пост #59631 от 29 января 2009, 13:47 

antokha

To:Ilnursoft Я выше писал (6-ой пост).
Я сейчас попробую скомпилировать модуль из исходников от ядра 2.6.28.2, новее не нашел, надеюсь к моему установленному (2.6.28.6) подойдет. Также выкладываю часть исходников ядра 2.6.28.2 (папку /usr/src/linux-2.6.28.2/drivers/media/video/cx23885) с исправлениями для моего ТВ-тюнера Ссылка.

Напиши пожалуйста поподробнее как скомпилировать этот модуль? При выполнении команды make modules где должна быть папка CX23885?

Отредактировано: antokha (29.01.2009-14:06, назад)
Отправить личное сообщениеПрофиль пользователяРоссия
Нижний Новгород
Постов: 5
Нарушений: Нет
Пост #59636 от 29 января 2009, 17:32 

Ilnursoft

папка CX23885 нах-ся в исходниках линукса drivers/media/video/cx23885
вродь так.....дома посмотрю исправлю если не правильно))

Расскажешь как вело себя ядро 2,6,28,2
Отправить личное сообщениеПрофиль пользователяРоссия
Kazan
Постов: 7
Нарушений: Нет
Пост #59637 от 29 января 2009, 21:30 

antokha

Исходные тексты ядра 2.6.28.2 я скачал с kernel.org, хотел откомпилировать и поставить, но оно начало ругаться на отсутствие целей при компиляции Xen. Это Xen - нововведение в ядре 2.6.28, по крйней мере в Ubuntu. Поэтому я начал искать в гугле как его можно поставить и нашел решение в виде подключение репозитория Ubuntu 9.04 Jaunty. Оно (2.6.28) там есть только 2.6.28-5 и 2.6.28-6. Установив последнее тв-тюнер определился (вывод dmesg):

[   14.677166] Linux video capture interface: v2.00
[   14.731735] cx23885 driver version 0.0.1 loaded
[   14.731785] cx23885 0000:02:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
[   14.731940] CORE cx23885[0]: subsystem: 107d:6681, board: Leadtek Winfast PxDVR3200 H [card=12,autodetected]
[   15.029981] cx25840' 3-0044: cx25  0-21 found @ 0x88 (cx23885[0])
[   15.032763] cx23885_dvb_register() allocating 1 frontend(s)
[   15.032767] cx23885[0]: cx23885 based dvb card
[   15.296938] xc2028 2-0061: creating new instance
[   15.296941] xc2028 2-0061: type set to XCeive xc2028/xc3028 tuner
[   15.296946] DVB: registering new adapter (cx23885[0])
[   15.296950] DVB: registering adapter 0 frontend 0 (Zarlink ZL10353 DVB-T)...
[   15.297215] cx23885_dev_checkrevision() Hardware revision = 0xb0
[   15.297223] cx23885[0]/0: found at 0000:02:00.0, rev: 2, irq: 19, latency: 0, mmio: 0xfd800000
[   15.297230] cx23885 0000:02:00.0: setting latency timer to 64
[ 4863.053864] i2c-adapter i2c-2: firmware: requesting xc3028-v27.fw
[ 4863.099629] xc2028 2-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
[ 4863.298176] xc2028 2-0061: Loading firmware for type=BASE F8MHZ (3), id 0000000000000000.
[ 4864.454043] xc2028 2-0061: Loading firmware for type=D2633 DTV7 (90), id 0000000000000000.
[ 4864.467989] xc2028 2-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78 DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.
[ 4868.683693] xc2028 2-0061: Loading firmware for type=D2633 DTV78 (110), id 0000000000000000.
[ 4868.697861] xc2028 2-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78 DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.

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

добавлено спустя 3 ч. 4 минут

Ilnursoft:
с компиляцией модуля без пересборки я сделал.
Это делается следующей командой в каталоге исходных кодов ядра:
make -C<путьдоисходников> SUBDIRS=$PWD modules

после компиляции появится модуль в моем случае, cx23885.ko , который можно загружать.

<путьдоисходников> какой у тебя?
Отправить личное сообщениеПрофиль пользователяРоссия
Нижний Новгород
Постов: 5
Нарушений: Нет
Пост #59644 от 30 января 2009, 10:27 

V_Oz

Ilnursoft, а можно теперь рассказать не догнавшему поезд как можно зарядить Ваш модуль вместе с подключением тюнера?

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

А то смотрю как вы тут переписываетесь и аж завидки берут :)
Отправить личное сообщениеПрофиль пользователяРоссия
нПУЛЧБ
Постов: 4
Нарушений: Нет
Пост #60099 от 17 февраля 2009, 16:21 

mityi

Ilnursoft, Хотелось бы поинтересоваться, как идут дела с написанием драйвера? Жду когда железка заработает на правильной оси))
Отправить личное сообщениеПрофиль пользователя---
Постов: 1
Нарушений: Нет
Пост #60446 от 12 марта 2009, 16:45 

anton_z

Привет всем. Очень рад что нашёл эту тему. Уже пол года мучаюсь без дров для своего тюнера.
Автор, как у тебя успехи в этом направлении? Сам программить не умею, но готов активно тестировать то что есть. Напиши где взять последний вариант модулей и что с ними делать :-)
P.S. А почему в теме не упоминается демодулятор AF9013? Вроде как для него модуль тоже нужен. И какую прошивку для тюнера использовать? Я пробовал как на http-ссылка написано её делать.
Отправить личное сообщениеПрофиль пользователя---
Постов: 2
Нарушений: Нет
Пост #62111 от 24 мая 2009, 23:55 

dontpanic

Народ так чем там дело закончилось?Получилось у кого? А?:think
Отправить личное сообщениеПрофиль пользователяУкраина
Постов: 2
Нарушений: Нет
Пост #62177 от 30 мая 2009, 21:07 

dontpanic

Я чесно говоря не шарю в программировании.Поэтому возможно немного глупое предложении,но все таки.
Для тюнера AVerTV DVB-T Express X E568E есть драйвера под линукс http-ссылка
Может их как то можно приспособить к express slim?По характеристикам тюнера вроде похожи.
А то жалко,у меня этот тюнер а на линуксе он бесполезен.
Отправить личное сообщениеПрофиль пользователяУкраина
Постов: 2
Нарушений: Нет
Пост #62188 от 1 июня 2009, 16:35 

anton_z

dontpanic, мне кажется это чисто DVB тюнер. Цифровую часть у нашего скорее всего и так можно заставить работать, только зачем это надо? Ilnursoft Правильным делом занялся, но видимо решил поставить винду в итоге ;-)
Отправить личное сообщениеПрофиль пользователя---
Постов: 2
Нарушений: Нет
Если Вы зарегистрированы, то для отправки сообщений, пожалуйста, авторизуйтесь.
-- ИЛИ --
Войдите, используя: Facebook Twitter Yandex Вконтакте Mail.ru ...
Страница создана за 0.095 секунды
Copyright © 1999-2012 PcTuner.Ru · Design by Alex Dovby