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

 
 
> Самопрограммирование AVR, Помогите определить причину ошибки
Len_OK
сообщение May 14 2008, 12:42
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986



Помогите, please! Программирую в IARe!
Возникла такая ошибка

Fatal Error[e38]: Option -H must not be defined more than once: -H1895
Никак не могу её исправить!
Если кто-нибудь сталкивался, подскажите что бы это могло быть?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Igor26
сообщение May 15 2008, 18:07
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Я так понял, Вы пользуютесь апнотом от AVR. Те, которые попадались мне, были заточены под Меги. Попробуйте, пользуясь этим апнотом, написать бутлоадер, например, для Меги-8. Когда получиться, тогда приобретенный опыт можно будет применить и к Тинькам. Помоему, с бутлоадером для Меги здесь Вам помогут больше, чем с бутлоадером для Тини. Я в том числе. Здесь многие "грызли" и победили этот вопрос.
Go to the top of the page
 
+Quote Post
Len_OK
сообщение May 16 2008, 07:57
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986



Цитата(Igor26 @ May 15 2008, 21:07) *
Попробуйте, пользуясь этим апнотом, написать бутлоадер, например, для Меги-8.

smile.gif Для меги у меня уже давно работает!А для тини(думала получиться аналогичным образом) не получается.Теперь вся сложность состоит в использовании ассемблера...

Цитата(defunct @ May 16 2008, 00:32) *
Использовать intrinsics для tiny у меня не получилось...
Но можно пойти таким путём.
Создаем и подключием к проекту asm модуль my_spm.s90 сл. содержания (это конечно не оптимальный вариант, но работать можно):
Код
#define SPMCR   0x37
#define SREG    0x3F

        PUBLIC  DoSpm
        
        RSEG    CODE:CODE:NOROOT(1)
        
DoSpm  
        PUSH    R31
        PUSH    R30
        MOVW    R31:R30, R17:R16
        MOVW    R17:R16, R1:R0  // R17:16 pair used as temp space
        MOVW    R1:R0, R19:R18
        CLI
        OUT     SPMCR, R20
        SPM
        SEI
        MOVW    R1:R0, R17:R16  // restore R1:R0 pair
        POP     R30
        POP     R31
        RET

        END     DoSpm


В основной программе объявляем функцию DoSpm:

Код
extern int DoSpm( int addr, int data, char spmcsr_code);


addr - помещается в Z
data - в R1-R0
spmcr_code - в SPMCSR (0x37 I/O space для t13)
и выполняется команда SPM
функция будет возвращать "мусор" (содержимое R1:R0 до вызова функции), на результат не смотрите.
Ну а дальше уже по даташиту делайте то, что вам нужно.

Вроде всё так сделала, но появляется ошибка
Error[e46]: Undefined external "DoSpm" referred in main ( E:\Len_OK\iar\work_flash\test3\Debug\Obj\main.r90 )
Go to the top of the page
 
+Quote Post
defunct
сообщение May 16 2008, 09:38
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Len_OK @ May 16 2008, 10:57) *
Вроде всё так сделала, но появляется ошибка
Error[e46]: Undefined external "DoSpm" referred in main ( E:\Len_OK\iar\work_flash\test3\Debug\Obj\main.r90 )

А вы подключили файл к проекту?
workspace->правой кнопкой мыши на названии проекта->Add->add files... ->my_spm.s90

или через меню Project->Add files->assembler files->my_spm.s90
Go to the top of the page
 
+Quote Post
Len_OK
сообщение May 16 2008, 09:48
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986



Цитата(defunct @ May 16 2008, 12:38) *
А вы подключили файл к проекту?
workspace->правой кнопкой мыши на названии проекта->Add->add files... ->my_spm.s90

или через меню Project->Add files->assembler files->my_spm.s90

Да,всё поправила, но теперь теперь ругань на
Error[Pe020]: identifier "PUBLIC" is undefined E:\Len_OK\iar\work_flash\test3\asm.s90 4
Error[Pe065]: expected a ";" E:\Len_OK\iar\work_flash\test3\asm.s90 6
Warning[Pe012]: parsing restarts here after previous syntax error E:\Len_OK\iar\work_flash\test3\main.c 9


Цитата(Len_OK @ May 16 2008, 12:43) *
Да,всё поправила, но теперь теперь ругань на
Error[Pe020]: identifier "PUBLIC" is undefined E:\Len_OK\iar\work_flash\test3\asm.s90 4
Error[Pe065]: expected a ";" E:\Len_OK\iar\work_flash\test3\asm.s90 6
Warning[Pe012]: parsing restarts here after previous syntax error E:\Len_OK\iar\work_flash\test3\main.c 9


а если немного меняю define и у меня выходит такая вот картина

#ifdef __IAR_SYSTEMS_ASM__
#define SPMCR 0x37
#define SREG 0x3F
NAME DoSpm
public DoSpm

COMMON INTVEC
ORG INT0_vect
rjmp SIG_INTERRUPT0
RSEG CODE:CODE:NOROOT(1)


#endif /* __IAR_SYSTEMS_ASM__ */


DoSpm:
PUSH R31
PUSH R30
MOVW R31:R30, R17:R16
MOVW R17:R16, R1:R0 // R17:16 pair used as temp space
MOVW R1:R0, R19:R18
CLI
OUT SPMCR, R20
SPM
SEI
MOVW R1:R0, R17:R16 // restore R1:R0 pair
POP R30
POP R31
RET

END DoSpm
то ошибки уже такие
Error[Pe077]: this declaration has no storage class or type specifier E:\Len_OK\iar\work_flash\test3\asm.s90 15
Error[Pe065]: expected a ";" E:\Len_OK\iar\work_flash\test3\asm.s90 15
Warning[Pe012]: parsing restarts here after previous syntax error E:\Len_OK\iar\work_flash\test3\main.c 9
Error[Pe109]: expression must have (pointer-to-) function type E:\Len_OK\iar\work_flash\test3\main.c 45
Go to the top of the page
 
+Quote Post
defunct
сообщение May 16 2008, 09:55
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Len_OK @ May 16 2008, 12:48) *
а если немного меняю define и у меня выходит такая вот картина

#ifdef __IAR_SYSTEMS_ASM__
#define SPMCR 0x37
#define SREG 0x3F
NAME DoSpm // <-- не нужно
public DoSpm

COMMON INTVEC // Не нужно
ORG INT0_vect // <--- не нужно!
rjmp SIG_INTERRUPT0 // <--- НЕ НУЖНО
RSEG CODE:CODE:NOROOT(1) // <--- должно быть перед меткой всегда
#endif /* __IAR_SYSTEMS_ASM__ */
DoSpm: // <-- ":" лишнее

Погодите, вставьте в asm файл все как есть из комента выше!
После метки "DoSpm" двоеточие ":" не нужно !
Какая у вас версия IAR'a?

Компилирующийся проект смотрите в атаче.
Прикрепленные файлы
Прикрепленный файл  SpmTest.zip ( 12.74 килобайт ) Кол-во скачиваний: 36
 
Go to the top of the page
 
+Quote Post
Len_OK
сообщение May 16 2008, 10:17
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986



Цитата(defunct @ May 16 2008, 12:55) *
Какая у вас версия IAR'a?

IAR4.11
Go to the top of the page
 
+Quote Post
Len_OK
сообщение May 16 2008, 10:23
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986



[quote name='Len_OK' post='412200' date='May 16 2008, 13:17']
IAR4.11
[/quote]


Ваш проект компилится на "ура"!
не могу понять в чем причина, я точно такой же проект создала с нуля, в нем вот такие ошибки
Error[Pe020]: identifier "PUBLIC" is undefined E:\Len_OK\iar\work_flash\test3\asm.s90 4
Error[Pe065]: expected a ";" E:\Len_OK\iar\work_flash\test3\asm.s90 6

Может в настройках что-то ещё устанавливать нужно
[/quote]

Сообщение отредактировал Len_OK - May 16 2008, 10:24
Go to the top of the page
 
+Quote Post
defunct
сообщение May 16 2008, 10:24
Сообщение #9


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Len_OK @ May 16 2008, 13:23) *
Может в настройках что-то ещё устанавливать нужно

Сравните по настройкам с моим. Я создавал так:
Project -> Create New -> C -> main.
потом создал файл my_spm.s90
подключил его к проекту
скопировал содержимое из форума.
Выбрал тип процессора в настройках проекта - tiny13.
ну и собсно все..

Цитата
is undefined E:\Len_OK\iar\work_flash\test3\asm.s90

Совсем дикая идея - может нельзя файл называть именем "asm"? т.к. может пересекается с ключевым словом компилятора.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Len_OK   Самопрограммирование AVR   May 14 2008, 12:42
- - Igor26   Ничего не понял. Поподробней пожалуйста. P.S. Вы...   May 14 2008, 13:01
|- - Len_OK   Цитата(Igor26 @ May 14 2008, 16:01) P.S. ...   May 14 2008, 13:05
- - Igor26   Вектора прерываний на область загрузчика переключа...   May 14 2008, 13:09
|- - Len_OK   Цитата(Igor26 @ May 14 2008, 16:09) Векто...   May 14 2008, 13:19
|- - Сергей Борщ   Цитата(Len_OK @ May 14 2008, 16:19) Я под...   May 14 2008, 14:17
|- - Len_OK   Цитата(Сергей Борщ @ May 14 2008, 17:17) ...   May 14 2008, 14:23
- - Len_OK   Вот ещё ошибочка Error[e46]: Undefined external ...   May 15 2008, 06:42
- - Igor26   А подключен к проекту хидер inavr.h или intrinsics...   May 15 2008, 06:49
|- - Len_OK   Цитата(Igor26 @ May 15 2008, 09:49) А под...   May 15 2008, 06:50
- - Igor26   Что удалось найти. Функция __AddrToZByteToSPMCR_SP...   May 15 2008, 07:41
|- - Len_OK   Обратите внимание на регистр SPMCR. В Tiny2313 он ...   May 15 2008, 07:47
- - Len_OK   никто никогда не использовал spm для Tiny?   May 15 2008, 13:12
|- - defunct   Цитата(Len_OK @ May 15 2008, 16:12) никт...   May 15 2008, 13:19
- - Len_OK   ну хоть под Tiny2313? Цитата(defunct @ May ...   May 15 2008, 13:27
|- - defunct   Цитата(Len_OK @ May 15 2008, 16:27) а вст...   May 15 2008, 13:41
|- - muravei   Цитата(Len_OK @ May 15 2008, 17:27) Ассем...   May 15 2008, 14:22
|- - defunct   Цитата(Len_OK @ May 16 2008, 13:17) IAR4....   May 16 2008, 10:21
|- - Len_OK   Решилась проблемка с записью во флешку ! Тепер...   May 20 2008, 09:26
- - defunct   Использовать intrinsics для tiny у меня не получил...   May 15 2008, 21:32
- - Len_OK   есть ли разница между расширениями х.s90 и х.s? Я...   May 16 2008, 10:39
- - Len_OK   Помогите разобраться почему не пишутся данные во ф...   May 22 2008, 10:29
|- - _Pasha   Цитата(Len_OK @ May 22 2008, 13:29) Помог...   May 22 2008, 11:20
- - defunct   Заполнить надо весь temp буфер. После этого писать...   May 22 2008, 11:23
- - Len_OK   Как заполнить всю страницу данными, например при в...   May 22 2008, 12:37
|- - =GM=   Цитата(Len_OK @ May 22 2008, 11:37) Как з...   May 22 2008, 13:22
- - Len_OK   DoSpm //*************fill temp bufer******...   May 22 2008, 14:13
|- - defunct   ЦитатаLen_OK У меня к вам вопрос (точнее два во...   May 22 2008, 20:57
|- - Len_OK   Цитата(defunct @ May 22 2008, 23:57) У ...   May 23 2008, 07:32
|- - defunct   Цитата(Len_OK @ May 23 2008, 10:32) Я кон...   May 23 2008, 10:02
|- - Len_OK   [quote name='defunct' date='May 23 200...   May 23 2008, 11:46
- - defunct   Цитатаразмер страницы указываю 32(а должно быть 16...   May 23 2008, 15:09
|- - Len_OK   Цитата(defunct @ May 23 2008, 18:09) Если...   May 26 2008, 06:21
- - defunct   Асм функция используемая вами - рабочая. Полагаю ч...   Jun 1 2008, 22:27
- - Len_OK   Цитата(defunct @ Jun 2 2008, 01:27) см ат...   Jun 2 2008, 06:08


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

 


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


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