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

 
 
> не могу запустить kgdb, kernel debugger
federal
сообщение Jan 12 2013, 08:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 12-01-13
Из: Нижний Новгород
Пользователь №: 75 160



День добрый!

Столкнулся с проблемой для cortex-A8.
Не загружается отладчик ядра во время стартапа ядра.
Делаю вроде все правильно, по инструкции http://www.linuxforu.com/2011/09/kernel-sp...ggers-in-linux/
ядро версии 3.x.x ( 3.2.18 ).
Отладчик ядра запускаю по 232 порту, т.е. over console( ввиду того, что в ядре версии > 3.x.x kgdb over ethernet исключили ).

параметры, которые я дополнительно передаю ядру:
kgdboc=ttyO0,115200n8 kgdbwait

пробовал и так:
kgdb8250=ttyO0,115200n8 kgdbwait

но все равно, во время старта kgdboc не подгружается.

Кто нибудь может подсказать, как запустить его и в чем может быть проблема?
Есть какие нибудь идеи?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sasamy
сообщение Jan 12 2013, 09:45
Сообщение #2


Знающий
****

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



Цитата(federal @ Jan 12 2013, 12:37) *
Столкнулся с проблемой для cortex-A8.
Не загружается отладчик ядра во время стартапа ядра.
...
Есть какие нибудь идеи?


Это проблема не cortex-a8 а драйвера UART SoC
http://kernel.org/pub/linux/kernel/people/...n.html#id370455

Цитата
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


смотрите драйвер вашего процессора - есть ли там эти ф-ции, если нет - допишите, это несложно. Вот например дописывал когда-то для i.mx233:

CODE

--- linux-imx_2.6.35_11.04.01/drivers/serial/mxs-duart.c 2011-05-02 10:41:22.000000000 +0400
+++ linux-imx-sk_2.6.35_11.04.01/drivers/serial/mxs-duart.c 2011-05-17 10:01:32.653212175 +0400
@@ -529,6 +529,33 @@
return ret;
}

+#ifdef CONFIG_CONSOLE_POLL
+
+static int mxs_get_poll_char(struct uart_port *port)
+{
+ struct duart_port *dp = (struct duart_port *)port;
+
+ /* Wait until a character arrives. */
+ while (__raw_readl(dp->port.membase + HW_UARTDBGFR) & BM_UARTDBGFR_RXFE)
+ ;
+ /* Read the character and return it. */
+ return __raw_readl(dp->port.membase + HW_UARTDBGDR) & 0xff;
+}
+
+static void mxs_put_poll_char(struct uart_port *port, unsigned char c)
+{
+ struct duart_port *dp = (struct duart_port *)port;
+
+ /* Wait until the transmit FIFO is empty. */
+ while (!(__raw_readl(dp->port.membase + HW_UARTDBGFR) & BM_UARTDBGFR_TXFE))
+ barrier();
+
+ /* Transmit the character. */
+ __raw_writel(c, dp->port.membase + HW_UARTDBGDR);
+}
+
+#endif
+
static struct uart_ops duart_pops = {
.tx_empty = duart_tx_empty,
.set_mctrl = duart_set_mctrl,
@@ -546,6 +573,10 @@
.request_port = duart_request_port,
.config_port = duart_config_port,
.verify_port = duart_verify_port,
+#ifdef CONFIG_CONSOLE_POLL
+ .poll_get_char = mxs_get_poll_char,
+ .poll_put_char = mxs_put_poll_char,
+#endif
};

static struct duart_port duart_port = {

Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 17:34
Рейтинг@Mail.ru


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