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

 
 
> Проблемы с отладкой ATSAMS34C
RootSDF
сообщение May 22 2013, 07:08
Сообщение #1





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



В общем, подключаюсь отладчиком к контроллеру и наблюдаю следующую вещь: камень после старта прыгает по адресу 0x40003С попадая в где-то в первую половину таблицы векторов прерывания, затем выполняя ее как код доходит до функций лежащих сразу за таблицей, после чего благополучно падает в прерывание Hard fault. В таблице векторов прерывания, по крайней мере, адрес обработчика Reset Handler стоит верно. Почему контроллер вместо адреса 0x400118 (Reset handler) берет левый адрес?

В качестве отладчика J-Link, среда Eclipse IDE for C/C++ Developers Version: Juno Service Release 2 Build id: 20130225-0426, компилятор Yagarto binutils: 2.23.1, gcc: 4.7.2, newlib: 1.20.0, gdb: 7.5.1. Отлаживаю через GDB Hardware Debuging.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RootSDF
сообщение May 22 2013, 08:53
Сообщение #2





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



Посмотрел логи GDB (J-link) сервера:

Connected to 127.0.0.1
Reading all registers
Read 4 bytes @ address 0x00000000 (Data = 0x2000B1E0)
Resetting target
Read 4 bytes @ address 0x00000000 (Data = 0x2000B1E0)
JTAG speed set to 6000 kHz
Target endianess set to "little endian"
Select flash device: AT91SAM3S4C
Flash breakpoints enabled
Downloading 16256 bytes @ address 0x00400000 - Verified OK
Downloading 9472 bytes @ address 0x00403F80 - Verified OK
Downloading 56 bytes @ address 0x00406480 - Verified OK
Writing register (PC = 0x00400000)
Read 4 bytes @ address 0x00000000 (Data = 0x2000B1E0)
Read 4 bytes @ address 0x00000004 (Data = 0x00400119)
Read 4 bytes @ address 0x00000008 (Data = 0x004000CD)
Read 4 bytes @ address 0x0000000C (Data = 0x004000D5)
Read 4 bytes @ address 0x00000010 (Data = 0x004000DD)
Read 4 bytes @ address 0x00000014 (Data = 0x004000E5)
Read 4 bytes @ address 0x00000018 (Data = 0x004000ED)
Read 4 bytes @ address 0x0000001C (Data = 0x00000000)
Read 4 bytes @ address 0x00000020 (Data = 0x00000000)
Read 4 bytes @ address 0x00000024 (Data = 0x00000000)
Read 4 bytes @ address 0x00000028 (Data = 0x00000000)
Read 4 bytes @ address 0x0000002C (Data = 0x004000F5)

получается что отладчик сам меняет значение регистра PC на 0x00400000.
На каком этапе и кто это может делать?

Провел эксперимент: взял старую версию ПО написанную еще на IAR`е. IAR c J-Link работает напрямую, не через GDB сервер.
Попытался ее отладить на контроллере. Среда выдает предупреждения что прошивка записалась неправильно.
При этом он останавливается по правильному адресу 0x400118.
Получается что все таки адрес береться правильно. Почему он в режиме работы через GDB меняется на 0x400000?
Go to the top of the page
 
+Quote Post



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

 


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


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