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

 
 
> Odd address trap и LPC23xx, А что, LPC не генерит unaligned access exeption?
VslavX
сообщение Jan 15 2009, 18:43
Сообщение #1


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



У меня в тестовой прошивке есть такой небольшой чудный кусочек кода:
Код
{
    ungigned long *p;
    dprintf("\r\nNon aligned DWORD read.. ");
    dflush();
    p = (unsigned long*)(0x209 + LPC_ISRAM);
    dprintf("%08X", *p);
}


Назначение этого кусочка - протестировать работу соответствующего обработчика исключения. Код прекрасно отработал на S3C44BOX, S3C2410, IXP42x, SAM7xx, PXA2xx/3xx и много лет все было чудесно. И вот, "понимаете, в машине в которой мы ехали, случайно, совершенно случайно, оказался цемент" ©. Я "совершенно случайно" запустил этот код на LPC2388, и... не увидел свой любимый "ODD ADDRESS TRAP".
Смотрим документацию, "усер мануал" на LPC23xx вообще не содержит слова "unaligned". В-общем, красота - при невыравненном адресе - на LPC23xx читается/пишется переставленный мусор, и все это МОЛЧА. Такая низость в самом деле имеет место, или я чего-то недопонимаю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Jan 17 2009, 08:52
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Прямо скажу, я за 3 года об АРМах столько всего начитался, что уже не помню когда и где читал. Но скорее всего где-то в разделе об ограничениях USER MODE. Точно помню, что в этом режиме нельзя изменить младшие биты регистра флагов, отвечающих за текущий режим и за запрет прерываний. Мне сейчас лень искать всем желающим нужную им инфу. Подсказки я дал. Все желающие - на поиски!!!

А не вылетание в аборт при невыровненном чтении имеет свои плюсы. Жаль, что IAR это делать не умеет, но эта фича даёт возможность прочитать 32 бита с любого нечётного адреса всего за две команды LDR. Например читая слово с адреса 1 в регистр прочитаются правильно сразу три байта. Старший байт нужно будет прочитать в другой регистр из адреса 5. Потом по маске их объеденить. Браво LPC!!! smile.gif

Потестировал это дело на LPC2134/01 но не срабатывает исключение ни в SYSTEM, ни в USER. Абыдно sad.gif А может где-то флажок стоит, управляющий этой фичей.

Сообщение отредактировал GetSmart - Jan 17 2009, 08:58


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 18 2009, 11:17
Сообщение #3


Гуру
******

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



Цитата(GetSmart @ Jan 17 2009, 10:52) *
А не вылетание в аборт при невыровненном чтении имеет свои плюсы. Жаль, что IAR это делать не умеет, но эта фича даёт возможность прочитать.....



Сейчас попробовал переписать один относительно критичный кусочек работающий (никаих проблем не было - компилятор, естественно, сам разруливал) в кольцевом буфере с 16bit данными под описаный стиль "корреция результата после чтения по невыровненному адресу" результат мне понравился. Если до этого я в принципе пребывал на позициях - особо без разницы есть аборт или нет, то теперь чаша весов (если действительно требуется выжимать быстродействие) склоняется к безабортовому варианту.


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

Сообщений в этой теме
- VslavX   Odd address trap и LPC23xx   Jan 15 2009, 18:43
- - aaarrr   Цитата(VslavX @ Jan 15 2009, 21:43) Такая...   Jan 15 2009, 19:37
|- - VslavX   Цитата(aaarrr @ Jan 15 2009, 21:37) Имеет...   Jan 15 2009, 20:08
|- - abcdefg   Цитата(VslavX @ Jan 15 2009, 23:08) P.S. ...   Jan 16 2009, 07:35
|- - VslavX   Цитата(abcdefg @ Jan 16 2009, 09:35) в ко...   Jan 16 2009, 07:56
- - amw   Цитата(VslavX @ Jan 15 2009, 20:43) У мен...   Jan 16 2009, 07:43
- - meister   Цитата(VslavX @ Jan 15 2009, 22:43) В-общ...   Jan 16 2009, 08:33
|- - VslavX   КодIf the memory address is not word-aligned, the ...   Jan 16 2009, 09:02
|- - meister   Цитата(VslavX @ Jan 16 2009, 13:02) В люб...   Jan 16 2009, 09:04
|- - zltigo   Цитата(VslavX @ Jan 16 2009, 12:02) Очень...   Jan 16 2009, 09:58
|- - defunct   Цитата(zltigo @ Jan 16 2009, 11:58) (кста...   Jan 16 2009, 10:20
||- - zltigo   Цитата(defunct @ Jan 16 2009, 13:20) Комп...   Jan 16 2009, 10:30
||- - defunct   Цитата(zltigo @ Jan 16 2009, 12:30) Отнюд...   Jan 16 2009, 13:27
||- - zltigo   Цитата(defunct @ Jan 16 2009, 16:27) Это ...   Jan 16 2009, 13:38
|||- - defunct   Цитата(zltigo @ Jan 16 2009, 15:38) В дан...   Jan 16 2009, 13:49
|||- - GetSmart   Цитата(defunct @ Jan 16 2009, 19:49) Не, ...   Jan 16 2009, 14:16
|||- - defunct   Цитата(GetSmart @ Jan 16 2009, 16:16) Ещё...   Jan 16 2009, 18:01
|||- - GetSmart   Цитата(defunct @ Jan 17 2009, 00:01) Да н...   Jan 17 2009, 05:12
|||- - VslavX   Цитата(GetSmart @ Jan 17 2009, 07:12) А в...   Jan 17 2009, 06:46
|||- - defunct   Цитата(GetSmart @ Jan 17 2009, 07:12) Пар...   Jan 17 2009, 17:00
|||- - zltigo   Цитата(defunct @ Jan 17 2009, 19:00) В та...   Jan 17 2009, 17:13
|||- - defunct   Цитата(zltigo @ Jan 17 2009, 19:13) Вы, э...   Jan 17 2009, 18:25
|||- - aaarrr   Цитата(defunct @ Jan 17 2009, 21:25) т.к....   Jan 17 2009, 18:41
|||- - abcdefg   Цитата(defunct @ Jan 17 2009, 21:25) О то...   Jan 17 2009, 18:47
|||- - zltigo   Цитата(defunct @ Jan 17 2009, 20:25) О то...   Jan 17 2009, 19:46
||||- - defunct   Цитата(zltigo @ Jan 17 2009, 21:46) Ну и ...   Jan 18 2009, 00:44
||||- - GetSmart   Цитата(defunct @ Jan 18 2009, 06:44) Согл...   Jan 18 2009, 06:15
||||- - defunct   Цитата(GetSmart @ Jan 18 2009, 08:15) Дам...   Jan 18 2009, 21:46
|||- - VslavX   Цитата(defunct @ Jan 17 2009, 20:25) на L...   Jan 17 2009, 19:58
||- - GetSmart   Цитата(defunct @ Jan 16 2009, 19:27) Код*...   Jan 16 2009, 13:43
|- - VslavX   Цитата(zltigo @ Jan 16 2009, 11:58) Вообщ...   Jan 16 2009, 11:03
|- - meister   Цитата(zltigo @ Jan 16 2009, 13:58) Тут с...   Jan 16 2009, 11:11
|- - zltigo   Цитата(VslavX @ Jan 16 2009, 14:03) Самый...   Jan 16 2009, 12:07
|- - VslavX   Цитата(zltigo @ Jan 16 2009, 14:07) Все в...   Jan 16 2009, 16:23
|- - zltigo   Цитата(VslavX @ Jan 16 2009, 19:06) Чему ...   Jan 16 2009, 16:38
|- - VslavX   Цитата(zltigo @ Jan 16 2009, 18:24) проек...   Jan 16 2009, 16:39
|- - zltigo   Цитата(VslavX @ Jan 16 2009, 19:39) А мож...   Jan 16 2009, 17:01
|- - VslavX   Цитата(zltigo @ Jan 16 2009, 19:01) memcp...   Jan 16 2009, 18:06
|- - zltigo   Цитата(VslavX @ Jan 16 2009, 21:06) Ну и ...   Jan 16 2009, 18:52
|- - VslavX   Цитата(zltigo @ Jan 16 2009, 20:52) Посме...   Jan 16 2009, 20:28
|- - zltigo   Цитата(VslavX @ Jan 16 2009, 22:28) Гы, я...   Jan 16 2009, 21:45
|- - aaarrr   Цитата(zltigo @ Jan 18 2009, 14:17) Если ...   Jan 18 2009, 12:10
||- - zltigo   Цитата(aaarrr @ Jan 18 2009, 14:10) генер...   Jan 18 2009, 12:14
|- - VslavX   Имхо, это уж совсем клиническая ситуация - "н...   Jan 18 2009, 13:06
- - zltigo   ЦитатаИмхо, это уж совсем клиническая ситуация - ...   Jan 18 2009, 13:18
|- - VslavX   Мне правда интересно. На ARM-е можно любой невырав...   Jan 18 2009, 13:30
|- - zltigo   Цитата(VslavX @ Jan 18 2009, 15:30) Не по...   Jan 18 2009, 13:53
|- - VslavX   Цитата(zltigo @ Jan 18 2009, 15:53) У мен...   Jan 18 2009, 14:29
|- - zltigo   Цитата(VslavX @ Jan 18 2009, 16:29) Ну, д...   Jan 18 2009, 15:32
|- - VslavX   Кодtst R0,#0x3 ldrh R0,[R0, #+0] lsrne ...   Jan 18 2009, 15:47
|- - GetSmart   Цитата(zltigo @ Jan 18 2009, 21:32) Кодls...   Jan 18 2009, 16:28
|- - zltigo   Цитата(GetSmart @ Jan 18 2009, 18:28) Это...   Jan 18 2009, 17:27
|- - VslavX   КодBYTE tbuff[8] = { 0x01, 0x02, 0x03, 0x0...   Jan 18 2009, 19:32
|- - zltigo   Цитата(VslavX @ Jan 18 2009, 21:32) А чег...   Jan 18 2009, 20:06
|- - VslavX   Цитата(zltigo @ Jan 18 2009, 22:06) Писал...   Jan 18 2009, 20:37
|- - zltigo   Цитата(VslavX @ Jan 18 2009, 22:37) Я так...   Jan 18 2009, 20:55
- - Rst7   Цитатаtst R0,#0x3 ldrh R0,[R0, #+0] lsrne...   Jan 18 2009, 15:43
|- - zltigo   Цитата(Rst7 @ Jan 18 2009, 17:43) Простит...   Jan 18 2009, 16:05
|- - VslavX   Цитата(zltigo @ Jan 18 2009, 18:05) Я НЕ ...   Jan 18 2009, 16:28
- - GetSmart   Понятно, хочется переложить на процессор собственн...   Jan 19 2009, 06:00
- - defunct   Цитата(GetSmart @ Jan 19 2009, 08:00) Пон...   Jan 19 2009, 11:39
- - GetSmart   Цитата(defunct @ Jan 19 2009, 17:39) Два ...   Jan 19 2009, 12:28


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

 


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


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