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

 
 
 
Reply to this topicStart new topic
> Отладка ядра линукс с помощью jtag
_3m
сообщение Mar 3 2011, 08:49
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Не очень понятно где лучше обсуждать этот вопрос, пока написал сюда.
Итак надо отлаживать драйверы ядра линукс.
kgdb на моей платформе не поддерживается а printk недостаточен, да и медленно получается.
Имеется работающий jtag адаптер на ft2232.
После гугления завелась отладка в eclipse, но остались вопросы.
Самый главный вопрос по ремаппингу памяти.
Все символы ядра расположены в виртуальном пространстве а при запуске отладки mmu выключен и мы работаем с физическими адресами. Из за этого невозможно установить точки останова при старте. Команда gdb_breakpoint_override hard помогает, но аппаратных брекпойнтов всего два - неудобно. Как бы это обойти ?
Более мелкий косяк: если в скрипте инициализации вставить брекпойнт он нигде не показывается - на в gdb ни в openocd и его невозможно удалить.
Go to the top of the page
 
+Quote Post
oleg_kaa
сообщение Mar 4 2011, 16:52
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 4-03-11
Пользователь №: 63 400



Все точки останова должны устанавливаться после того как ядро включило MMU
Go to the top of the page
 
+Quote Post
_3m
сообщение Mar 4 2011, 18:23
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(oleg_kaa @ Mar 4 2011, 19:52) *
Все точки останова должны устанавливаться после того как ядро включило MMU

Я как бы в курсе.
Хорошо бы это автоматизировать
Go to the top of the page
 
+Quote Post
oleg_kaa
сообщение Mar 5 2011, 06:36
Сообщение #4





Группа: Новичок
Сообщений: 4
Регистрация: 4-03-11
Пользователь №: 63 400



Цитата(_3m @ Mar 4 2011, 20:23) *
Я как бы в курсе.
Хорошо бы это автоматизировать

Ну раз ты курсе то тогда например вот так:
Код
$ cat System.map | grep __turn_mmu_on
c0008060 t __turn_mmu_on

$ cat init.gdb
target remote localhost:3333
monitor reset halt
monitor bp 0xa0008060 hw 4
continue
monitor rbp 0xa0008060
monitor step
...
monitor step
symbol-file vmlinux.o
break printk
break kmalloc
break skb_pull
break skb_reserve

$ arm-softfloat-linux-gnueabi-gdb -x init.gdb

Go to the top of the page
 
+Quote Post

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

 


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


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