|
Odd address trap и LPC23xx, А что, LPC не генерит unaligned access exeption? |
|
|
|
Jan 15 2009, 18:43
|

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 читается/пишется переставленный мусор, и все это МОЛЧА. Такая низость в самом деле имеет место, или я чего-то недопонимаю?
|
|
|
|
|
 |
Ответов
|
Jan 17 2009, 08:52
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Прямо скажу, я за 3 года об АРМах столько всего начитался, что уже не помню когда и где читал. Но скорее всего где-то в разделе об ограничениях USER MODE. Точно помню, что в этом режиме нельзя изменить младшие биты регистра флагов, отвечающих за текущий режим и за запрет прерываний. Мне сейчас лень искать всем желающим нужную им инфу. Подсказки я дал. Все желающие - на поиски!!! А не вылетание в аборт при невыровненном чтении имеет свои плюсы. Жаль, что IAR это делать не умеет, но эта фича даёт возможность прочитать 32 бита с любого нечётного адреса всего за две команды LDR. Например читая слово с адреса 1 в регистр прочитаются правильно сразу три байта. Старший байт нужно будет прочитать в другой регистр из адреса 5. Потом по маске их объеденить. Браво LPC!!!  Потестировал это дело на LPC2134/01 но не срабатывает исключение ни в SYSTEM, ни в USER. Абыдно  А может где-то флажок стоит, управляющий этой фичей.
Сообщение отредактировал GetSmart - Jan 17 2009, 08:58
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jan 18 2009, 11:17
|

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

|
Цитата(GetSmart @ Jan 17 2009, 10:52)  А не вылетание в аборт при невыровненном чтении имеет свои плюсы. Жаль, что IAR это делать не умеет, но эта фича даёт возможность прочитать..... Сейчас попробовал переписать один относительно критичный кусочек работающий (никаих проблем не было - компилятор, естественно, сам разруливал) в кольцевом буфере с 16bit данными под описаный стиль "корреция результата после чтения по невыровненному адресу" результат мне понравился. Если до этого я в принципе пребывал на позициях - особо без разницы есть аборт или нет, то теперь чаша весов (если действительно требуется выжимать быстродействие) склоняется к безабортовому варианту.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|