Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Начальная инициализация mega8 IAR 5.10A
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
mempfis_
Добрый день всем.
Подскажите есть-ли в IAR 5.10A встроенные функции начальной инициализации микроконтроллера (очистка ОЗУ, настройка стэка и т.д.). Раньше пользовался CVAVR он всё это вставлял автоматически. Чувствую что в иаре тоже такое есть но где копать не знаю (два дня им пользуюсь ещё не выучил досконально).
GDI
Нету там такого встроенного, по крайней мере в 4.20А не было, я по первости пользовался визардом от кодевижона.
zltigo
Цитата(mempfis_ @ Aug 5 2008, 15:33) *
Подскажите...

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

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

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

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



Может поделитесь опытом кто что очищает при старте микроконтроллера smile.gif
достаточно-ли будет очистить регистры и оперативку, или нужно делать более тщательную очистку (очищать переферию переферия)?
SasaVitebsk
smile.gif

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

Или Вы всё же про переферию спрашиваете?
Сергей Борщ
Цитата(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) *
, или нужно делать более тщательную очистку (очищать переферию)?
А вот нужную периферию инициализировать нужно всегда. Как же без этого?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.