Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отладка ядра линукс с помощью jtag
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
_3m
Не очень понятно где лучше обсуждать этот вопрос, пока написал сюда.
Итак надо отлаживать драйверы ядра линукс.
kgdb на моей платформе не поддерживается а printk недостаточен, да и медленно получается.
Имеется работающий jtag адаптер на ft2232.
После гугления завелась отладка в eclipse, но остались вопросы.
Самый главный вопрос по ремаппингу памяти.
Все символы ядра расположены в виртуальном пространстве а при запуске отладки mmu выключен и мы работаем с физическими адресами. Из за этого невозможно установить точки останова при старте. Команда gdb_breakpoint_override hard помогает, но аппаратных брекпойнтов всего два - неудобно. Как бы это обойти ?
Более мелкий косяк: если в скрипте инициализации вставить брекпойнт он нигде не показывается - на в gdb ни в openocd и его невозможно удалить.
oleg_kaa
Все точки останова должны устанавливаться после того как ядро включило MMU
_3m
Цитата(oleg_kaa @ Mar 4 2011, 19:52) *
Все точки останова должны устанавливаться после того как ядро включило MMU

Я как бы в курсе.
Хорошо бы это автоматизировать
oleg_kaa
Цитата(_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

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.