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

 
 
> Танцы с Бубном!, Или повесть о потерянном Link Registr'e
SanyaKID
сообщение Jul 27 2007, 10:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 13-09-06
Пользователь №: 20 359



Работаю на отладочной плате OLIMEX Header boards. Проц - LPC2138. Кому интересно можно поглядеть тут http://www.mt-system.ru/p125.mt . Среда Keil. Компилятор RealView.
Есть функция сравнивающая 2 больших массива, где в первых двух байтах длина массивов. По окончании сравнения если равно возвращается 0, если больше 1, если меньше -1. Так вот при возврате "-1" в определенный момент, когда определенное число принимает определенное значение (сравнение производится в цикле), следующий код портит R14.

Код
0001e4  e1d300b0          LDRH     r0,[r3,#0]
0001e8  e1d110b0          LDRH     r1,[r1,#0]
0001ec  e1500001          CMP      r0,r1
0001f0  9a000001          BLS      |L1.508|
                  |L1.500|
0001f4  e3a00001          MOV      r0,#1
0001f8  e12fff1e          BX       lr
                  |L1.508|
0001fc  e3e00000          MVN      r0,#0
000200  e12fff1e          BX       lr


До команды CMP r0,r1 содержимое R14 верное, после нее становится неверным.
Содержимое R0 и R1 таково, что переход идет в метку L1.500 и соответственно возвращается функция не туда откуда вызывалась.

Такой глюк возникает только в определенный момент, то не всегда. Гдето 95% глюка, в остальное время этот момент проходит, но скорее всего при следующей итерации в цикле глюк повторяется.

На что грешить и не знаю даже. В функции нет вообще ни одной команды, как либо работающей с R14.

Бьюсь головой в стену уже второй день sad.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SanyaKID   Танцы с Бубном!   Jul 27 2007, 10:39
- - vmp   А что с прерываниями? Может, они портят? Для контр...   Jul 27 2007, 10:50
- - SanyaKID   Вполне может быть вызвано прерывание от таймера (И...   Jul 27 2007, 10:57
|- - Сергей Борщ   Цитата(SanyaKID @ Jul 27 2007, 13:57) Но ...   Jul 27 2007, 11:37
|- - defunct   Цитата(SanyaKID @ Jul 27 2007, 13:57) Впо...   Jul 27 2007, 23:59
- - SanyaKID   Попробовал отключать прерывания от таймера - таже ...   Jul 27 2007, 12:01
|- - Сергей Борщ   Цитата(SanyaKID @ Jul 27 2007, 15:01) Поп...   Jul 27 2007, 13:34
- - GetSmart   Где-то тут Data Abort-ом пахнет Код0001e4 e1d300...   Jul 27 2007, 13:32
- - GetSmart   А где собсно возврат результата "-1" ?   Jul 27 2007, 13:35
- - Andy Mozzhevilov   А какая у вас ревизия чипа ? Случаем не C или D? А...   Jul 30 2007, 09:04
- - SanyaKID   Я был в отпуске... Тока что вернулся. Проблема ока...   Aug 20 2007, 13:37
|- - Andy Mozzhevilov   Цитата(SanyaKID @ Aug 20 2007, 19:37) Я б...   Aug 21 2007, 08:47
- - SanyaKID   Ревизия чипа - С. Я отключил МАМ вообще. С частичн...   Aug 21 2007, 09:20
|- - Andy Mozzhevilov   Цитата(SanyaKID @ Aug 21 2007, 15:20) Рев...   Aug 21 2007, 09:37
|- - zltigo   Цитата(Andy Mozzhevilov @ Aug 21 2007, 12...   Aug 21 2007, 10:01
|- - Andy Mozzhevilov   Цитата(zltigo @ Aug 21 2007, 16:01) С MAM...   Aug 21 2007, 11:10
|- - zltigo   Цитата(Andy Mozzhevilov @ Aug 21 2007, 14...   Aug 21 2007, 11:45
- - SanyaKID   Попробовал с МАМCR=1 - на старте вылетает в Prefet...   Aug 21 2007, 11:04
- - SanyaKID   Я юзаю KEIL. И насколько я понял все настройки там...   Aug 21 2007, 11:19
- - SanyaKID   Во, у меня примерно также. Только перед PLL еще VP...   Aug 21 2007, 11:52


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

 


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


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