Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: at91rm9200 - неинициализированный указатель
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
sergeeff
Команда разработчиков перетаскивает большой старый проект на at91rm9200. Где-то происходит запись полей стуктуры, которая не была должным образом инициализирована. Ясно, что данные пишутся куда-то в область около нулевых адресов, затирая при этом вектора прерываний. Нет ли каких мыслей по отладке таких событий?
AlexBoy
Цитата(sergeeff @ Jul 26 2007, 18:42) *
Команда разработчиков перетаскивает большой старый проект на at91rm9200. Где-то происходит запись полей стуктуры, которая не была должным образом инициализирована. Ясно, что данные пишутся куда-то в область около нулевых адресов, затирая при этом вектора прерываний. Нет ли каких мыслей по отладке таких событий?

Я такие вещи стараюсь отлавливать на PC, в С++ Buildere есть режим компиляции с CodeGuard. Отлавливаются неправильные выделения и освобождения памяти.
sergeeff
Идея здравая. Я тоже стараюсь сначала вновь разрабатываемые модули погонять на модели на PC. Очень помогает и убыстряет весь процесс.

Но тут слишком много завязок на железо. Собственно идеи были как-то задействовать MMU. Пробовал первый мегабайт делать read-only и принудительно что-то по тем адресам писать. По идее должен бы возникать data abort exception? У меня реакции - никакой. Или эта идея левая?
e-yes
Цитата(sergeeff @ Jul 27 2007, 13:44) *
Но тут слишком много завязок на железо. Собственно идеи были как-то задействовать MMU. Пробовал первый мегабайт делать read-only и принудительно что-то по тем адресам писать. По идее должен бы возникать data abort exception? У меня реакции - никакой. Или эта идея левая?

А в каком режиме? IMHO, в System или Supervisor может и не "вылетать", нет?
sergeeff
В SYSTEM. Только я чего-то не читал нигде, что появление exception зависит от режима.
Dron_Gus
Embedded Trace Macrocell: ETM9 Rev2a
...
– Four Pairs of Address Comparators
– Two Data Comparators
...

Используйте. Кажется J-Link прекрасно ставит эти точки останова.
defunct
Можно проинициализировать MMU с запретом записи в "около нулевые адреса". Будет генериться Data Abort при попытке таких записей.
sergeeff
Ну я так и пробовал делать. Первый мегабайт адресов объявил как read-only. И туда явно пробовал писать. Ровным счетом ничего не происходит. Что-то делаю не так?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.