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

 
 
> Портирование программы с IAR на WinAVR (GCC), тонкости с асемблером
PrSt
сообщение Nov 14 2007, 11:37
Сообщение #1


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



привет всем!

Портировать пришлось программу из среды IAR на среду WinAVR (GCC), и столкнулся с тем что я чегото не понимаю или не знаю...
помогите плиз разобраться

Вот привожу кусок кода как это было под IAR
Код
NAME loader
;     INCLUDE ""
     PUBLIC loader6000
     RSEG CODE  

.globl loader6000

SCLK  DEFINE 0
Data  DEFINE 1
Latch DEFINE 2

PORTA var 18h    

.text      
loader6000;
...
...



Но программу нужно портировать на WinAVR

А вот как я сделал под WinAVR

Код
;NAME loader
;;     INCLUDE ""
;     PUBLIC loader6000
;     RSEG CODE  

.globl loader6000


;SCLK  DEFINE 0
;Data  DEFINE 1
;Latch DEFINE 2
#define SCLK  0
#define Data  1
#define Latch 2

;PORTA var 18h    
PORTA = 0x18    

.text      
;loader6000;
loader6000:
....


Программа компиллируется но не работает

я так подозреваю что я некоррктно першел от записи PORTA var 18h или чтото не так понял как правильно интерпретировать иаровский DEFINE
Код
SCLK  DEFINE 0
Data  DEFINE 1
Latch DEFINE 2

PORTA var 18h


к записи

Код
#define SCLK  0
#define Data  1
#define Latch 2

PORTA = 0x18


я не могу понять как ему можно еще сказать.
как сделать правильно?
подскажите плиз!




.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mdmitry
сообщение Nov 14 2007, 21:09
Сообщение #2


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



В исходном файле должны быть соответствующие заголовочные, как минимум при работе с портами
#include <avr/io.h>
другие по неоходимости (прерывания, собака и EEPROM и т.д.)
В makefile указать правильно тип контроллера, тактовую частоту, если используется таймер.
С встроенным ассемблером у WinAvr не здорово в смысле сложный синтаксис, смесь вывода С и ассемблера.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
PrSt
сообщение Nov 15 2007, 08:28
Сообщение #3


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(mdmitry @ Nov 14 2007, 23:09) *
В исходном файле должны быть соответствующие заголовочные, как минимум при работе с портами
#include <avr/io.h>
другие по неоходимости (прерывания, собака и EEPROM и т.д.)
В makefile указать правильно тип контроллера, тактовую частоту, если используется таймер.
С встроенным ассемблером у WinAvr не здорово в смысле сложный синтаксис, смесь вывода С и ассемблера.


вот пример сборки
Код
> "make"

-------- begin --------
avr-gcc (GCC) 4.1.2 (WinAVR 20070525)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling C: cmd.c
avr-gcc -c -mmcu=atmega103 -I. -g  -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wstrict-prototypes -Wa,-adhlns=./cmd.lst -I"C:/WinAVR/avr/include" -I"C:/WinAVR/avr/include/avr" -I"C:/WinAVR/avr/include/compat" -std=gnu99 -Wundef -MMD -MP -MF .dep/cmd.o.d cmd.c -o cmd.o

Compiling C: eeprom.c
avr-gcc -c -mmcu=atmega103 -I. -g  -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wstrict-prototypes -Wa,-adhlns=./eeprom.lst -I"C:/WinAVR/avr/include" -I"C:/WinAVR/avr/include/avr" -I"C:/WinAVR/avr/include/compat" -std=gnu99 -Wundef -MMD -MP -MF .dep/eeprom.o.d eeprom.c -o eeprom.o

Compiling C: flex6000.c
avr-gcc -c -mmcu=atmega103 -I. -g  -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wstrict-prototypes -Wa,-adhlns=./flex6000.lst -I"C:/WinAVR/avr/include" -I"C:/WinAVR/avr/include/avr" -I"C:/WinAVR/avr/include/compat" -std=gnu99 -Wundef -MMD -MP -MF .dep/flex6000.o.d flex6000.c -o flex6000.o

Compiling C: gidro.c
avr-gcc -c -mmcu=atmega103 -I. -g  -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wstrict-prototypes -Wa,-adhlns=./gidro.lst -I"C:/WinAVR/avr/include" -I"C:/WinAVR/avr/include/avr" -I"C:/WinAVR/avr/include/compat" -std=gnu99 -Wundef -MMD -MP -MF .dep/gidro.o.d gidro.c -o gidro.o

Compiling C: irka.c
avr-gcc -c -mmcu=atmega103 -I. -g  -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wstrict-prototypes -Wa,-adhlns=./irka.lst -I"C:/WinAVR/avr/include" -I"C:/WinAVR/avr/include/avr" -I"C:/WinAVR/avr/include/compat" -std=gnu99 -Wundef -MMD -MP -MF .dep/irka.o.d irka.c -o irka.o

Compiling C: main.c
avr-gcc -c -mmcu=atmega103 -I. -g  -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wstrict-prototypes -Wa,-adhlns=./main.lst -I"C:/WinAVR/avr/include" -I"C:/WinAVR/avr/include/avr" -I"C:/WinAVR/avr/include/compat" -std=gnu99 -Wundef -MMD -MP -MF .dep/main.o.d main.c -o main.o
main.c: In function 'main':
main.c:197: warning: return type of 'main' is not 'int'

Compiling C: uart.c
avr-gcc -c -mmcu=atmega103 -I. -g  -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wstrict-prototypes -Wa,-adhlns=./uart.lst -I"C:/WinAVR/avr/include" -I"C:/WinAVR/avr/include/avr" -I"C:/WinAVR/avr/include/compat" -std=gnu99 -Wundef -MMD -MP -MF .dep/uart.o.d uart.c -o uart.o

Compiling C: util.c
avr-gcc -c -mmcu=atmega103 -I. -g  -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wstrict-prototypes -Wa,-adhlns=./util.lst -I"C:/WinAVR/avr/include" -I"C:/WinAVR/avr/include/avr" -I"C:/WinAVR/avr/include/compat" -std=gnu99 -Wundef -MMD -MP -MF .dep/util.o.d util.c -o util.o

Linking: IRKA_103.elf
avr-gcc -mmcu=atmega103 -I. -g  -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wstrict-prototypes -Wa,-adhlns=cmd.o -I"C:/WinAVR/avr/include" -I"C:/WinAVR/avr/include/avr" -I"C:/WinAVR/avr/include/compat" -std=gnu99 -Wundef -MMD -MP -MF .dep/IRKA_103.elf.d cmd.o eeprom.o flex6000.o gidro.o irka.o main.o uart.o util.o dac420.o loader.o prg_reset.o --output IRKA_103.elf -Wl,-uInterruptVectors -static -mmcu=atmega103  -LC:/WinAVR/avr/include/ -Wl,-u,vfprintf -lprintf_flt -Wl,-u,vfscanf -lscanf_flt -lm

Creating load file for Flash: IRKA_103.hex
avr-objcopy -O ihex -j .text -j .data -j .bss -R .eeprom IRKA_103.elf IRKA_103.hex

Creating load file for EEPROM: IRKA_103.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
    --change-section-lma .eeprom=0 --no-change-warnings -O ihex IRKA_103.elf IRKA_103.eep || exit 0
c:\WinAVR\bin\avr-objcopy.exe: there are no sections to be copied!

Creating Extended Listing: IRKA_103.lss
avr-objdump -h -S IRKA_103.elf > IRKA_103.lss

Creating Symbol Table: IRKA_103.sym
avr-nm -n IRKA_103.elf > IRKA_103.sym

Converting to AVR Extended COFF: IRKA_103.cof
avr-objcopy --debugging --change-section-address .data-0x800000 --change-section-address .bss-0x800000 --change-section-address .noinit-0x800000 --change-section-address .eeprom-0x810000 -O coff-ext-avr IRKA_103.elf IRKA_103.cof
Warning: file C:/WINDOWS/TEMP/ccm5PzQa.s not found in symbol table, ignoring
Warning: ignoring function __vectors() outside any compilation unit
Warning: ignoring function __bad_interrupt() outside any compilation unit
Warning: file C:\DOCUME~1\veter\LOCALS~1\Temp/ccPqGPfj.s not found in symbol table, ignoring
Warning: file C:\DOCUME~1\veter\LOCALS~1\Temp/ccXIZWtu.s not found in symbol table, ignoring
Warning: file C:\DOCUME~1\veter\LOCALS~1\Temp/ccBVLsKR.s not found in symbol table, ignoring
avr-objcopy: --change-section-vma .eeprom+0xff7f0000 never used
avr-objcopy: --change-section-lma .eeprom+0xff7f0000 never used
avr-objcopy: --change-section-vma .noinit+0xff800000 never used
avr-objcopy: --change-section-lma .noinit+0xff800000 never used

Size after:
AVR Memory Usage
----------------
Device: atmega103

Program:   84586 bytes (64.5% Full)
(.text + .data + .bootloader)

Data:      65087 bytes (1627.2% Full)
(.data + .bss + .noinit)



-------- end --------


> Process Exit Code: 0
> Time Taken: 00:21


меня настораживают эти сооющения
Warning: ignoring function __vectors() outside any compilation unit
Warning: ignoring function __bad_interrupt() outside any compilation unit


тоесть программа собирается
но полученный хекс файл не работает...


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- PrSt   Портирование программы с IAR на WinAVR (GCC)   Nov 14 2007, 11:37
- - forever failure   да так же и записать: #define PORTA ...   Nov 14 2007, 12:26
- - GDI   Что то я не понял что за программа такая и на како...   Nov 14 2007, 12:33
|- - PrSt   Цитата(GDI @ Nov 14 2007, 14:33) Что то я...   Nov 14 2007, 13:26
- - forever failure   #include <avr/io.h> а в командной строке ком...   Nov 14 2007, 13:35
|- - PrSt   Цитата(forever failure @ Nov 14 2007, 15...   Nov 14 2007, 13:50
- - forever failure   Практика - вот единственный критерий правильности....   Nov 14 2007, 14:10
|- - PrSt   Цитата(forever failure @ Nov 14 2007, 16...   Nov 14 2007, 14:35
- - ReAl   Код.nolist #define __SFR_OFFSET 0 #include <av...   Nov 14 2007, 15:27
- - forever failure   Просто по выходу препроцессора можно посмотреть ка...   Nov 14 2007, 16:20
- - mdmitry   У Вас действительно atmega103? Для разбора проблем...   Nov 15 2007, 20:08
|- - PrSt   Цитата(mdmitry @ Nov 15 2007, 22:08) У Ва...   Nov 16 2007, 12:53
- - alcosar   У Вас КодData: 65087 bytes (1627.2% Full...   Nov 16 2007, 14:31
- - PrSt   Цитата(alcosar @ Nov 16 2007, 16:31) У Ва...   Nov 16 2007, 15:27
- - PrSt   проблема с памятью решена ...наткнулся на следующ...   Nov 19 2007, 13:08
- - Сергей Борщ   По объявлению - можно и так: prog_uint8_t ga_field...   Nov 19 2007, 13:33
- - PrSt   Цитата(Сергей Борщ @ Nov 19 2007, 15:33) ...   Nov 19 2007, 13:57
- - PrSt   Цитата(Сергей Борщ @ Nov 19 2007, 15:33) ...   Nov 20 2007, 08:11
- - Сергей Борщ   Цитата(PrSt @ Nov 20 2007, 10:11) не помо...   Nov 20 2007, 08:40
- - PrSt   Цитата(Сергей Борщ @ Nov 20 2007, 10:40) ...   Nov 20 2007, 08:55
- - Сергей Борщ   Цитата(PrSt @ Nov 20 2007, 10:55) разобра...   Nov 20 2007, 09:33
- - PrSt   Цитата(Сергей Борщ @ Nov 20 2007, 11:33) ...   Nov 20 2007, 10:25
- - PrSt   Цитата(Сергей Борщ @ Nov 20 2007, 11:33) ...   Nov 20 2007, 14:51
- - Сергей Борщ   Цитата(PrSt @ Nov 20 2007, 16:51) Код SP...   Nov 20 2007, 14:58


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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 04:10
Рейтинг@Mail.ru


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