Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Startup и IAR5.1
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Dan_Dima
Доброго времени суток всем.

Вопрос следующий перешел с IAR 4.13 на IAR 5.11. Пишу под ARM (LPC2000) использовал обработчик прерывания объявляя

Код
#pragma vector=0x18
__irq __arm void irq_handler(void)
и т.д.


и никакого startup не использовал в новой же версии IAR столкнулся с проблемой без него ничего не работает, т.е при возникновении прерывания программа переходит по адресу 18 и там встает добовляешь startup и все работает. Кто может подсказать можно ли обойтись без startup и если да то, что для этого нужно сделать. Да и еще маленький вопрос в startup происходит иницилизация стеков для каждого режима так ли она нужна или стек может быть общим.
KAlex
Цитата(Dan_Dima @ Mar 15 2008, 01:15) *
Кто может подсказать можно ли обойтись без startup

Можно.
Цитата(Dan_Dima @ Mar 15 2008, 01:15) *
и если да то, что для этого нужно сделать.

Самому написать все(ну или почти все) действия, которые делает startup.
Dan_Dima
Это понтяно что можно самому smile.gif . Вопрос в том, что раньше и этого не делал и все прекрасно работало. Почему-то дериктива #pragma не записавает по адресу 18 переход к обработчику прерываний, хотя вроде должна.
KAlex
Вот хелп по IAR 4.xx


#pragma vector
#pragma vector=vector1[, vector2, vector3, ...]
The #pragma vector directive specifies the vector(s) of an interrupt function whose declaration follows the pragma directive.
Example
#pragma vector=0x14
__irq __arm void my_handler(void);


IAR 5.xx пока не ставил. А что он по этому поводу говорит?
Dan_Dima
Так раньше и делал. К сожалению только в понедельник на работе смогу посмотреть делал все в пятницу еще не успел, старый способ не сработал. Может конечно и я конечно сглючил, но вроде делал так как указоно выше. Да они еще немного изменили расположение индлудев теперь вместо #includde<iolpc2xxx.h> надо #include<nxp/iolpc2xxx.h> для других тоже самое и поменялись опции в линковщики. Также не обшаружил xlc файлов теперь граф редактор в котором все прописываеть (карта памяти, размеры стеков и расположение векторов)
Dir
Цитата(Dan_Dima @ Mar 15 2008, 14:05) *
Так раньше и делал. К сожалению только в понедельник на работе смогу посмотреть делал все в пятницу еще не успел, старый способ не сработал. Может конечно и я конечно сглючил, но вроде делал так как указоно выше. Да они еще немного изменили расположение индлудев теперь вместо #includde<iolpc2xxx.h> надо #include<nxp/iolpc2xxx.h> для других тоже самое и поменялись опции в линковщики. Также не обшаружил xlc файлов теперь граф редактор в котором все прописываеть (карта памяти, размеры стеков и расположение векторов)


Да, круто вы переходите на новую версию wink.gif
Даже в релиз нотес не заглядывали. А там ведь все написано. И то, что линкер другой, а потому файлов xcl уже не существует в природе (зато есть icf). И то, что конструкции #pragma vector уже тоже не существует. Вообще 5 версия довольно сильно отличается от 4, так что читайте, не ленитесь.

PS.
Если взглянете на стартап, то сразу увидите куда идут вектора и сработает, например, самая примитивная конструкция (без всяких прагм):
__arm __irq void IRQ_Handler(void)
{
}
Ну или воспользуйтесь примером для вашего МК.
PPS. Тут уже обсуждали, чем отличается 5 весия от 4 и делились впечатлениями. Так что поищите.
Dan_Dima
Цитата
Да, круто вы переходите на новую версию wink.gif

Ну я на нее не перешел просто поставил,чтобы оценить изменения.
Да прочитать не успел в понедельник этим займусь. Спасибо за критику.

Цитата
PS.
Если взглянете на стартап, то сразу увидите куда идут вектора и сработает, например, самая примитивная конструкция (без всяких прагм):
__arm __irq void IRQ_Handler(void)
{
}
Ну или воспользуйтесь примером для вашего МК.
PPS. Тут уже обсуждали, чем отличается 5 весия от 4 и делились впечатлениями. Так что поищите.

Со стартап я знаком и там все понтяно. Но я так и не понял можно ли обойтись без него и без переписки стартапа на С в 5 версии или все такое уже невозможно.
KRS
Цитата(Dan_Dima @ Mar 16 2008, 11:59) *
Со стартап я знаком и там все понтяно. Но я так и не понял можно ли обойтись без него и без переписки стартапа на С в 5 версии или все такое уже невозможно.

В 5 версии стартап немного другой (там более навороченная инициализация сегментов), и полных его исходников в евал версии нет, но есть исходник файла на asm где собствено говоря и находится vector table инициализация стеков, вызов low_level_init и в зависимости от результата вызов функции инициализации сегментов (она теперь по другому называется) и т.д. Надо переписать только этот файл он довольно простой получится если не делать его универсальным. Ну и конечно не забыть указать линкеру ваш entry point (обычно это reset vector) что бы линкер взял ваши вектора, а не стандатрные.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.