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

 
 
> исключительные ситуации
dimka76
сообщение Dec 19 2007, 06:52
Сообщение #1


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



в арме есть исключительная ситуация - ошибка данных.
Объясните пожалуйста, что это такое?


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Dec 19 2007, 10:03
Сообщение #2


.
******

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



В 7-ом АРМе можно без проблем читать невыровненные адреса. Делал так в LPC21xx.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
xelax
сообщение Dec 19 2007, 12:09
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(GetSmart @ Dec 19 2007, 13:03) *
В 7-ом АРМе можно без проблем читать невыровненные адреса. Делал так в LPC21xx.


Я бы не стал так утверждать. Например SAM7 генерирует исключения.

К стати Вы ассемблерной код смотрели такого чтения. Может просто компилятор за Вас побайтовое чтение организовал smile.gif

Цитата(Dron_Gus @ Dec 19 2007, 13:51) *
ОФФ: А что делает линух в этой ситуации? Убивает поток, вызвавший ошибку, или останавливается полностью?


Линукс по коду команды определяет что надо было сделать.

вот исходник
http://www.gelato.unsw.edu.au/lxr/source/a.../mm/alignment.c

Сообщение отредактировал xelax - Dec 19 2007, 12:00
Go to the top of the page
 
+Quote Post
Alex03
сообщение Dec 20 2007, 05:14
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(xelax @ Dec 19 2007, 13:19) *
Не только к несуществующим, но ещё и к невыровненным. Например при двубайтном обращении, адрес к которому обращаешься должен быть кратен двум.

Цитата(GetSmart @ Dec 19 2007, 15:03) *
В 7-ом АРМе можно без проблем читать невыровненные адреса. Делал так в LPC21xx.

Цитата(xelax @ Dec 19 2007, 17:09) *
Я бы не стал так утверждать. Например SAM7 генерирует исключения.
К стати Вы ассемблерной код смотрели такого чтения. Может просто компилятор за Вас побайтовое чтение организовал smile.gif


Помнится уже был топик по этому поводу.
ИМХО ядро ARM выдаёт внешнему контроллеру памяти чего хочет (читать/писать, по какому адресу....), а уже этот контроллер памяти генерит в случае необходимости исключения, или не генерит если обладает более продвинутой логикой, умеет разбивать одно обращение на несколько (не только в случае невыровненности, но и, например, при чтении 32-х разрядного слова из 8-ми байтовой битовой (вот это я очепятался) внешней памяти) и т.д.
У NXP этот контроллер один, у Atmel другой....

Ну и компиляторы в ряде случаев умеют разбивать обращения к памяти (если знают что это надо делать). Например обращение к невыровненной глобальной переменной прокатывает я надеюсь везде, только зачастую разбивается на байтовые обращения.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:19
Рейтинг@Mail.ru


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