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

 
 
> Передача управления из бута в программу, еще раз о старом
toweroff
сообщение Feb 25 2013, 10:57
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Добрый день

Вот такой вопрос возник. Управление передается через подобный вызов:
Код
void (*Entry_Point)(void);
Entry_Point = (void(*)(void))(USER_CODE);
Entry_Point();

кстати, еще вопрос сразу - для ядра ARM968E-S значение USER_CODE так же будет (REAL_USER_CODE + 1), как и для CM3?

Потом управление передается по адресу, указанному в линкере как ENTRY_POINT
Но вопрос вот какой. При старте процессора, он находится в Supervisor режиме, когда грузит все регистры, а из бута он попадет на точку входа приложения уже в User/System
Или это нормально, или я что-то не понял и проц нужно перед прыжком переводить в Supervisor режим?
Сколько пересмотрел реализаций бутов для ARM7, CM3 - нигде не увидел явной смены режима работы
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Feb 25 2013, 14:43
Сообщение #2


Гуру
******

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



На ResetStart, разумеется: его положение строго фиксировано.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 25 2013, 15:07
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(aaarrr @ Feb 25 2013, 18:43) *
На ResetStart, разумеется: его положение строго фиксировано.

Все, понял. Попадая на ResetStart, мы заносим в PC значение ResetAddr, по которому как раз лежит вызов инициализации стека и дальше как надо.
Остается один вопрос - инициализация обработчиков исключений, ведь этот блок мы просто пропустим, это не аппаратное вычитывание по холодному старту, а, фактически, просто двойной прыжок на ResetAddr
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 25 2013, 15:21
Сообщение #4


Гуру
******

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



Цитата(toweroff @ Feb 25 2013, 19:07) *
Остается один вопрос - инициализация обработчиков исключений, ведь этот блок мы просто пропустим, это не аппаратное вычитывание по холодному старту, а, фактически, просто двойной прыжок на ResetAddr

Если приложение не стартует по нулевому адресу (или адресу 0xffff0000 в случае HiVecs), то этот блок можно просто исключить за ненадобностью.
Просто бывает удобно его сохранить, когда приложение собирается как для случая работы с загрузчиком, так и для работы без оного.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toweroff   Передача управления из бута в программу   Feb 25 2013, 10:57
- - kolobok0   Цитата(toweroff @ Feb 25 2013, 14:57) ......   Feb 25 2013, 13:58
- - esaulenka   Цитата(toweroff @ Feb 25 2013, 14:57) для...   Feb 25 2013, 14:05
|- - toweroff   Цитата(esaulenka @ Feb 25 2013, 18:05) Зн...   Feb 25 2013, 14:10
- - SyncLair   Цитата(toweroff @ Feb 25 2013, 14:57) Ско...   Feb 25 2013, 14:16
|- - toweroff   ЦитатаРежимы работы как правило инициализируются в...   Feb 25 2013, 14:25
|- - toweroff   Цитата(aaarrr @ Feb 25 2013, 19:21) этот ...   Feb 25 2013, 15:32
- - aaarrr   Вариантов масса: - Использовать п/п загрузчика (в ...   Feb 25 2013, 15:38
- - toweroff   aaarrr, спасибо, пойду разбираться Вот что накопа...   Feb 25 2013, 16:46
- - aaarrr   Выходит, все. Только я бы выделил вектора в отдель...   Feb 25 2013, 16:55
|- - toweroff   Цитата(aaarrr @ Feb 25 2013, 20:55) Выход...   Feb 25 2013, 17:45
|- - aaarrr   Цитата(toweroff @ Feb 25 2013, 21:45) ......   Feb 25 2013, 18:45
- - toweroff   UPD Так, становится понятнее Используются 2 инстр...   Feb 25 2013, 19:26
- - toweroff   aaarrr, посмотрите, пожалуйста, что я понял не так...   Feb 25 2013, 22:15
- - aaarrr   Вариант 2 не годится, т.к. по адресу 0xffff0000 па...   Feb 25 2013, 22:38
- - toweroff   Цитата(aaarrr @ Feb 26 2013, 02:38) Вариа...   Feb 25 2013, 22:58


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

 


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


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