#linux-kernel #serial-port #linux-device-driver #android-kernel
#linux-ядро #последовательный порт #linux-драйвер устройства #android-ядро
Вопрос:
Я пытаюсь включить поддержку опроса для драйвера serial over USB в ядре Android, чтобы я мог отлаживать его с помощью kgdboc. Я основывался на коде из этих githubs:
Однако я не могу найти способ включить и использовать режим опроса char by char через программу C в пользовательской среде. Что очень затрудняет отладку, поскольку единственное, что я могу сделать, это установить kgdboc в /dev/ttyGS0
, а затем отправить «g» в sysrq-trigger и молиться, чтобы это сработало.
Другими словами, мне нужна пользовательская программа, которая запускает путь кода, который достигает следующих операций над tty_operations
структурой:
.poll_init = gs_poll_init,
.poll_get_char = gs_poll_get_char,
.poll_put_char = gs_poll_put_char,
Вместо этого всякий раз, когда я пишу на /dev/ttyGS0
, я запускаю операцию «запись».
Любая помощь будет высоко оценена.
Спасибо!
Комментарии:
1. Предполагается, что они не должны использоваться пользовательским пространством, а скорее существуют для KGDB для связи с удаленным хостом отладки. Что вы на самом деле пытаетесь здесь сделать, подделать трафик с узла отладки?
2. Конец kernel.org/doc/htmldocs/kgdb/EnableKGDB.html предлагает идею, что вы могли бы просто поместить точку останова в редко используемый путь к коду ядра и заставить его выполняться … хотя я не уверен, что согласился бы с их выбором того, что перехватывать.
3. Я пытаюсь изменить драйвер serial over USB, чтобы разрешить режим опроса, чтобы я мог отлаживать ядро устройства.
4. Тогда почему вы спрашиваете, как запустить их из пользовательского пространства? Их должен использовать только код целевой стороны KDGB, а другой конец — это компьютер на другом конце провода. Также поймите, что serial-over-USB — это очень сложный процесс, включающий перемещение частей во многих местах ядра, не обязательно, что KGDB может справиться с этим (хотя это, очевидно, было бы полезно, так что, возможно, они нашли способ сделать это).
5. Кроме того, / dev / ttyGS0 должен быть встроен в UART, поэтому неясно, почему вы вообще используете USB serial на целевой стороне. USB serial на стороне узла отладки на первый взгляд не должен казаться серьезной проблемой, поскольку эта сторона будет просто использовать обычные API пользовательского интерфейса serial — конечно, есть некоторые проблемы с задержкой, но это настолько распространенное последовательное решение на популярных компьютерах разработчиков, что, вероятно, они были давно приняты во внимание.
Ответ №1:
В итоге я создал драйвер, который экспортирует узел sysfs, как предложил Крис Страттон.
Я основывался на этом руководстве