реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Kernel GDB - как пользоваться?, Linux
AVR
сообщение Feb 19 2009, 21:13
Сообщение #1


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Здравствуйте!
Очень интересует тема использования Kernel Debugger (KGDB) в Linux. Насколько я знаю можно осуществлять отладку по последовательному порту или по ethernet... Для начала хотелось бы познакомиться с этим процессом для случая с последовательным портом.
Насколько я знаю, такой отладчик стал частью ядра начиная с 2.6.26, до этого был доступен в качестве отдельных патчей. Все руководства, которые удалось найти сейчас - устаревшие, не актуальные и не работают smile.gif И в то же время, видно что ведется его активная разработка. А гуглЪ предательски молчит... rolleyes.gif
Подскажите, пожалуйста, где можно найти документацию на это дело?
ЗЫ
Нашел где включить это в ядре, какие параметры ядру задать, как DBG запустить на последовательном порту, но эта связка не работоспособна оказалась.
ЗЗЫ
По сайту искал, гугл использовал. Не стал бы никого беспокоить, если бы было просто найти ответы на мои вопросы... crying.gif


--------------------
Go to the top of the page
 
+Quote Post
Harbour
сообщение Feb 20 2009, 05:41
Сообщение #2


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



less linux-2.6/Documentation/sh/kgdb.txt

или

make htmldocs
lynx linux/Documentation/DocBook/kgdb.html

а про гугль все наоборот - "однажды феечка шла на свист - она несла с собой затыкашечку ..."
Go to the top of the page
 
+Quote Post
AVR
сообщение Feb 20 2009, 08:25
Сообщение #3


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Harbour @ Feb 20 2009, 08:41) *
less linux-2.6/Documentation/sh/kgdb.txt
Вот! В первую очередь искал в разделе документации...
У меня версия ядра из git, самая свежая, правда это не из основной ветки, но не думал что там что-то подотрут...
Клянусь своим процессором и оперативной памятью, ничего нету...
Код
linux-2.6/Documentation/sh$ ls -la
итого 28
drwxr-xr-x  2 s s  4096 2009-02-11 15:31 .
drwxr-xr-x 82 s s  4096 2009-02-19 16:38 ..
-rw-r--r--  1 s s  1173 2009-02-11 15:31 clk.txt
-rw-r--r--  1 s s 10199 2009-02-11 15:31 new-machine.txt
-rw-r--r--  1 s s  1416 2009-02-11 15:31 register-banks.txt
linux-2.6/Documentation/sh$
Но с Вашей помощью всё нашел в интернете! Большое Вам спасибо! smile.gif a14.gif
ЗЫ Как только в гугл ввел kgdb.txt, сразу нашелся документ smile.gif

ЗЗЫ
А ведь документация-то даже в самом ультрапоследнем ведре тоже сильно устарела, на три года и вообще написана для 2.4.xx wink.gif Вот ведь в чем проблема!


--------------------
Go to the top of the page
 
+Quote Post
Harbour
сообщение Feb 21 2009, 07:19
Сообщение #4


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



[Dao]:rus:~ # uname -a
Linux Dao 2.6.28.6 #17 SMP Wed Feb 18 21:46:10 EET 2009 i686 AMD Phenom™ 9950 Quad-Core Processor AuthenticAMD GNU/Linux
[Dao]:rus:~ # ls -l /usr/src/linux/Documentation/sh
итого 28
-rw-r--r-- 1 root root 1173 2008-11-01 13:43 clk.txt
-rw-r--r-- 1 root root 7776 2008-07-14 00:51 kgdb.txt
-rw-r--r-- 1 root root 10199 2009-01-24 18:38 new-machine.txt
-rw-r--r-- 1 root root 1416 2008-07-14 00:51 register-banks.txt
[Dao]:rus:~ #

Кто-то или что-то глючит ...
Go to the top of the page
 
+Quote Post
AVR
сообщение Feb 21 2009, 15:37
Сообщение #5


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Harbour @ Feb 21 2009, 10:19) *
Кто-то или что-то глючит ...
В одном из официальных git-репозиториев с kernel.org, который я использую, этого файла НЕТ, а именно в 2.6.29-rc4. Но я нашел этот файл в стабильной версии ядра 2.6.28.6. Так что в скором времени Вы обнаружите, что и у Вас этого файла не будет. А все потому... что документация в этом файле просто катастрофически устарела!

Именно поэтому я и создал эту тему, чтобы узнать, где лежит _НОВАЯ_ версия файла документации по работе с KGDB. Хотя на самом деле, в настоящий момент я в какой-то степени разобрался как работать с KGDB, просто мне нужно больше подробностей, чтобы эффективнее использовать эту штуку...


--------------------
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 21 2009, 17:32
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(AVR @ Feb 21 2009, 17:37) *
В одном из официальных git-репозиториев с kernel.org, который я использую, этого файла НЕТ, а именно в 2.6.29-rc4. Но я нашел этот файл в стабильной версии ядра 2.6.28.6. Так что в скором времени Вы обнаружите, что и у Вас этого файла не будет. А все потому... что документация в этом файле просто катастрофически устарела!

Именно поэтому я и создал эту тему, чтобы узнать, где лежит _НОВАЯ_ версия файла документации по работе с KGDB. Хотя на самом деле, в настоящий момент я в какой-то степени разобрался как работать с KGDB, просто мне нужно больше подробностей, чтобы эффективнее использовать эту штуку...

http://kgdb.linsyssoft.com/


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Harbour
сообщение Feb 22 2009, 07:06
Сообщение #7


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



если честно сам запускал kgdb X лет назад, но что то не верится что DocBook дока по нему не актуальна
Go to the top of the page
 
+Quote Post
AVR
сообщение Feb 22 2009, 10:18
Сообщение #8


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(amw @ Feb 21 2009, 20:32) *
ОК, спасибо, посмотрю smile.gif
ЗЫ
Немного смутило, что там описание для 2.6.7, патч для 2.6.15.5 накладывать надо, сайт с .com а не .org, с ядром документация не поставляется, и многие другие аномалии (хотя, вероятно, тут нет ничего странного, однако меня это ужасно запутало)... smile.gif


--------------------
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 23 2009, 11:50
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(AVR @ Feb 22 2009, 12:18) *
ОК, спасибо, посмотрю smile.gif
ЗЫ
Немного смутило, что там описание для 2.6.7, патч для 2.6.15.5 накладывать надо, сайт с .com а не .org, с ядром документация не поставляется, и многие другие аномалии (хотя, вероятно, тут нет ничего странного, однако меня это ужасно запутало)... smile.gif

Я по этой доке недавно запускал AT91SAM9260 linux-2.6.24 через UART. Работало.
Патчей не накладывал.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
sasamy
сообщение May 3 2009, 20:19
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(amw @ Feb 23 2009, 15:50) *
Я по этой доке недавно запускал AT91SAM9260 linux-2.6.24 через UART. Работало.
Патчей не накладывал.


Можно поинтересоваться подробностями ? Например у меня ядро никак не хочет реагировать на параметр kgdbwait - как ни в чем не бывало нормально загружается, на sysrq-g тоже не реагирует. Посмотрел документацию в ядре:

When using kgdboc with a uart, the uart driver must implement two callbacks in the struct uart_ops Example from drivers/8250.c:
#ifdef CONFIG_CONSOLE_POLL
.poll_get_char = serial8250_get_poll_char,
.poll_put_char = serial8250_put_poll_char,
#endif

Просмотрев свое текущее ядро 2.6.29 и 2.6.24 я не нашел в atmel_serial этих функций. Порт у меня один. Я так понимаю в вашем случае был отдельный порт для gdb - не расшаренный с консолью на dbgu ?

Сообщение отредактировал sasamy - May 3 2009, 20:22
Go to the top of the page
 
+Quote Post
amw
сообщение May 10 2009, 15:11
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(sasamy @ May 3 2009, 23:19) *
Можно поинтересоваться подробностями ? Например у меня ядро никак не хочет реагировать на параметр kgdbwait - как ни в чем не бывало нормально загружается, на sysrq-g тоже не реагирует. Посмотрел документацию в ядре:

When using kgdboc with a uart, the uart driver must implement two callbacks in the struct uart_ops Example from drivers/8250.c:
#ifdef CONFIG_CONSOLE_POLL
.poll_get_char = serial8250_get_poll_char,
.poll_put_char = serial8250_put_poll_char,
#endif

Про это я читал, но не "копал". Отложил "на после" которое не наступило.
Цитата
Просмотрев свое текущее ядро 2.6.29 и 2.6.24 я не нашел в atmel_serial этих функций. Порт у меня один. Я так понимаю в вашем случае был отдельный порт для gdb - не расшаренный с консолью на dbgu ?

Да. DBGU=ttyS0 - KGDB, ttyS1 - console. Заработало сразу.
С первой же попытки в дебагаре увидел свой баг и больше KGDB не пользовался smile.gif.

PS. Недавно запускал KGDB на MIPS через Ethernet. Тоже запустилось сразу. Без патчей. Ядро 2.6.18.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jun 14 2009, 15:27
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(amw @ May 10 2009, 18:11) *
Про это я читал, но не "копал". Отложил "на после" которое не наступило.
...
PS. Недавно запускал KGDB на MIPS через Ethernet. Тоже запустилось сразу. Без патчей. Ядро 2.6.18.


Меня смущает то что в ванильном ядре 2.6.24 еще не было поддержки kgdb для архитектуры ARM smile.gif и до сих пор в атмеловских драйверах нет поддержки poll-функций с которыми работает kgdboc (драйвера для ethernet - kgdboe, к слову, я вообще не нашел в ядре), так что он в принципе не может работать с sam926х без дополнительных патчей. Собственно там надо всего-ничего - дописать эти две нехитрые функции, например я так сделал:
Код
#ifdef CONFIG_CONSOLE_POLL
static int atmel_poll_get_char(struct uart_port *port)
{
    while (!(UART_GET_CSR(port) & ATMEL_US_RXRDY));
    
    return UART_GET_CHAR(port);
}

static void atmel_poll_put_char(struct uart_port *port, unsigned char ch)
{
    while (!(UART_GET_CSR(port) & ATMEL_US_TXRDY));
    
    UART_PUT_CHAR(port, ch);
}
#endif

static struct uart_ops atmel_pops = {
    .tx_empty    = atmel_tx_empty,
    .set_mctrl    = atmel_set_mctrl,
    .get_mctrl    = atmel_get_mctrl,
    .stop_tx    = atmel_stop_tx,
    .start_tx    = atmel_start_tx,
    .stop_rx    = atmel_stop_rx,
    .enable_ms    = atmel_enable_ms,
    .break_ctl    = atmel_break_ctl,
    .startup    = atmel_startup,
    .shutdown    = atmel_shutdown,
    .flush_buffer    = atmel_flush_buffer,
    .set_termios    = atmel_set_termios,
    .type        = atmel_type,
    .release_port    = atmel_release_port,
    .request_port    = atmel_request_port,
    .config_port    = atmel_config_port,
    .verify_port    = atmel_verify_port,
    .pm        = atmel_serial_pm,
#ifdef CONFIG_CONSOLE_POLL
    .poll_get_char    = atmel_poll_get_char,
    .poll_put_char    = atmel_poll_put_char,
#endif
};


Сообщение отредактировал sasamy - Jun 14 2009, 15:35
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 22 2009, 20:49
Сообщение #13


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(sasamy @ Jun 14 2009, 19:27) *
Собственно там надо всего-ничего - дописать эти две нехитрые функции, например я так сделал:
Скажите, пжалста, а с этими функциями работает? А может патч атмеловцам отправить?.. Они будут рады и я, и все smile.gif


--------------------
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jun 23 2009, 11:03
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(AVR @ Jun 23 2009, 00:49) *
Скажите, пжалста, а с этими функциями работает? А может патч атмеловцам отправить?.. Они будут рады и я, и все smile.gif



Работает, по крайней мере у меня на sam9260, правда я не пробовал sysrq-g - не было надобности, я только через kgdbwait прерывал загрузку ядра, ставил брэкпоинт и отлаживал - мне нужно было посмотреть как probe в моем драйвере отрабатывает, еще как на атмеловском драйвере глюк выростает при передаче буфера больше 4 кб если ему не назначить явно буфер для приема. Можете патч отправить - мне и без него несложно 5 строк дописать smile.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st July 2025 - 13:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01496 секунд с 7
ELECTRONIX ©2004-2016