Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
Непонятности с IAR EW2.28
- 10-20-2003
- Arcady Korotkevitch
October 20, 2003, 5:27 pm

Сегодня решил все-таки перейти на более современный софт для
программирования AVR, а именно, с IAR EW 1.40C на 2.28A. Взял
простенький работающий проект из трех файлов (процессор 4414), подправил
описания обработчиков прерываний, и...
Фокус заключается в том, что в 1.40 все компилируется, а в 2.28
линковщик выдает:
Error[e46]: Undefined external "NEXTCRC(unsigned int, unsigned char)"
referred in uart ( D:\Projects\motor\out\uart.r90 )
Файл motor.c - там функция main()
В файле uart.c содержится следующая строчка:
extern unsigned int NEXTCRC(unsigned int CRC, unsigned char D);
Далее по тексту эта функция несколько раз вызывается.
Файл CRC16.s90:
NAME CRC16
RSEG CODE
PUBLIC NEXTCRC
; unsigned int NextCRC(unsigned int CRC, unsigned char D)
; r16,r17 - privious CRC
; r20 - data byte D
; return: r16:r17 - new CRC
NEXTCRC:
eor r16,r20
ldi r22,0x01
ldi r23,0xA0
ldi r21,9
Loop:
dec r21
breq Stop
lsr r17
ror r16
brcc Loop
eor r16,r22
eor r17,r23
rjmp Loop
Stop:
ret
END
Помогите, кто-нибудь, а? Перепробовал всевозможные настройки, все
бестолку, объектники генерятся,
в мапе функция присутствует. Какой то этот EC++ неприветливый.
Благодарю всех кто правильно ткнет носом.
программирования AVR, а именно, с IAR EW 1.40C на 2.28A. Взял
простенький работающий проект из трех файлов (процессор 4414), подправил
описания обработчиков прерываний, и...
Фокус заключается в том, что в 1.40 все компилируется, а в 2.28
линковщик выдает:
Error[e46]: Undefined external "NEXTCRC(unsigned int, unsigned char)"
referred in uart ( D:\Projects\motor\out\uart.r90 )
Файл motor.c - там функция main()
В файле uart.c содержится следующая строчка:
extern unsigned int NEXTCRC(unsigned int CRC, unsigned char D);
Далее по тексту эта функция несколько раз вызывается.
Файл CRC16.s90:
NAME CRC16
RSEG CODE
PUBLIC NEXTCRC
; unsigned int NextCRC(unsigned int CRC, unsigned char D)
; r16,r17 - privious CRC
; r20 - data byte D
; return: r16:r17 - new CRC
NEXTCRC:
eor r16,r20
ldi r22,0x01
ldi r23,0xA0
ldi r21,9
Loop:
dec r21
breq Stop
lsr r17
ror r16
brcc Loop
eor r16,r22
eor r17,r23
rjmp Loop
Stop:
ret
END
Помогите, кто-нибудь, а? Перепробовал всевозможные настройки, все
бестолку, объектники генерятся,
в мапе функция присутствует. Какой то этот EC++ неприветливый.
Благодарю всех кто правильно ткнет носом.

Hепонятности с IAR EW2.28
Hello Arcady!
20 Oct 03 21:27, Arcady Korotkevitch wrote to All:

Попробуй покрутить ассемблер на предмет Case sensetive symbol
Т.е. включи, иначе он их по-моему в заглавные переводит автоматом при
экспорте/импорте.
Roman
... There's a thing inside, that screams and shouts
20 Oct 03 21:27, Arcady Korotkevitch wrote to All:

Попробуй покрутить ассемблер на предмет Case sensetive symbol
Т.е. включи, иначе он их по-моему в заглавные переводит автоматом при
экспорте/импорте.
Roman
... There's a thing inside, that screams and shouts

Непонятности с IAR EW2.28
AK> Файл motor.c - там функция main()
AK> В файле uart.c содержится следующая строчка:
AK> extern unsigned int NEXTCRC(unsigned int CRC, unsigned char D);
AK> Далее по тексту эта функция несколько раз вызывается.
AK> Файл CRC16.s90:
AK> NAME CRC16
AK> RSEG CODE
AK> PUBLIC NEXTCRC
AK> ; unsigned int NextCRC(unsigned int CRC, unsigned char D)
AK> ; r16,r17 - privious CRC
AK> ; r20 - data byte D
AK> ; return: r16:r17 - new CRC
AK> NEXTCRC:
AK> eor r16,r20
AK> ldi r22,0x01
AK> ldi r23,0xA0
AK> ldi r21,9
AK> Loop:
AK> dec r21
AK> breq Stop
AK> lsr r17
AK> ror r16
AK> brcc Loop
AK> eor r16,r22
AK> eor r17,r23
AK> rjmp Loop
AK> Stop:
AK> ret
AK> END
У тебя, по ходу, режим С++ включен. А значит и кодирование имен в объектных
файлах (для типобезопасного связывания, перегрузки). Чтобы избежать проблем,
нужно либо выключить С++ режим, либо объявить функцию явно с С-связыванием:
extern "С" unsigned int NEXTCRC(unsigned int CRC, unsigned char D);
...so long!
### Варфоломеевская ночь, утро стрелецкой казни... Что-то будет днем!..
Site Timeline
- » WINAVR вопрос отладки по COFF
- — Next thread in » Microcontrollers (Russian)
-
- » FM-тюнер
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » (PDF) Behavioral Neuroscience of Orexin, Hypocretin by Andrew J Lawrence
- — The site's Newest Thread. Posted in » Electronics (Polish)
-