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

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

|
Помогите, please! Программирую в IARe! Возникла такая ошибка
Fatal Error[e38]: Option -H must not be defined more than once: -H1895 Никак не могу её исправить! Если кто-нибудь сталкивался, подскажите что бы это могло быть?
|
|
|
|
|
 |
Ответов
|
May 15 2008, 18:07
|

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

|
Я так понял, Вы пользуютесь апнотом от AVR. Те, которые попадались мне, были заточены под Меги. Попробуйте, пользуясь этим апнотом, написать бутлоадер, например, для Меги-8. Когда получиться, тогда приобретенный опыт можно будет применить и к Тинькам. Помоему, с бутлоадером для Меги здесь Вам помогут больше, чем с бутлоадером для Тини. Я в том числе. Здесь многие "грызли" и победили этот вопрос.
|
|
|
|
|
May 16 2008, 07:57
|
Участник

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

|
Цитата(Igor26 @ May 15 2008, 21:07)  Попробуйте, пользуясь этим апнотом, написать бутлоадер, например, для Меги-8.  Для меги у меня уже давно работает!А для тини(думала получиться аналогичным образом) не получается.Теперь вся сложность состоит в использовании ассемблера... Цитата(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 )
|
|
|
|
|
May 16 2008, 09:48
|
Участник

Группа: Новичок
Сообщений: 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
|
|
|
|
|
May 16 2008, 09:55
|

кекс
     
Группа: Свой
Сообщений: 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? Компилирующийся проект смотрите в атаче.
|
|
|
|
|
May 16 2008, 10:17
|
Участник

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

|
Цитата(defunct @ May 16 2008, 12:55)  Какая у вас версия IAR'a? IAR4.11
|
|
|
|
|
May 16 2008, 10:23
|
Участник

Группа: Новичок
Сообщений: 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
|
|
|
|
|
May 16 2008, 10:24
|

кекс
     
Группа: Свой
Сообщений: 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"? т.к. может пересекается с ключевым словом компилятора.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|