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

 
 
> Передача управления из бута в программу, еще раз о старом
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, 16:55
Сообщение #2


Гуру
******

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



Выходит, все. Только я бы выделил вектора в отдельную секцию и размещал бы её на нулевом адресе штатными средствами (т.е. линкером). Подобные копирования только путаницу вносят.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 25 2013, 17:45
Сообщение #3


Гуру
******

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



Цитата(aaarrr @ Feb 25 2013, 20:55) *
Выходит, все. Только я бы выделил вектора в отдельную секцию и размещал бы её на нулевом адресе штатными средствами (т.е. линкером). Подобные копирования только путаницу вносят.

Embedded Flash по умолчанию маппируется из 0x20000000 на 0x00000000
Программа у меня собирается по физическому адресу. Фактически, хоть программа и "бегает" по реальным адресам, вектора лежат в маппированной области
Сейчас нужно разобраться, как вернуть отображение TCM памяти на свое реальное место и не очень понятно, как заставить линкер "положить" вектора в область нулевую
Точнее, КАК - это да, указать регион, но вот в каком месте это сделает ОН? скорее всего, в __main? Потому что копировать в отображаемую Flash не получится без отката ремапа
Да, вот еще вопрос какой. Как в кейле, в ASM файле указать регион, прописанный в скаттере?
Как-то так?
Код
        AREA    MyVectors, DATA, NOINIT, ALIGN=4

и в скаттере:
Код
LR_IROM1 0x20000000 0x00080000  {   ; load region size_region
  ER_IROM1 0x20000000 0x00080000  { ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x80000000 0x0000E000  { ; RW data
   *.o (RAMFUNC)
   .ANY (+RW +ZI)
  }
  RW_IRAM2 0x00000000 0x00008000 {; 16 KB TCM memory
   *.o (MyVectors)
  }
}
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
- - aaarrr   На ResetStart, разумеется: его положение строго фи...   Feb 25 2013, 14:43
|- - toweroff   Цитата(aaarrr @ Feb 25 2013, 18:43) На Re...   Feb 25 2013, 15:07
|- - aaarrr   Цитата(toweroff @ Feb 25 2013, 19:07) Ост...   Feb 25 2013, 15:21
|- - 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   Цитата(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 Текстовая версия Сейчас: 29th July 2025 - 07:28
Рейтинг@Mail.ru


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