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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Переключить режим работы ARM, текущее состояние ядра Abort, надо переключить в Supervisor
impatt
сообщение Mar 17 2010, 09:16
Сообщение #1


Частый гость
**

Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088



Сорри за тупой вопрос.
Я не спец в АРМ-ах, но кое-что надо сделать, не познавая весь мир со стадии "когда Земля была жидкая". Посему нуждаюсь в конкретных советах: у меня есть консоль OpenOCD, подключенного к ARM1136, я могу загружать туда код и исполнять его, могу даже сделать что-то на ассемблере, скомпилировать и выдрать бинарный образ из ELF-контейнера. Надо переключить состояние с Abort или Undefined Instruction на Supervisor. Беда в том, что не знаю до тонкостей ARM-ассемблера и особенностей работы.
Собсна, вот.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
Aurochs
сообщение Mar 18 2010, 11:55
Сообщение #2


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Вот фрагмент кода на ассемблере, который позволит переключиться в режим супервизора
Код
  mrs r0, cpsr
  bic r0, r0, #0x1F
  orr r1, r0, #0x13
  msr cpsr_cxsf, r1
Go to the top of the page
 
+Quote Post
impatt
сообщение Mar 19 2010, 03:05
Сообщение #3


Частый гость
**

Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088



Цитата(Aurochs @ Mar 18 2010, 16:55) *
Вот фрагмент кода на ассемблере, который позволит переключиться в режим супервизора

Вольшое спасибо, похоже на то, что требуется smile.gif
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 19 2010, 12:57
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Если не секрет. Откуда возникла такая потребность? Оба режима Abort или Undefined Instruction - это "аварийные режимы" процессора. Если вы в них попали, надо выяснять почему и исправлять программу. А вываливаться из них какой смысл?
Go to the top of the page
 
+Quote Post
impatt
сообщение Mar 19 2010, 13:37
Сообщение #5


Частый гость
**

Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088



Цитата(sergeeff @ Mar 19 2010, 17:57) *
Если не секрет. Откуда возникла такая потребность? Оба режима Abort или Undefined Instruction - это "аварийные режимы" процессора. Если вы в них попали, надо выяснять почему и исправлять программу. А вываливаться из них какой смысл?

Не секрет, конечно: после сброса и до ввода в режим отладки, процессор успевает исполнять какой-то мусор с флэшки. Мне же его надо иметь в нормальном состоянии. Собственно, вот smile.gif
Вообще, я пока приведённым рецептом не воспользовался - нашёл способ сделать инче, но это частный случай, а так-то рецептик себе на манжету запишу smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 21 2010, 00:32
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(sergeeff @ Mar 19 2010, 14:57) *
А вываливаться из них какой смысл?

Да есть много причин возвращаться из Abort'а в svsr.. К примеру определить объем реально подключенной SDRAM памяти.
Плюсуете к адресу по мегабайту - натыкаетесь на датааборт - вот собсно и верхняя граница памяти.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 21 2010, 01:06
Сообщение #7


Гуру
******

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



Цитата(defunct @ Mar 21 2010, 03:32) *
Плюсуете к адресу по мегабайту - натыкаетесь на датааборт - вот собсно и верхняя граница памяти.

А контроллер памяти откуда вдруг знает о границах? Получите overlap и все.

P.S. impat, сменили б вы юзерпик - глаза можно сломать, чесслово!
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 21 2010, 01:45
Сообщение #8


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(aaarrr @ Mar 21 2010, 03:06) *
А контроллер памяти откуда вдруг знает о границах? Получите overlap и все.

В реальной системе получаю abort. Откуда контроллер памяти знает меня не интересовало.
Если не нравится пример с памятью - другой пример - сохранение svsr fault регистров при краше.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 21 2010, 01:49
Сообщение #9


Гуру
******

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



Цитата(defunct @ Mar 21 2010, 04:45) *
В реальной системе получаю abort. Откуда контроллер памяти знает меня не интересовало.

А вот мне интересно. Можно узнать, что за система, и при каких условиях получается abort?
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 21 2010, 01:58
Сообщение #10


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(aaarrr @ Mar 21 2010, 03:49) *
А вот мне интересно. Можно узнать, что за система, и при каких условиях получается abort?

SoC на двух 1136 ARM'ах, чей там SDRAM контроллер, - не знаю... Дает аборт при доступе к несуществующей памяти, даже если в MMU ARM'ов помечено, что память там есть.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 21 2010, 02:10
Сообщение #11


Гуру
******

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



Цитата(defunct @ Mar 21 2010, 04:58) *
SoC на двух 1136 ARM'ах, чей там SDRAM контроллер, - не знаю... Дает аборт при доступе к несуществующей памяти, даже если в MMU ARM'ов помечено, что память там есть.

Хорошо, а как инициализируется этот контроллер - знаете? Просто ведь неоткуда знать ему, что там и в каком количестве снаружи прикручено, если только кто-то (сам процессор, точнее) не подскажет.
А вот генерить abort там, где ему было сказано, что памяти нет - это пожалуйста.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 21 2010, 02:19
Сообщение #12


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(aaarrr @ Mar 21 2010, 04:10) *
Хорошо, а как инициализируется этот контроллер - знаете?

Мой application грузится бутлоадером сразу в SDRAM, стало быть SDRAM контроллер уже настроен бутлоадером.
Количество памяти в системе мой application узнает описанным выше способом.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 21 2010, 02:29
Сообщение #13


Гуру
******

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



Тогда вопросов более нет.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 21 2010, 12:27
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(defunct @ Mar 21 2010, 05:19) *
Мой application грузится бутлоадером сразу в SDRAM, стало быть SDRAM контроллер уже настроен бутлоадером.
Количество памяти в системе мой application узнает описанным выше способом.


Существуют более интеллигентные способы узнать объем памяти без вваливания в Abort. Я таким пользуюсь года три.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 21 2010, 15:36
Сообщение #15


Гуру
******

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



Цитата(sergeeff @ Mar 21 2010, 15:27) *
Существуют более интеллигентные способы узнать объем памяти без вваливания в Abort. Я таким пользуюсь года три.

Интеллигентных способа, как я понимаю, здесь два:
1. Получить значение объема от bootloader'а
2. Прочитать конфигурацию контроллера памяти

Попытка выяснить объем самостоятельно неминуемо приведет к abort'у.
Go to the top of the page
 
+Quote Post

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

 


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


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