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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Keil RV3.50 и FIQ, error: #130: expected a "{"
AlexanderPo
сообщение Jun 10 2009, 07:20
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132



Други! Выручайте! Зациклился. Пытаюсь реализовать обработку FIQ прерываний как описано http://www.keil.com/support/man/docs/ca/ca_le_fiq.htm. Но при компиляции выдаёт ошибку error: #130: expected a "{". Хотя реально никакой синтаксической ошибки нет! Может кто сталкивался?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 10 2009, 07:26
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



У разных компилеров свой синтаксис атрибутов процедур. Вероятно тот пример не для кейла. Вероятнее всего нужно изменить заголовок процедуры под кейл. Читайте хелп на кейл.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
AlexanderPo
сообщение Jun 10 2009, 07:44
Сообщение #3





Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132



Ничего не понимаю! Я ж на сайте кейла хелп смотрел!!!

В двух словах что делаю.
1. Файл Startup.s
- импортирую имя C-шной функции: IMPORT MyFIQ_Handler
- указываю переход на эту функцию:
...
FIQ_Handler B MyFIQ_Handler
...
2. В файле проекта, например, Application.c, реализую эту функцию:
void MyFIQ_Handler(void) __fiq
{
/* Чего-то делается */
}

Где ошибка?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 10 2009, 07:56
Сообщение #4


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(AlexanderPo @ Jun 10 2009, 12:44) *
Ничего не понимаю! Я ж на сайте кейла хелп смотрел!!!

Точно. Я и не заметил что сайт кейла biggrin.gif
Просто когда выдаётся ошибка '{' expected - это означает, что встретилось что-то ненужное вроде атрибута __fiq там, где он не нужен. В ИАРе этот атрибут ставится перед заголовком процедуры, если поставить после то ИАР тоже ругается.

Сообщение отредактировал GetSmart - Jun 10 2009, 08:03


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
AlexanderPo
сообщение Jun 10 2009, 08:05
Сообщение #5





Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132



Цитата(GetSmart @ Jun 10 2009, 11:56) *
Приведите точный текст своего обработчика.


Вообще-то это даже и не важно! Ошибка выдаётся даже вот с таким текстом:

void MyFIQ_Handler(void) __fiq
{
}

Если аттрибут __fiq переместить в начало определения функции, то выдаётся другая синтаксическая ошибка. С атрибутом __irq такой ерунды не происходит куда бы его не поставить! Он всегда воспринимается правильно.
Go to the top of the page
 
+Quote Post
AjaxLab
сообщение Jun 10 2009, 08:19
Сообщение #6





Группа: Новичок
Сообщений: 11
Регистрация: 21-03-05
Пользователь №: 3 555



Цитата(AlexanderPo @ Jun 10 2009, 12:05) *
Вообще-то это даже и не важно! Ошибка выдаётся даже вот с таким текстом:

void MyFIQ_Handler(void) __fiq
{
}

Если аттрибут __fiq переместить в начало определения функции, то выдаётся другая синтаксическая ошибка. С атрибутом __irq такой ерунды не происходит куда бы его не поставить! Он всегда воспринимается правильно.


Если используется компилятор RealView, то там __fiq нет.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 10 2009, 08:20
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Атрибут __fiq кончился вместе с компилятором CARM. У RVCT есть только __irq.
Go to the top of the page
 
+Quote Post
AlexanderPo
сообщение Jun 10 2009, 08:27
Сообщение #8





Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132



Цитата(AjaxLab @ Jun 10 2009, 12:19) *
Если используется компилятор RealView, то там __fiq нет.


Поясните, пожайлуйста, а как тогда реализовать FIQ?
Действительно, если всё оставить как есть и только убрать __fiq, то всё начинает компилится, НО! Программа вылетает, кажется, в Undefined Mode! Я предполагал, что именно атрибут __fiq обеспечивает правильное сохранение/восстановление регистров. В частности, PC.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 10 2009, 08:36
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Напишите __irq - будет работать. Если хотите использовать преимущества дополнительного банка регистров, пишите обработчик FIQ на асме.
Go to the top of the page
 
+Quote Post
AlexanderPo
сообщение Jun 10 2009, 08:45
Сообщение #10





Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132



Цитата(aaarrr @ Jun 10 2009, 12:36) *
Напишите __irq - будет работать. Если хотите использовать преимущества дополнительного банка регистров, пишите обработчик FIQ на асме.


То есть реализовать FIQ на С в кейле невозможно? Вот это да! Вот тебе и хвалёный на всех семинарах кейл! А чего же в хелпе это не отражено?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 10 2009, 08:46
Сообщение #11


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(aaarrr @ Jun 10 2009, 13:20) *
Атрибут __fiq кончился вместе с компилятором CARM. У RVCT есть только __irq.

А разумное объяснение у них есть?!


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Sanya_kv
сообщение Jun 10 2009, 08:48
Сообщение #12


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

Группа: Свой
Сообщений: 185
Регистрация: 25-02-09
Из: Россия
Пользователь №: 45 369



У тебя с стартапе так релизовано?
Код
Vectors         LDR     PC,Reset_Addr        
                LDR     PC,Undef_Addr
                LDR     PC,SWI_Addr
                LDR     PC,PAbt_Addr
                LDR     PC,DAbt_Addr
                NOP                          ; Reserved Vector
;               LDR     PC,IRQ_Addr
                LDR     PC,[PC,#-0xF20]      ; Vector From AIC_IVR
;               LDR     PC,FIQ_Addr
                LDR     PC,[PC,#-0xF20]      ; Vector From AIC_FVR

Reset_Addr      DCD     Reset_Handler
Undef_Addr      DCD     Undef_Handler
SWI_Addr        DCD     SWI_Handler
PAbt_Addr       DCD     PAbt_Handler
DAbt_Addr       DCD     DAbt_Handler
                DCD     0                    ; Reserved Address
IRQ_Addr        DCD     IRQ_Handler
FIQ_Addr        DCD     FIQ_Handler

Какой проц используешь?

Сообщение отредактировал Sanya_kv - Jun 10 2009, 08:49
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 10 2009, 08:53
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(AlexanderPo @ Jun 10 2009, 12:45) *
То есть реализовать FIQ на С в кейле невозможно? Вот это да! Вот тебе и хвалёный на всех семинарах кейл!

Почему невозможно-то? Возможно, просто не так эффективно будет.

Цитата(AlexanderPo @ Jun 10 2009, 12:45) *
А чего же в хелпе это не отражено?

Потому что Вы читаете хелп не от того компилятора.


Цитата(GetSmart @ Jun 10 2009, 12:46) *
А разумное объяснение у них есть?!

А зачем тут что-то объяснять? Они вполне разумно решили, что пользователю лучше самому разобраться с банком FIQ, если оно ему надо. А если не надо, то можно использовать __irq.

Цитата(Sanya_kv @ Jun 10 2009, 12:48) *
У тебя с стартапе так релизовано?
...
Какой проц используешь?

Ну и к чему все это?
Go to the top of the page
 
+Quote Post
AlexanderPo
сообщение Jun 10 2009, 09:02
Сообщение #14





Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132



Осталось только раздражение на кейл! Зачем же комплектовать IDE старым хелпом. Там тоже описан атрибут __fiq. Не буду переходить с IAR на Keil rolleyes.gif

Сообщение отредактировал AlexanderPo - Jun 10 2009, 09:18
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 10 2009, 09:03
Сообщение #15


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(aaarrr @ Jun 10 2009, 13:53) *
А зачем тут что-то объяснять? Они вполне разумно решили, что пользователю лучше самому разобраться с банком FIQ, если оно ему надо. А если не надо, то можно использовать __irq.

Глупость да и только. Никаких сложностей __fiq не требовал. Кроме этого раньше была аналогичная глупость с вложенными прерываниями. Браво, Кейл!


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

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

 


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


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