Portál AbcLinuxu, 1. května 2025 16:21
Zdravim vsechny, tento zapisek v bloku je vyustenim diskuze, kterou sem zalozil, abych zjistil jak to vypada s AVR v Linuxu. Vychazel sem ze tri clanku tady na abececku a samozrejme me taky pomohl pan Google :)
3)Jednočip ATtiny2313 pod Linuxem
a z tohoto clanku sem si vypujcilmakefile
.
Pouzivam distribuci Xubuntu 8.04 a pomoci Synaptic sem si podle mistnich rad nainstaloval tyto baliky:
avrdude avrdude-doc binutils-avr gcc-avr avr-libcProgramator pouzivam tento jedna se o klon STK200. Programator se pripojuje na paralelni port a potrebuje externi napajeni 5V. Na strance jsou i sablony pro vyrobu DPS. Doporucuji programator osadit jeste stabilizatorem napeti 5V napr. 7805. Tak dost kecu a nejake ukazky. Jednoduchy program pro blikani ledek (jak jinak :)).. Soubor sem si pojmenoval
pokus.c
.
#include <avr/io.h> #include <avr/sleep.h> #define F_CPU 4000000UL // 4 MHz #include <util/delay.h> int main (void) { DDRA=1; // nastaveni portuA na vystupni while (1) { PORTA=0; // zapis 0 na portA _delay_ms(500); PORTA=1; // zapis 1 na portA _delay_ms(500); } return 0; }Uvedu zde jeste vypis meho
makefile
,ktery sem prevzal z odkazu uvedeneho na zacatku. Zmenil sem proti puvodnimu cilovy jednocip na attiny2313..
PRG = pokus OBJ = pokus.o MCU_TARGET = attiny2313 OPTIMIZE = -O2 # You should not have to change anything below here. CC = avr-gcc # Override is only needed by avr-lib build system. override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) OBJCOPY = avr-objcopy OBJDUMP = avr-objdump all: hex $(PRG).elf: $(OBJ) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) clean: rm -rf *.o $(PRG).elf $(PRG).hex hex: $(PRG).hex %.hex: %.elf $(OBJCOPY) -j .text -j .data -O ihex $< $@ install: load load: $(PRG).hex avrdude -p t2313 -c stk200 -U flash:w:$<Soubor
makefile
a pokus.c
umistime do jednoho adresare a muzeme zacat s kompilaci.
boldak@boldak-desktop:~/avr/pokus$ ls makefile pokus.c boldak@boldak-desktop:~/avr/pokus$ makePrikaz
make
zavola prekladac avr-gcc a zkompiluje nas zdrojovy kod v cecku. make
ma par prepinacu coz je videt ve zdrojaku. Prikazy make
, make all
a make hex
podle me delaji totez. Moc tomu nerozumim, ale preklada to (snad dobre) :)
Vypis z terminalu.
boldak@boldak-desktop:~/avr/pokus$ make avr-gcc -g -Wall -O2 -mmcu=attiny2313 -c -o pokus.o pokus.c avr-gcc -g -Wall -O2 -mmcu=attiny2313 -o pokus.elf pokus.o avr-objcopy -j .text -j .data -O ihex pokus.elf pokus.hexByly vytvoreny dva soubory
pokus.elf
a pokus.hex
. Ten prvni nevim k cemu je uzitecny ci jak se pouziva. Druhy soubor je binarni a je v nem zkompilovany nas zdrojak. Tento soubor budeme nahravat do naseho jednocipu. Ted uz zbyva jen pripojit programator. Jakmile mame zapojeny a zaply programator muzem zacit nahravat (programovat) jednocip. To se provadi taky pomoci make
, ale s jinym prepinacem bud make load
nebo make install
.
Zde je vypis terminalu s chybou..
boldak@boldak-desktop:~/avr/pokus$ make load avrdude -p t2313 -c stk200 -U flash:w:pokus.hex avrdude: can't open device "/dev/parport0": Permission denied avrdude: failed to open parallel port "/dev/parport0" make: *** [load] Error 1Prvni uvaha byla nemam pristup na paralelni port. Moje reseni je proste spustit prikaz jako root.. V Xubuntu 8.04 jsem to provedl nasledovne..
boldak@boldak-desktop:~/avr/pokus$ sudo make load [sudo] password for boldak: avrdude -p t2313 -c stk200 -U flash:w:pokus.hex avrdude: AVR device not responding avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. avrdude done. Thank you. make: *** [load] Error 1Ha, dalsi chyba.. No jo ja jeste nemam dany gabel do notasu tak nemuzu nahravat.. :) Tak snad do tretice se to povede. No, ale o tom az priste (snad zitra). Napred musim udelat redukci z SMD na DIP, abych to mohl strcit do nepajiveho pole. Oni totiz v GME nemeli attiny2313 v DIP pouzdru.. Mozna priste n... Boldak
Tiskni
Sdílej:
Tak tady me nekdo predbehl.. :) Jeste dodam snad mcu.cz, belza.cz ci prochazka.profitux.cz a MEGA dalsi na Googlu.
Co se tyce literatury vhodne pro zacatecniky, tak ja sem odkojeny na panu Malinovy. Mel sem tyto knizky jeste pred tim nez sem sel na elektro prumku a musim rici, ze po cele ctyri roky sem se elektriku nemusel ucit.. :). Muj subjektivni nazor, nedelam reklamu..
Ad simulatory: Mozna sem Vam to bude zdat tvrde, ale pokud fakt nemate zaklady elektriky tak je Vam simulator k nicemu! Sice muzete menit hodnoty soucastek, parametry atd., ale pokud nevite na jakem principu to ma makat tak to stejne neodsimulujete.. Jinak pod Linux myslim je gEDA, jeste sem nezkousel, ale chystam se (mozna bude blok zapis :) ). Mam jen zkusenosti se simulatorama pod Win (OrCAD, MultiSim, Micro-Cap). A jeste sem si vzpomnel, vysledky simulaci jsou tak dobre jak dobre mame modely..
Prikazy make, make all a make hex podle me delaji totez. Moc tomu nerozumim, ale preklada to (snad dobre)Nedělají. Samotný
make
vyrobí jenom ELF, HEX soubor vyrobí až make hex
Byly vytvoreny dva soubory pokus.elf a pokus.hex. Ten prvni nevim k cemu je uzitecny ci jak se pouziva. Druhy soubor je binarni a je v nem zkompilovany nas zdrojak.Ten první je výsledná binárka ve formátu ELF (Executable Linux Format). Užitečný není, ale avr-gcc neumí vyrobit nic jiného. HEX se vyrobí konverzí tohoto souboru.
Prvni uvaha byla nemam pristup na paralelni port. Moje reseni je proste spustit prikaz jako root.Méně prasácké řešení je přiřadit uživatele boldak do skupiny lp, která ten paralelní port vlastní.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.