| eXeL@B —› Софт, инструменты —› Трейсер READ_REGISTER/WRITE_REGISTER |
| Посл.ответ | Сообщение |
|
|
Создано: 04 ноября 2011 01:31 · Личное сообщение · #1 Хочу добавить поддержку своего ТВ тюнера в linux, драйвер тюнера/демодулятора/декодера есть, но нужны точные данные об i2c, gpio, ... Разобрал драйвер последней доступной IDA PRO 6.1: драйвер написан на С++ с классами и виртуальными функциями В общем трудно проследить порядок вызовов READ_REGISTER/WRITE_REGISTER.Подскажите пожалуста программу/драйвер или библиотеку(?) которая умеет ставить хук на эти функции ядра. ![]() |
|
|
Создано: 04 ноября 2011 04:59 · Личное сообщение · #2 |
|
|
Создано: 04 ноября 2011 11:46 · Личное сообщение · #3 |
|
|
Создано: 04 ноября 2011 14:23 · Личное сообщение · #4 На выбор http://www.tssc.de/download/prods/ PCIScope и IRPTrace мануалы поискать на чипы или близкие по функциям, родственные драйвера в линуксе глянуть Или если не новый синовал с буткитом пишешь ![]() начитаться книжек всяких и сайтов типа http://www.thehackademy.net/madchat/vxdevl/avtech/ разобрать по косточкам hal.dll ~80kb и вот такое написать - оно тебе надо? http://code.google.com/p/ngdbg/source/browse/trunk/halipi.cpp ![]() |
|
|
Создано: 04 ноября 2011 14:29 · Поправил: Oleg_Kaa · Личное сообщение · #5 Ratinsh пишет: родственные драйвера в линуксе глянуть Повторюсь В linux есть драйвера для всего: brindge, тюнер, демодулятор и декодер. Нужно всего лишь прописать правильные значения в регистры, сказать linux'у по какому адресу на i2c шине лежит тюнер и т.д. Потому как каждый производитель совмещает эти чипы по "своему".P.S. Спасибо за IRPTrace, PCIScope гляну
![]() |
|
|
Создано: 04 ноября 2011 14:39 · Поправил: Hexxx · Личное сообщение · #6 |
|
|
Создано: 04 ноября 2011 15:13 · Поправил: Ratinsh · Личное сообщение · #7 |
|
|
Создано: 05 ноября 2011 00:30 · Поправил: Oleg_Kaa · Личное сообщение · #8 Hexxx пишет: Они для винды. ![]() Попытка №2 ![]() Есть Express Card ТВ тюнер AVerTV Hybrid Express Slim HC81R который замечательно работает под Windows. Мне очень хочется что бы он также хорошо работал и под Linux, для этого понятное дело нужно написать драйвер. После некоторых исследований драйвера под Windows стало понятно что ТВ тюнер построен на базе вот этих трех чипов: CX23885, XC3028L, AF9013. Также на сайте linuxtv.org были прочитаны все how to, wiki и т.д. И стало понятно что в Linux есть(!) драйвера для всех этих чипов, им нужно только указать какие GPIO дергать допустим что бы ресетнуть чип декодер, или указать какой GPIO нужно дернуть что бы его перевести в режим powersave(то есть тупо выключить :D). Чип CX23885 выполняет функции моста (и еще чето там), и ему нужно указать в его регистры(!1) что на порт A заведен порт SVIDEO или на порт B заведено DVB-T Далее в течении недели был декомпилирован драйвер (A885VCap.sys)ТВ тюнера под Windows, стало понятно что драйвер написан на языке C++ и под разные модели тюнеров. То есть пару базовых классов(виртуальных/абстрактных) и все остальное, из всего этого безобразия мне очень трудно найти вызов WRITE_REGISTER который допустим инициализирует чипы XC3028L и AF9013. Для того что бы вычислить правильный порядок вызовов этих виртуальных функций, ИМХО нужно протрейсить вызовы WRITE_REGISTER/READ_REGISTER. Вот я и спрашиваю Какой софт под Windows может мне в этом помочь?Потому как Syser, SoftIce у меня на компе не работают(падают в BSOD) ![]() |
|
|
Создано: 05 ноября 2011 00:39 · Личное сообщение · #9 |
|
|
Создано: 05 ноября 2011 01:07 · Личное сообщение · #10 |
|
|
Создано: 05 ноября 2011 01:13 · Поправил: Oleg_Kaa · Личное сообщение · #11 |
|
|
Создано: 05 ноября 2011 01:19 · Поправил: reversecode · Личное сообщение · #12 Oleg_Kaa пишет: Далее в течении недели был декомпилирован драйвер (A885VCap.sys)ТВ тюнера под Windows, стало понятно что драйвер написан на языке C++ и под разные модели тюнеров в студию Oleg_Kaa пишет: CX23885, XC3028L, AF9013 спецификации в pdf уже достали? Oleg_Kaa пишет: Для того что бы вычислить правильный порядок вызовов этих виртуальных функций, ИМХО нужно протрейсить вызовы WRITE_REGISTER/READ_REGISTER. пишите двайвер хукер который будет хучить нужные функции и писать обращения в лог параметры WRITE_REGISTER/READ_REGISTER. вам слабо помогут потому что их будет за сотню как вы угадаете какое значение куда пишется? точнее адресс то вы узнаете но наверняка по тому адрессу будет за десяток обращений угадать в какой последовательности и что включилось не реально лучше уж реверсите весь драйвер до уровня понимания ![]() |
|
|
Создано: 05 ноября 2011 01:20 · Личное сообщение · #13 |
|
|
Создано: 05 ноября 2011 01:23 · Поправил: reversecode · Личное сообщение · #14 |
|
|
Создано: 05 ноября 2011 01:32 · Личное сообщение · #15 |
|
|
Создано: 05 ноября 2011 01:42 · Поправил: reversecode · Личное сообщение · #16 ну мы ж не армы с jtag обсуждаем, правда? видимо с ситацией когда отлаживаемые в дебаге по степу, значения другие чем в рабочем логвебоусе, вы никогда не сталкивались?) а особенно такая ситуация критична на i2c шине когда нужны определенные задержки, и если они больше или меньше значения уже читаются пишутся совершенно другие поэтому 100% работает только вариант драйвер хука на нужные функции причем иногда приходилось не на прямую скидывать в лог а набивать в память, что бы задержки в запись лога сократить, которые влияли на работу самого драйвера с железом а потом уже по особому сигналу в драйвер хука, говорить - "запиши с буффера в лог файл" ну раз вы такой умный)) играйтесь с чем хотите ![]() |
|
|
Создано: 05 ноября 2011 01:56 · Личное сообщение · #17 reversecode пишет: ну раз вы такой умный)) играйтесь с чем хотите Извините, не хотел вас обидеть. reversecode пишет: поэтому 100% работает только вариант драйвер хука на нужные функции Воот Есть ли у кого какие то наработки по этому поводу?reversecode пишет: видимо с ситацией когда отлаживаемые в дебаге по степу значения другие чем в рабочем лорвебоусе, вы никогда не сталкивались?) а особенно такая ситуация критична на i2c шине когда нужны определенные задержки, и если они больше или меньше значения уже читаются пишутся совершенно другие Ну мне нужны значения только на этапе инициализации, там судя по RegSpy for CX23885 не очень активная запись. Да в самом драйвере эти места обильно снабжены Sleep'ами. ![]() |
|
|
Создано: 05 ноября 2011 02:02 · Личное сообщение · #18 |
| eXeL@B —› Софт, инструменты —› Трейсер READ_REGISTER/WRITE_REGISTER |

В общем трудно проследить порядок вызовов READ_REGISTER/WRITE_REGISTER.







Для печати