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

 
 
> Prefetch abort, туплю
SpiritDance
сообщение Jun 1 2009, 07:24
Сообщение #1


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Непонятно поведение программы.
Через некоторое время работы (коннект по CSD и прогон данных туда/сюда) процессор вылетает в префетч, При этом в LR бешеный адрес начинающийся на 0xD8.

Вопрос. Я правильно понимаю что каким-то образом портится стек? Как это можно проверить и собственно как его можно попортить? Все указатели прна копирование информации при этом остаются целехонькими соответственно вроде не они.

Подскажите способ каким образом можно отловить момент ошибки а то я что-то не очень понимаю как это побороть?


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Jun 1 2009, 07:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SpiritDance @ Jun 1 2009, 11:24) *
Подскажите способ каким образом можно отловить момент ошибки а то я что-то не очень понимаю как это побороть?

Для начала, крепко подумать, откуда на стеке может взяться "бешеный адрес начинающийся на 0xD8", иногда по числу удается понять, откуда оно пришло.

Еще можно порекомендовать посмотреть содержимое LR того режима, из которого влетели в аборт.
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Jun 3 2009, 10:08
Сообщение #3


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(aaarrr @ Jun 1 2009, 11:41) *
Для начала, крепко подумать, откуда на стеке может взяться "бешеный адрес начинающийся на 0xD8", иногда по числу удается понять, откуда оно пришло.


Там на самом деле разный мусор. Число каждый раз непонятное, ни очем не говорящее.


Цитата(aaarrr @ Jun 1 2009, 11:41) *
Еще можно порекомендовать посмотреть содержимое LR того режима, из которого влетели в аборт.

Смотрел. Влетаю явно из систем-режима, но в данном регистре вообще был нечетный адрес.

Проблема была хитрой. Парсер от процессора ловил некоторую сигнатуру в данных и принимал ее за команду и... всё.

Но она была явно не одна.

Сейчас наблюдаю вылет по данным.

Проблема в том что без отключенной оптимизации код вместе с сегментом констант и инициализированных данных не влезает в процессор. Соответственно под отладчиком посмотреть не получается - информация для него отсутсвует и он кажет хрень.

Закомментировал некоторое количество кода и запустил без оптимизатора (none и low) - сбоев нет. Включаю оптимизатор и сбоит, причем точку вылета поймать пока не удается - в отладчике опять охинея, плюс он подвисает в самый неудачный момент. Программа без операционки, но с кучей конечных автоматов. Хорошо хоть проблема стабильно проявляется.

Уарты все заняты и в консольку я выбросить ничего не могу, есть только вариант с USB. Однако непонятно как написав обработчик dataabort дотянутся до регистров system.

Чтобы сделать такого чтоб добраться до истока проблемы? Мозг уже сломал.

Цитата(IgorMarx @ Jun 1 2009, 20:50) *
А нескромный вопрос мона? Какая среда программирования? Какой язык программирования? Тут не боги заседают.

Не знаю чем поможет такое уточнение. Проц sams256 + IAR4.41A.

Цитата(IgorMarx @ Jun 1 2009, 20:50) *
Кстати, отладчик может предупреждать о переполнении стека. Нужно смотреть в окне отладочных сообщений.

Угу. Это если ему будет угодно то да, покажет. Ну если конечно не зависнет.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 3 2009, 15:03
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SpiritDance @ Jun 3 2009, 13:08) *
Сейчас наблюдаю...

Как Вам уже рекомендовали, сделайте нормальный обработчик исключений. У меня, например, выдат такую информацию:
Код
Abort:[D] PC:00006774 Op:E18060B1 CPSR:200000DF
   LR:00015D44 SP:40004C74
SP[0]:DEADBEEF->400024B8->400024B8->0001F4AC->
SP[4]:00000004->00000000->4000015C->0000BF24
Test:00000000
R0:00000000 R1:00000000 R2:00000003 R3:D0120F12  R4:40001D94  R5:400024B8
R6:0000CA02 R7:40000060 R8:00000004 R9:00000002 R10:40000010 R11:00000001
R12:000000C0

Еще ни разу не довелось не найти по ней причину. Адрес известен, функция по map файлу. Место по листингу, если оптимизация сильно мешает понять - отключается на конкретных местах, если функция не виноватая, типа "memcpy", то в Вашем распоряжении LR и стек для поиска первоисточника


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SpiritDance   Prefetch abort   Jun 1 2009, 07:24
|- - aaarrr   Цитата(SpiritDance @ Jun 3 2009, 14:08) П...   Jun 3 2009, 10:19
||- - SpiritDance   Цитата(aaarrr @ Jun 3 2009, 14:19) Просто...   Jun 3 2009, 10:28
|- - SpiritDance   Цитата(zltigo @ Jun 3 2009, 19:03) Как Ва...   Jun 3 2009, 17:32
- - IgorMarx   А нескромный вопрос мона? Какая среда программиров...   Jun 1 2009, 16:50
|- - aaarrr   Цитата(IgorMarx @ Jun 1 2009, 20:50) А не...   Jun 1 2009, 18:23
|- - zltigo   Цитата(IgorMarx @ Jun 1 2009, 19:50) 3. А...   Jun 2 2009, 08:04
- - xelax   Значение LR при perfetch слабо помогают, потомучто...   Jun 2 2009, 06:02
|- - aaarrr   Цитата(xelax @ Jun 2 2009, 10:02) Значени...   Jun 2 2009, 07:19
|- - xelax   Цитата(aaarrr @ Jun 2 2009, 11:19) LR_abt...   Jun 2 2009, 11:01
|- - aaarrr   Цитата(xelax @ Jun 2 2009, 15:01) Не согл...   Jun 2 2009, 11:19
||- - xelax   Цитата(aaarrr @ Jun 2 2009, 15:19) Соверш...   Jun 2 2009, 14:43
||- - aaarrr   Цитата(xelax @ Jun 2 2009, 18:43) А вообщ...   Jun 2 2009, 18:35
|- - defunct   Цитата(xelax @ Jun 2 2009, 14:01) По край...   Jun 2 2009, 12:51
- - KAlex   Цитата(SpiritDance @ Jun 1 2009, 11:24) В...   Jun 2 2009, 08:21
- - Shaienn   Добрый день. Поднимаю тему из-за непонимания. Все...   Jun 14 2010, 12:08
- - aaarrr   Цитата(Shaienn @ Jun 14 2010, 16:08) Ведь...   Jun 14 2010, 17:21


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

 


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


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