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

 
 
> IAR C++ и АРМ (STR710), код инициализации
sergik_vrn
сообщение Oct 11 2005, 10:49
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



начинаю плотно разбираться с процессором, раньше с АРМ никогда не работал (в основном с атмел АВР). возник вопрос: в комплекте с IAR C++ идут примеры программ, в т.ч. для конкретных процессоров, в т.ч. для конкретно моего (STR710). кроме того, я скачал кое-какие примеры, тоже на С, с сайта фирмы-производителя. обратил внимание на то, что во всех проектах IAR включен код cstartup.s79, причем он существенно отличается от дефолтового (приведенного в исходниках их же рантайм-библиотеки), я уже не говорю про демо-проекты от производителя, там даже ассемблер другой.
При этом проекты собираются и с cstartup.s79, и без него, а попробовать в железе пока не на чем. может, кто-то подскажет мне, как работать с этим кодом инициализации? или, в идеале, подкинет ссылочку, где про это можно почитать? также не совсем ясно содержание файла vect.s79, хотя его назначение, в общем, понятно.
в общем, буду благодарен за любую инфу
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andy Mozzhevilov
сообщение Oct 11 2005, 11:02
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(sergik_vrn @ Oct 11 2005, 15:49)
начинаю плотно разбираться с процессором, раньше с АРМ никогда не работал (в основном с атмел АВР). возник вопрос: в комплекте с IAR C++ идут примеры программ, в т.ч. для конкретных процессоров, в т.ч. для конкретно моего (STR710). кроме того, я скачал кое-какие примеры, тоже на С, с сайта фирмы-производителя. обратил внимание на то, что во всех проектах IAR включен код cstartup.s79, причем он существенно отличается от дефолтового (приведенного в исходниках их же рантайм-библиотеки), я уже не говорю про демо-проекты от производителя, там даже ассемблер другой.
При этом проекты собираются и с cstartup.s79, и без него, а попробовать в железе пока не на чем. может, кто-то подскажет мне, как работать с этим кодом инициализации? или, в идеале, подкинет ссылочку, где про это можно почитать? также не совсем ясно содержание файла vect.s79, хотя его назначение, в общем, понятно.
в общем, буду благодарен за любую инфу
*


Если затачиваться под IAR, то мое имхо:
1. Не делать свой cstartup, а пользоваться библиотечным, то есть дефолтовым.
2. То, что идут примеры программ в комплекте, на них надо наплевать. Цель этих программ показать, что хоть что-то шевелится, не более того. Потом выяснится, что в их стартапах не вызываются конструктоы C++ или еще чего-то.
3. В IAR предусмотрена функция __low_level_init(), в которой можно сделать дополнительную инициализацию. Я там, например делаю инициализацию FIQ стека.
4. Вектора в iar удобнее указывать прямо на С, тогда в случае использования С++ не надо болеть головой по вызову ++ функций из асма, там есть свои соглашения, который нужно обеспечивать, а на С все просто:
Код
#pragma vector = 0x04
__irq __arm void undef_instr_isr(void)
{
   while(1);
}

#pragma vector = 0x08
__irq __arm void swi_isr(void)
{
   while(1);
}

#pragma vector = 0x0c
__irq __arm void prefetch_abort_isr(void)
{
   while(1);
}

#pragma vector = 0x10
__irq __arm void data_abort_isr(void)
{
   while(1);
}


ессно добавить в обработку исключений нужную функуцональность.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
sergik_vrn
сообщение Oct 11 2005, 11:13
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



Цитата(Andy Mozzhevilov @ Oct 11 2005, 15:02)
Если затачиваться под IAR, то мое имхо:
1. Не делать свой cstartup, а пользоваться библиотечным, то есть дефолтовым.


ясно

Цитата(Andy Mozzhevilov @ Oct 11 2005, 15:02)
2. То, что идут примеры программ в комплекте, на них надо наплевать. Цель этих программ показать, что хоть что-то шевелится, не более того. Потом выяснится, что в их стартапах не вызываются конструктоы C++ или еще чего-то.


ну вроде как примеры-то самим IARом писаны, неужто до подобного доходит? и все-таки, в чем глубокий смысел сего действа, не понимаю...

Цитата(Andy Mozzhevilov @ Oct 11 2005, 15:02)
3. В IAR предусмотрена функция __low_level_init(), в которой можно сделать дополнительную инициализацию. Я там, например делаю инициализацию FIQ стека.


спасибо, приму к сведению

Цитата(Andy Mozzhevilov @ Oct 11 2005, 15:02)
4. Вектора в iar удобнее указывать прямо на С, тогда в случае использования С++ не надо болеть головой по вызову ++ функций из асма, там есть свои соглашения, который нужно обеспечивать, а на С все просто:


ну это понятно, это я и из АВРа знаю, опять же неясно - при наличии такого метода, к чему лепить асмовые модули?.. или я просто в АВРе примеры не разбирал, потому и проблемы такой не имел? smile.gif
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Oct 11 2005, 11:33
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(sergik_vrn @ Oct 11 2005, 16:13)
ну вроде как примеры-то самим IARом писаны, неужто до подобного доходит? и все-таки, в чем глубокий смысел сего действа, не понимаю...

примеры не обязательно писаны iar-ом, скорее всего application инженерами фирм, выпускающих контроллеры либо eval-борды. Я смотрел как-то примеры от atmel и не знал, не то хохотать, не то плакать smile.gif


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:39
Рейтинг@Mail.ru


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