|
Keil RV3.50 и FIQ, error: #130: expected a "{" |
|
|
|
Jun 10 2009, 07:20
|
Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132

|
Други! Выручайте! Зациклился. Пытаюсь реализовать обработку FIQ прерываний как описано http://www.keil.com/support/man/docs/ca/ca_le_fiq.htm. Но при компиляции выдаёт ошибку error: #130: expected a "{". Хотя реально никакой синтаксической ошибки нет! Может кто сталкивался?
|
|
|
|
|
Jun 10 2009, 07:44
|
Группа: Новичок
Сообщений: 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 { /* Чего-то делается */ }
Где ошибка?
|
|
|
|
|
Jun 10 2009, 08:05
|
Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132

|
Цитата(GetSmart @ Jun 10 2009, 11:56)  Приведите точный текст своего обработчика. Вообще-то это даже и не важно! Ошибка выдаётся даже вот с таким текстом: void MyFIQ_Handler(void) __fiq { } Если аттрибут __fiq переместить в начало определения функции, то выдаётся другая синтаксическая ошибка. С атрибутом __irq такой ерунды не происходит куда бы его не поставить! Он всегда воспринимается правильно.
|
|
|
|
|
Jun 10 2009, 08:19
|
Группа: Новичок
Сообщений: 11
Регистрация: 21-03-05
Пользователь №: 3 555

|
Цитата(AlexanderPo @ Jun 10 2009, 12:05)  Вообще-то это даже и не важно! Ошибка выдаётся даже вот с таким текстом:
void MyFIQ_Handler(void) __fiq { }
Если аттрибут __fiq переместить в начало определения функции, то выдаётся другая синтаксическая ошибка. С атрибутом __irq такой ерунды не происходит куда бы его не поставить! Он всегда воспринимается правильно. Если используется компилятор RealView, то там __fiq нет.
|
|
|
|
|
Jun 10 2009, 08:27
|
Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132

|
Цитата(AjaxLab @ Jun 10 2009, 12:19)  Если используется компилятор RealView, то там __fiq нет. Поясните, пожайлуйста, а как тогда реализовать FIQ? Действительно, если всё оставить как есть и только убрать __fiq, то всё начинает компилится, НО! Программа вылетает, кажется, в Undefined Mode! Я предполагал, что именно атрибут __fiq обеспечивает правильное сохранение/восстановление регистров. В частности, PC.
|
|
|
|
|
Jun 10 2009, 08:45
|
Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132

|
Цитата(aaarrr @ Jun 10 2009, 12:36)  Напишите __irq - будет работать. Если хотите использовать преимущества дополнительного банка регистров, пишите обработчик FIQ на асме. То есть реализовать FIQ на С в кейле невозможно? Вот это да! Вот тебе и хвалёный на всех семинарах кейл! А чего же в хелпе это не отражено?
|
|
|
|
|
Jun 10 2009, 08:48
|

Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Jun 10 2009, 08:53
|
Гуру
     
Группа: Свой
Сообщений: 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)  У тебя с стартапе так релизовано? ... Какой проц используешь? Ну и к чему все это?
|
|
|
|
|
Jun 10 2009, 09:02
|
Группа: Новичок
Сообщений: 6
Регистрация: 27-07-05
Пользователь №: 7 132

|
Осталось только раздражение на кейл! Зачем же комплектовать IDE старым хелпом. Там тоже описан атрибут __fiq. Не буду переходить с IAR на Keil
Сообщение отредактировал AlexanderPo - Jun 10 2009, 09:18
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|