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

 
 
> Инициализация периферии до входа в main() - возможно ли?, RealView compiler
sonycman
сообщение Jan 8 2009, 17:39
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Run-time библиотека Си++ вызывает конструкторы глобальных объектов ещё до начала выполнения функции main().
Хотелось бы, чтобы в этот момент необходимая периферия контроллера уже была проинициализирована, дабы код конструкторов не был ничем ограничен.
Но как это сделать в RealView? Никаких __low_level_init() я в руководстве компилятора не увидел... unsure.gif

ЗЫ: приятно обновился интерфейс форума a14.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Jan 8 2009, 17:47
Сообщение #2


Гуру
******

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



Цитата(sonycman @ Jan 8 2009, 20:39) *
Но как это сделать в RealView? Никаких __low_level_init() я в руководстве компилятора не увидел... unsure.gif

Вставьте вызов иеициализирующей функции в startup после инициализации стека. Все.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 8 2009, 18:33
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(zltigo @ Jan 8 2009, 21:47) *
Вставьте вызов иеициализирующей функции в startup после инициализации стека. Все.

Ага, спасибо.
Я уже подумал про асмовый стартап. Можно, наверное, поставить BL прямо перед вызовом __main. Даже стёк инитить не надо - он грузится автоматически с нулевого адреса таблицы векторов.

А есть ли какие-то ограничения у такого способа? В смысле не лишкануть бы чего в подпрограмме пре-инициализации rolleyes.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 8 2009, 19:35
Сообщение #4


кекс
******

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



А чем не устраивает main рассматривать как ту самую функцию настройки периферии, из нее уже запускать что-то еще.

Цитата
А можно привести здесь эти строки? А то качать 40 метров слишком накладно...

Вам оно не пригодится. Между SAM'ом и Cortex'ом пропасть как раз в стартапе.

Цитата
Можно, наверное, поставить BL прямо перед вызовом __main. Даже стёк инитить не надо - он грузится автоматически с нулевого адреса таблицы векторов.

Конечно, можно. ;>

Для кортекса:
Код
Reset_Handler
        IMPORT  LowLevelInit
        IMPORT  __main
        BL      LowLevelInit
        LDR     R0, =__main
        BX      R0


Сам же LowLevelInit объявите как void LowLevelInit(void) в любом .c файле.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 8 2009, 21:23
Сообщение #5


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(defunct @ Jan 8 2009, 22:35) *
А чем не устраивает main рассматривать как ту самую функцию настройки периферии, из нее уже запускать что-то еще.

Лично я делаю так:

Вначале надо прописать ввод-вывод. Сколько гемора бывает из-за "неспешной" инициализации порта(ов),


потом - стек, типа low_level_init(), потом - секции, ремап и main()
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sonycman   Инициализация периферии до входа в main() - возможно ли?   Jan 8 2009, 17:39
|- - zltigo   Цитата(sonycman @ Jan 8 2009, 21:33) Даже...   Jan 8 2009, 19:14
|- - sonycman   Цитата(zltigo @ Jan 8 2009, 23:14) Типа C...   Jan 8 2009, 20:15
||- - zltigo   Цитата(sonycman @ Jan 8 2009, 23:15) А ес...   Jan 8 2009, 20:29
- - sergeeff   На сайте atmel'a лежат свежие версии soft...   Jan 8 2009, 18:35
|- - sonycman   Цитата(sergeeff @ Jan 8 2009, 22:35) На с...   Jan 8 2009, 19:04
- - aaarrr   Цитата(defunct @ Jan 8 2009, 22:35) А чем...   Jan 8 2009, 20:30
|- - defunct   Цитата(aaarrr @ Jan 8 2009, 22:30) До mai...   Jan 8 2009, 23:24
|- - aaarrr   Цитата(defunct @ Jan 9 2009, 02:24) Согла...   Jan 8 2009, 23:34
|- - defunct   Цитата(aaarrr @ Jan 9 2009, 01:32) Ну, ещ...   Jan 8 2009, 23:35
|- - sonycman   Цитата(defunct @ Jan 9 2009, 03:35) Везде...   Jan 8 2009, 23:59
- - Dima_G   Не полагайся на порядок вызовов конструкторов, ини...   Jan 9 2009, 05:32
- - sonycman   Цитата(Dima_G @ Jan 9 2009, 09:32) Не пол...   Jan 9 2009, 11:27
- - Dima_G   Цитата(sonycman @ Jan 9 2009, 14:27) Поня...   Jan 10 2009, 17:30
- - sonycman   Цитата(Dima_G @ Jan 10 2009, 21:30) Сам п...   Jan 10 2009, 20:51
- - defunct   Цитата(sonycman @ Jan 10 2009, 22:51) Как...   Jan 11 2009, 03:12
- - Dima_G   Цитата(sonycman @ Jan 11 2009, 00:51) Да,...   Jan 11 2009, 03:26
- - sonycman   Цитата(defunct @ Jan 11 2009, 07:12) FS и...   Jan 11 2009, 10:52


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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 07:31
Рейтинг@Mail.ru


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