Strana 1 z 1

Assembler v AVR GCC

Napísané: 24 Dec 2015, 19:03
od používateľa styro
Vedel by mi niekto poradiť, ako pomocou AVR GCC prekladať čistý stroják? Pre android som nenašiel žiadny kompiler assembleru pre AVR procesory, ale AVR GCC tam existuje. Na PC sa hrajem v AVR Studiu, chcel by som si rovnaké programy v assembleri prekladať aj v AVR GCC na tablete.

Re: Assembler v AVR GCC

Napísané: 24 Dec 2015, 19:56
od používateľa Sender
Ve vyšších programovacích jazycích je na to obvykle nějakej příkaz.V Pascalu např asm end;
Pro AVR GCC by to mělo fungovat nějak takto:
asm(
"mov r0, r0\n\t"
"mov r0, r0\n\t"
"mov r0, r0\n\t"
"mov r0, r0"
);

Re: Assembler v AVR GCC

Napísané: 24 Dec 2015, 20:47
od používateľa styro
To by síce asi išlo, ale predpokladám že by tam stále musel byt main(). Ja by som skôr potreboval vedieť, či by sa dalo priamo preložiť napr. takéto volačo:

Kód: Vybrať všetko

/*
 Kamera_1.asm
 *
 *  Created: 15.3.2013 17:25:15
 *   Author: 
 *
 * Blikac na falosnu kameru
 *   V roznych intervaloch rozsvecuje LED na prednom cele kamery
 *   Blikacie rezimy sa prepinaju stlacanim tlacitka
 *
 */ 
 ;
 		.include "tn15def.inc" 

 ; definicia registrov a portov

		.def CNT1=R17			;citace pre casove slucky
		.def CNT2=R18
		.def CNT3=R19
		.def WRK=R20			;pracovny register

		.equ LED_W=PORTB		;vystupny port pre LED (bit 4)
		.equ LED=4
		.equ DDR=DDRB			;riadenie portu pre LED a tlacitko
		.equ TLAC_R=PINB		;port tlacitka (bit 3)
		.equ TLAC=3				;bit tlacitka FIRE, prepinanie rezimov blikania


; Uvodna inicializacia procesora

		.org 0

START:
;		ldi WRK, low(RAMEND)
;		out SPL, WRK			;nastavenie SP
;		ldi WRK, high(RAMEND)
;		out SPH, WRK			;na koniec SRAM
;		ser WRK
;		out OSCCAL, WRK
		ldi WRK, 1<<LED			;bit LED vystup, ostatne vstup
;		ser WRK
		out DDR, WRK			;nastav
		ser WRK					;same 1
		out LED_W, WRK	 		;zhasni LED a pripni odpory na ostatne bity portu
;		rcall WAIT_1S			;pockaj 1 sekundu

; Hlavny program

MAIN:
		cbi LED_W, LED			;rozsviet LED
		rcall WAIT_S5
		sbi LED_W, LED			;zhasni LED
		rcall WAIT_2S
		rjmp MAIN

;Casove slucky



WAIT_5S:						;slucka 5 sekund
		ldi CNT1, 50			;napln citac
		rjmp WAIT1				;a hup ho na 100 milisekundovu slucku
WAIT_2S:						;slucka 2 sekundy
		ldi CNT1, 20			;napln citac
		rjmp WAIT1				;a hup ho na 100 milisekundovu slucku
WAIT_1S:						;slucka 1 sekunda
		ldi CNT1, 10			;napln citac
		rjmp WAIT1				;a hup ho na 100 milisekundovu slucku
WAIT_S5:						;slucka 0,5 sekundy
		ldi CNT1, 5				;napln citac
		rjmp WAIT1				;a hup ho na 100 milisekundovu slucku
WAIT_S2:						;slucka 0,2 sekundy
		ldi CNT1, 2				;napln citac a pokracuje 100 milisekundovou sluckou
WAIT1:							;slucka 100 milisekund
		ldi CNT2, 100			;napln citac
WAIT2:	clr CNT3				;256 opakovani 4 taktov pri 1MHz
WAIT3:	nop
		nop
		nop
		dec CNT3
		brne WAIT3				;256x6
		dec CNT2
		brne WAIT2				;a to 10x
		dec CNT1
		brne WAIT1
		ret



Re: Assembler v AVR GCC

Napísané: 24 Dec 2015, 21:49
od používateľa Sender
Obvykle to funguje tak,že překladač překládá do asm a až potom do *.hex .Zkusil bych prozkoumat celý AVR GCC včetně helpu.

Re: Assembler v AVR GCC

Napísané: 24 Dec 2015, 22:31
od používateľa peterple
GCC má assembler ktorý sa volá AS a vie preložiť mraky procesorov, ale nikdy nenasleduje syntax výrobcu. Keby si naozaj chcel použiť assembler v AVR GCC tak nech sa páči

http://www.nongnu.org/avr-libc/user-man ... e_asm.html

Ešte že si napísal prečo to vlastne chceš. Riešenie tvojho problému je iný prekladač. A to konkrétne tento:

http://avra.sourceforge.net/

Používal som ho dovtedy dokiaľ nórsky študenti nemali poriadny assembler s podmieneným prekladom, ktorý mi hodne chýbal. Behá to na win aj na linuxe. Je to dosť staré ale také nenáročné veci ako si dal to hravo zvládne. Už si presne nepamätám ako to bolo s kompatibilitou. Tuším iba niektoré direktívy sa písali inak. Už je to hodne dávno čo som to používal.

Re: Assembler v AVR GCC

Napísané: 25 Dec 2015, 00:57
od používateľa styro
AVRU som si pozrel, ale netuším ako by som to mohol rozbehať na androide. Vzhľadom na to že projekt skončil v roku 2010 asi ťažko.
Používanie assembleru v AVR-GCC som pozeral, ale veľmi som z toho nezmúdrel. Preto som myslel, či neexistuje človek čo by to používal a vedel by mi poradiť ako sa to dá (a či vôbec).
Aby som to zhrnul: potrebujem assemblerovský program napísaný v AVR Studiu preložiť na tablete s androidom.

Re: Assembler v AVR GCC

Napísané: 25 Dec 2015, 07:42
od používateľa dxr
AVRA treba najprv prelozit potom pouzit :) cize najprv na andoride naistalujes kompilator pre (asi eabi) ARM
potom to prelozis a az potom pouzijes :) AVR GCC ako pisal peterple len posle block pre AS
dokonca nerobi ziadnu kontrolu. este ktomu musis pisat ten asm s encodovanymi znakmi pre koniec riadku
a nakonci mas mapovanie premmenych a registrov. A je to AT&T konvencia ide to prepnut na intel syntax.

Na tablete co pouzivas CCTools?

Re: Assembler v AVR GCC

Napísané: 25 Dec 2015, 14:08
od používateľa styro
Áno, nainštaloval som tam CCTools.
Ak to nepôjde jednoducho, tak nič. Len som myslel, že kedže dokážem z tabletu aj napáliť hex súbor, mohol by som v prípade potreby aj na cestách niečo poskúšať. Ale potreboval by som, aby to išlo v syntaxe ako používa AVR Studio.