Սկիզբ » Ուսումնական նյութեր » Օպերացիոն համակարգեր » *Nix-եր » Ծրագրավորում ենք AVR միկրոկոնտրոլերները Linux օհ -ից միայն GNU գործիքներով։

Ծրագրավորում ենք AVR միկրոկոնտրոլերները Linux օհ -ից միայն GNU գործիքներով։

| Մարտ 8, 2013 | Մեկնաբանված չէ |

Սովորաբար windows-ում AVR միկրոկոնտրոլերների ծրագրավորման համար օգագործում էնք CodeVisionAvr, WinAvr, AvrStudio  և այլ ծրագրային միջավայրերը։ Իսկ ինչ կասեք, որ ասեմ ծրագրավորելու ենք  AVR միկրոկոնտրոլերները միայն GNU-ի տրամադրած միջոցներով ու ծրագրերով։ Հետաքրքրե՞ց։ Եթե այո, ուրեմն սկսեցինք։ Դրա համար նախ տեղակայում ենք հետևյալ անհրաժեշտ ծրագրերը՝ avr-gcc, avrdude և AVR միկրոկոնտրոլերների ծրագրավորման համար C-ական avr-libc գրադարանը։ Տեղակայում ենք հետևյալ կերպ․ բացում ենք տերմինալը և գրում ենք ՝

sudo apt-get install gcc-avr avr-libc avrdude

Screenshot from 2013-03-08 13:05:26

Այժմ կարող ենք գրել ինչ-որ փորձնական կոդ ստուգելու համար, այս մեթոդը աշխատում է, թե ոչ, գրենք main.c ֆայլը։

#include <avr/io.h>
#include <util/delay.h>

void main(void) {

DDRB=0xFF;
while (1) {
        /*  PORTB high -> LED on */
        PORTB=0xFF;
        /*  wait */
        _delay_ms(1800);
        /*  PORTB low -> LED off */
        PORTB=0x00;
        /*  wait */
        _delay_ms(800);
	}
}

Բերենք այս կոդը կոմպիլացման և կատարողական ֆայլի ստացման համար անհրաժեշտ make ֆայլը` makefile

AVRDUDE=avrdude -F -V
PROGRAMMER=stk500v1
DEVICE=/dev/ttyACM0
BAUD_RATE=115200
OBJCOPY=avr-objcopy -O ihex -R
EEPROM=.eeprom
CC=avr-gcc
MCU=atmega328p
F_CPU=16000000UL
CFLAGS=-Wall -Os -DF_CPU=$(F_CPU) -mmcu=$(MCU)
RM=rm -rf
SOURCES=main
EXECUTABLE=main

${EXECUTABLE}.hex : ${EXECUTABLE}
	$(OBJCOPY) $(EEPROM) $(EXECUTABLE) $(EXECUTABLE).hex
${EXECUTABLE} : ${SOURCES}.o
	$(CC) -$(CFLAGS) ${SOURCES}.o -o ${EXECUTABLE}
${SOURCES}.c : ${SOURCES}.o	
	$(CC) $(CFLAGS) -c -o ${SOURCES}.o ${SOURCES}.c

.PHONY: upload
upload:
	$(AVRDUDE) -c $(PROGRAMMER) -p $(MCU) -P $(DEVICE) -b $(BAUD_RATE) -U flash:w:${EXECUTABLE}.hex:i

.PHONY: clean
clean:
	$(RM) ${EXECUTABLE}.o ${EXECUTABLE}.hex ${EXECUTABLE} *.swf

Օգտագործում ենք վերը բերված makefile ֆայլը հետևյալ կերպ։ makefile-ը և ծրագրի կոդի ֆայլը՝ main.c -ն copy ենք անում միևնույն պանակի մեջ (ինչ-որ մի տեղ ստեղծում էք ինչ-որ մի պանակ և մեջը copy էք անում նշված երկու ֆայլերը՝ makefile և main.c)։

Նյութը հասարակ չէ և միաժամանակ կողմնորոշված է դեպի սկսնակները, դրա համար ավելի մանրամասն կնկարագրենք կոմպիլացման և վերջնական ֆայլի ստացման գործընթացը։

ՈՒրեմն ստեղծում ենք avr անունով պանակ, ասենք Desktop-ի վրա, դրա նախ գնում ենք Desktop․

cd ~/Desktop

և ստեղծում ենք avr անունով պանակ․

mkdir avr

Մտնում ենք avr պանակ և ստեղծում ենք երկու դատարկ ֆայլ՝ main.c և  makefile անուններով․

cd avr 
touch main.c makefile

Այժմ բացում ենք main.c ֆայլը gedit տեքստային խմբագրիչի ծրագրով․

gedit main.c

և բրաուզերից copy էք անում վերը բերված main.c -ի կոդը (նախ մկնիկով նշում էք 1-ից մինչև 17-րդ տողերը, հետո սեղմում էք մկնիկի աջը ու սեղմում էք copy) և past էք անում gedit -ի մեջ։ Դրանից հետո save էք անում ու փակում gedit-ը։ Նույն կերպ copy էք անում նաև makefile-ը։

Հիմա կոմպիլացնում ենք կոդը և ստանում ենք ․hex ձևաչափով firmware -ի ֆայլը, որով պետք է upload անենք միկրոկոնտրոլերի flash հիշողության մեջ։ Դրա համար նույն պանակից (հիշենք մենք մտել էինք Desctop -ի avr պանակը), որտեղ գտնվում է makefile -ը տալիս ենք make հրամանը․

make

Screenshot from 2013-03-08 14:30:32

Եվ ինչպես տեսնում ենք ստորև բեված նկարում կստանանք main․hex firmware ֆայլը․

Screenshot from 2013-03-08 14:34:00

Հիմա ՈՒՇԱԴՐՈՒԹՅՈՒՆ !!! ծրագրավորում ենք միկրոկոնտրոլերը:
Դրա համար հավաքում ենք ընդամենը մեկ հրաման․

make upload

Screenshot from 2013-03-08 14:39:18
Շնորհավորում ենք, հենց նոր, դուք ինքներդ, առանց որևէ մեկի մունաթի օգնության հաջող ծրագրավորեցիք ձեր առաջին միկրոկոնտրոլերը !!!

Բայց այնուամենայնիվ սկսնակի համար makefile -ը չինարեն է գրված, դրա համար բերենք, ավելի պարզ ձևով գրված makefile (դուք ընտրեք, որն էք ցանկանում օգտագործել)

main.hex : main
	avr-objcopy -O ihex -R .eeprom main main.hex
main : main.o
	avr-gcc -mmcu=atmega328p main.o -o main
main.c : main.o	
	avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o main.o main.c
upload:
	avrdude -F -V -c stk500v1 -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -U flash:w:main.hex:i
clean:
	rm -rf main.o main.hex main *.swf

Բացարձակ նույն makefile-ն է :): Հիմա, այս պարզ makefile-ը բերեցի, որպեսզի մի քիչ խոսենք դրա ֆլագերի մասին։ -DF_CPU=16000000UL սրանով տալիս ենք միկրոկոնտրոլերի հաճախությունը 16 mghz,  -mmcu=atmega328p տալիս ենք միկրոկոնտրոլերի մոդելը (եթե ձեր մոտ atmega8- է գրեք atmega8, եթե atmega16-է գրեք atmega16 և այդպես)․ avr-gcc -ի միջոցով կոմպիլացնում ենք կոդը և դրանից ստանում ենք elf ձևաչափով կատարողական ֆայլ, որից էլ պետք է ստանանք .hex ձևաչափոխ firmware-ի ֆայլը։ Դրա համար օգտագործում ենք avr-objcopy գործիքը (ուտիլիտը), որտեղ գրված ihex-ը նշանակում է՝ ստանալ  hex ֆայլ intel -ի կանոններով։

Լրիվ նույն փուլերով կարող էք ծրագարավորել նաև ցանկացած Arduino պլատա, դրա համար ընդամենը պետք է փոխեք, մեկ ֆլագ՝ վերը նշված -mmcu=atmega328p -ը, օրինակ, եթե ասենք ձեր bord -ի վրա atmega8 է ուրեմն գրում էք -mmcu=atmega8․
Իսկ թե ինչ է makefile-ը կգրեմ մի ուրիշ անգամ։

Ծրագրավորում ենք AVR միկրոկոնտրոլերները Linux օհ -ից միայն GNU գործիքներով։, 10.0 out of 10 based on 28 ratings

Նշագրեր: , , , , , , , ,

Բաժին: *Nix-եր, C և C++, Ժեշտ, Ծրագրավորում

Կիսվել , տարածել , պահպանել

VN:F [1.9.20_1166]
Rating: 10.0/10 (28 votes cast)

Մեկնաբանեք

Կհաստատվեն միայն մեսրոպատառ հայերենով գրած մեկնաբանությունները

334