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

 
 
 
Reply to this topicStart new topic
> Начальная инициализация mega8 IAR 5.10A, Встроены-ли в компилятор функции инициализации?
mempfis_
сообщение Aug 5 2008, 13:33
Сообщение #1


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Добрый день всем.
Подскажите есть-ли в IAR 5.10A встроенные функции начальной инициализации микроконтроллера (очистка ОЗУ, настройка стэка и т.д.). Раньше пользовался CVAVR он всё это вставлял автоматически. Чувствую что в иаре тоже такое есть но где копать не знаю (два дня им пользуюсь ещё не выучил досконально).
Go to the top of the page
 
+Quote Post
GDI
сообщение Aug 5 2008, 13:43
Сообщение #2


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Нету там такого встроенного, по крайней мере в 4.20А не было, я по первости пользовался визардом от кодевижона.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 5 2008, 13:47
Сообщение #3


Гуру
******

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



Цитата(mempfis_ @ Aug 5 2008, 15:33) *
Подскажите...

1. Есть отдельная ветка по IAR, хотя к IAR этот вопрос имеет отношение отдаленное, ибо:
2. Естественно стартар код есть в любом компиляторе. Смотрите в настройках своего проекта, какой подключен явно или по умолчанию.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Aug 5 2008, 13:48
Сообщение #4


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(mempfis_ @ Aug 5 2008, 18:33) *
Добрый день всем.
Подскажите есть-ли в IAR 5.10A встроенные функции начальной инициализации микроконтроллера (очистка ОЗУ, настройка стэка и т.д.). Раньше пользовался CVAVR он всё это вставлял автоматически. Чувствую что в иаре тоже такое есть но где копать не знаю (два дня им пользуюсь ещё не выучил досконально).

Настройки периферии нет, размер стека например, задается в настройках проекта. Стартап он делает сам, если вас это интересует.


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 5 2008, 13:49
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(GDI @ Aug 5 2008, 16:43) *
Нету там такого встроенного, по крайней мере в 4.20А не было, я по первости пользовался визардом от кодевижона.
Невнимательно читаете вопрос. Нет функций настройки периферии. А установку стека, инициализацию глобальных и статических переменных, вызов main() делает библиотечный модуль cstartup (подлинковывается автоматически).
Чтобы убедиться, можно скомпилить void main() {} и прогнать в симуляторе.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 5 2008, 13:51
Сообщение #6


Гуру
******

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



Цитата(Stanislav_S @ Aug 5 2008, 15:48) *
Настройки периферии нет, размер стека например, задается в настройках проекта...

Это глобальные установки используемые стартап-ом и скриптом линкера. Исходники cstartup.s* в src\lib\


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GDI
сообщение Aug 5 2008, 14:00
Сообщение #7


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
Невнимательно читаете вопрос. Нет функций настройки периферии.

Да именно это я и имел ввиду, просто "и т.д." автора продлил на периферию smile.gif


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Aug 5 2008, 14:23
Сообщение #8


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Вобщем вопрос про инициализацию возник у меня когда симулировал программув отладчике и увидел что нет инициализации стэка и переменных О_о Правда вот сейчас внимательно посмотрел и заметил что всё-же она есть (в конце файла), но такой очистки всего как в CVAVR нету. Вобщем буду делать ручками smile.gif Не так уж это и сложно smile.gif



Может поделитесь опытом кто что очищает при старте микроконтроллера smile.gif
достаточно-ли будет очистить регистры и оперативку, или нужно делать более тщательную очистку (очищать переферию переферия)?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 5 2008, 14:46
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



smile.gif

Видете ли очищать озу нет необходимости. Стек, как Вам уже указали, настраивается. Все глобальные переменные будут инициализированы. А зачем остальное инициализировать? Я наоборот вводил __no_init к примеру для некоторых переменных.

Или Вы всё же про переферию спрашиваете?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 5 2008, 14:51
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(mempfis_ @ Aug 5 2008, 17:23) *
Может поделитесь опытом кто что очищает при старте микроконтроллера smile.gif
Ничего. Что такое в вашем понятии "очищает"? По стандарту неинициализированным явно статическим и глобальным переменным присваивается значение 0 (в стартап-коде). Это "очистка"? А если написать int a = 0; - это очистка? А если int a = 1; - это еще очистка или уже нет?
Цитата(mempfis_ @ Aug 5 2008, 17:23) *
достаточно-ли будет очистить регистры и оперативку
Не только не достаточно, а вообще этого делать не нужно. Зачем "очищать" память, которая не будет использоваться программой? Ведь та память, которая будет использоваться (глобальные и статические переменные) будет очищена startup-кодом. А область временных переменных (стек) будет постоянно затираться и никакая начальная "очистка" не поможет - при следующем вызове функции от "очистки" не останется и следа. Именно поэтому локальные переменные после объявления имеют неопределенное значение и должны быть проинициализированны явно перед использованием.
Зачем "очищать" регистры, если в процессе работы в них все равно будет сначала записано какое-то значение?
Цитата(mempfis_ @ Aug 5 2008, 17:23) *
, или нужно делать более тщательную очистку (очищать переферию)?
А вот нужную периферию инициализировать нужно всегда. Как же без этого?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


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


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