site logo
  • Կայքի մասին
  • Ծրագրավորում
  • Ժեշտ
  • Անվտանգություն
  • Հարց ու Պատասխան (ՀուՊ)
Մարտ 8, 2013  |  By Neutrino In

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

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

Սովորաբար 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-եր Arduino atmega avr avr-gcc C և C++ firmware makefile Ժեշտ ծրագրավորում Ծրագրավորում Միկրոկոնտրոլերներ
Previous StoryVIM. Աշխատում ենք պատուհանի maximized ռեժիմում միժամանակ չխախտելով Linux kernel coding style -ը։
Next StoryՎորդպրես – Դերեր և Իրավունքներ

Comments: no replies

Join in: leave your comment Cancel Reply

(will not be shared)

Որոնում

Նշագրեր

*Nix-եր (18) android (17) C++ (19) C և C++ (27) Excel (10) html (10) Network Administration (16) System Administration (28) Windows 7 (14) Ալգորիթմներ (15) Անվտանգություն (29) ԳՆՈՒ/Լինուքս (16) Թեյնիկներին (57) Ժեշտ (44) Լակոնիկ (21) Լինուքս/Յունիքս հրամաններ (29) Լուսանկարչություն և մշակում (15) Խելախոսներ (19) Ծրագրավորման լեզուներ (16) Ծրագրավորում (64) Ծրագրեր (48) Հայականացում (28) Հումոր (11) Ուսումնական նյութեր (34) Սոցցանցային Հմտություններ (19) Վեբ (25) Վերլուծություն (10) Վորդպրես (21) ՏՏ և փիլիսոփայություն (21) Տվյալների բազաներ (12) Օպերացիոն համակարգեր (27) Օֆիսային ծրագրեր (22) անդրոիդ (16) բաշ (10) ինտերնետ (11) խելախոսներ (13) համացանց (15) հայատառ (10) հայերեն (11) հայերեն ստեղնաշար (11) հայկական սոֆթ (11) ստեղնաշար (10) սքրիփթ (14) վինդոուս (12) տեսանյութ (23)
Copyright ©2017 ThemeFuse. All Rights Reserved