Я включил следующие конфигурации для ядра Linux:
Код: Выделить всё
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_INFO=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_KGDB=y
CONFIG_FRAME_POINTER=y
Код: Выделить всё
echo ttyPS0 > /sys/module/kgdboc/parameters/kgdboc
Код: Выделить всё
echo g > /proc/sysrq-trigger
Код: Выделить всё
$ aarch64-linux-gnu-gdb vmlinux
(gdb)set serial baud 115200
(gdb)set debug remote 1
(gdb)set architecture armv7
(gdb)set substitute-path /usr/src/debug/linux-xlnx/6.1.30-xilinx-v2023.2+git999-r0 /home/test/repos/linux-xlnx
(gdb)target remote /dev/ttyACM0
Я тестировал отладку, устанавливая точки останова в коде ядра, который я может запускаться из командной строки. В частности, я установил точку останова на meminfo_proc_show, которую можно запустить, выполнив cat /proc/meminfo из цели. Я могу выполнять код до тех пор, пока не будет выполнена следующая инструкция:
Код: Выделить всё
│ 0xc02ae480 bl 0xc082ca80
Код: Выделить всё
(gdb) si
Sending packet: $Z0,c02ae43c,4#6b...Ack
Packet received: OK
Sending packet: $Z0,c02ae474,4#40...Ack
Packet received: OK
Sending packet: $Z0,c02ae484,4#41...Ack
Packet received: OK
Sending packet: $mc02ae470,4#f3...Ack
Packet received: 82f915eb
Sending packet: $mc02ae470,4#f3...Ack
Packet received: 82f915eb
Sending packet: $mc082ca80,4#f6...Ack
Packet received: 033010e2
Sending packet: $mc02ae470,4#f3...Ack
Packet received: 82f915eb
Sending packet: $mc02ae470,4#f3...Ack
Packet received: 82f915eb
Sending packet: $mc02ae470,4#f3...Ack
Packet received: 82f915eb
Sending packet: $Z0,c082ca80,4#3f...Ack
Packet received: OK
Sending packet: $c#63...Ack
Я пробовал разные версии GDB (включая последнюю), разные комбинации записей конфигурации Kconfig, отладочную информацию хранил в отдельных файлах. , KGDB через Ethernet.
Но как только я обнаруживаю bl memset, плата перестает отвечать. Я заметил, что другие инструкции ветвления и ссылки вызывают такое же поведение (только те, которые переходят в удаленное место). Другие инструкции ветвления работают нормально.
Когда я искал альтернативы, я обнаружил, что отладка через QEMU и встроенный в него GDB работает безупречно, но мне хотелось бы отладить реальное оборудование.
Может ли кто-нибудь мне помочь? Неправильная настройка КГДБ? Я понятия не имею, как продолжить дальше.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ot-working
Мобильная версия