You are on page 1of 21

BEAGLEBOARD XM LE HARC BR MKRODENETLEYCNN HABERLETRLMES

GR Proje kapsamnda Beagleboard zerinde Linux tabanl iletim sistemi olan angstrom koturulup, Beagleboard ve seilen mikrodenetleyicinin birlikte altrlmas salanmtr. Bu kapsamda ncelikle bir mikroSD karta angstrom iletim sistemi yklenmi ve bunun Beagleboard zerinde koturulmas salanmtr. Ardndan Beagleboard ile seilen mikrodenetleyicinin haberlemesi iin Linux sistemlerde seriport haberlemesi kullanm iin gelitirilmi olan ak kaynak kodlu libcssl ktphanesi indirilmi ve kodun zerinde dzenleme yapldktan sonra cross-compile ilemi yaplmtr. Elde edilen arm ilemcilerde altrlabilir dosya beagleboard da koturulan angstrom iletim sistemine aktarlmtr. Bu dosyay altrarak seriporttan istenilen verinin gnderilmesi salanmtr. Seriporttan gnderilen veri bir mikrodenetleyici ile alnm ve LEDler zerinde bu veri gsterilmitir. Mikrodenetleyici olarak PIC18F4680 seilmitir. Bylece alnan verinin gnderilen veriyle tutarllk salayp salamad kontrol edilmitir. Bu ekilde Beagleboarddan altrlan dosyaya gre seriporttan harici bir mikrodenetleyiciye veri gnderebilir ve mikrodenetleyici de alan bu dosyaya gre portlara erierek istenilen uygulamay yapabiliriz. rnein r karakteri gnderildiyse mikrodenetleyicinin portlarna bal iki motorun hzn ayarlayarak robotumuzu saa dnderebiliriz. Yada mikrodenetleyicide ayarlanan karakter alndnda mikrodenetleyicinin bir portuna bal sensorden bilgi alp bu bilgiyi Beagleboard a yollayabiliriz. Bu ekilde uygulamalar oaltlabilir.

BEAGLEBOARDA ANGSTROM DAITIMININ KURULMASI Angstrom gml sistemler iin gelitirilmi bir linux datmdr. Angstrom datmnn kurulmas iin yaplmas gerekenler; en az 2gblk hafzaya sahip olan bir mikroSD kart, bu kartn biimlendirilmesi, bu karta gerekli dosyalarn yklenmesi, bilgisayarmzda kullandmz linux datmna minicomun yklenmesi ve datmn Beagleboard zerinde altrlmasdr. ncelikle SD kartmz boot ileminin yaplabilmesi iin FAT, dosya sistemi ve dosya sistemimizin ekilebilmesi iin linux dosya sistemi olan ext3 olarak iki para halinde biimlendirmemiz gerekiyor. Disk biimlendirme ve blmlendirme program olan gparted kullanmak iin konsola sudo apt-get install gparted komutunu vererek bu program sistemimize yklyoruz. SD kartmz bilgisayara takyoruz ve ardndan konsolu ap gparted yazarak bu program ayoruz. Program arayznde ncelikle sa st keden uygun hafza birimini(bilgisayarmza taktmz SD kart) seiyoruz.

Eer kartta herhangi bir blm varsa stne sa tklayp siliyoruz (sil komutu aktif deilse nce ayrmak gerekiyor).

Ardndan yeni bir blme oluturuyoruz. lk oluturacamz blm boot ilemi iin olacak. Bu blmn boyutu: 100 MiB, hizalama eidi: silindir, dosya sistemi: fat32 olarak seip etiket olarak boot ismini veriyoruz.

Kalan hafza ile de ext3 sisteminde hizalama eidi silindir,etiket ismi rootfs olan bir blm oluturup uygula deyip program kapatyoruz. Tekrar konsolu ap sudo fdisk /dev/sdb komutunu

yazp SD karta eriiyoruz. Daha sonra srayla a ,1 ve w komutlarn giriyoruz. Bylelikle kartn 1. blmnn (FAT32 li blm) boot bayran aktif edip kaydedip km oluyoruz. Bu aamaya kadar yaplan ilemlerle sd kart formatlama ve blmlendirme ilemini gerekletirmi oluyoruz. Blmleri oluturduktan sonra SD karta ykleyeceimiz dosyalarnda hazr olmas gerekiyor. FAT32 li ksma ykleyeceimiz dosyalar iin http://www.angstrom-distribution.org/demo/beagleboard/ sitesinden MLO ,u-boot.bin ve uImage dosyalarn indiriyoruz. Kolaylk olmas asndan indirdiimiz bu dosyalar ve daha nceden indirdiimiz imaj dosyalarn home klasrne kopyalyoruz. Beagleboard iin Angstrom iletim sistemi dosyalarn internette bulabilmek mmkn. Fakat iimize ynelik bir Angstrom iletim sistemi kurmak iin http://narcissus.angstrom-distribution.org/ adresine girdiimizde karmza kan ekranda aama aama iletim sistemini oluturmaya balyoruz. Oluturulan iletim sisteminin zellikleri u ekilde seilmitir.

Build seeneine tkladktan sonra karmza kan sayfada bir sre beklemek gerekmektedir. Bu sre yaklak 30 dakika srebilir.

Oluan dosyalardan kk olan aralar , boyutu byk olan ise sistem imajmz. Artk maj dosyamz hazr boot ilemine geebiliriz. Aadaki admlar adm adm gerekletiriyoruz.

sudo mkdir -p /tmp/disk

(disk isminde bir geici klasr oluturuyoruz ) (oluturduumuz klasrle ext3 li blm tek klasre balyoruz)

sudo mount /dev/sdb2 /tmp/disk sudo su

(sper kullanc moduna geiyoruz)

(narcisusdan indirdiimiz MLO, u-boot.bin ve uImage dosyalarn srayla fat32li blme kopyalyoruz) tar -zxvf /'home/erdem/Angstrom-2011.12-narcissus-beagleboard-i686- Angstrom -imagetoolchain.tar-C/tmp/disk

(ext3 blmndeki disk klasrne narcisus dan indirdiimiz iletim sistemi aralarn aktaryoruz)

tar -zxvf /'home/erdem/ Angstrom-image-beagleboard.tar' -C/tmp/disk

exit

(sper kullanc modundan kyoruz) (oluturduumuz geici disk dosyasyla balanty koparyoruz)

sudo umount /tmp/disk

sudo mount /dev/sdb1 /tmp/disk

(fat32 li blm iin balanty kuruyoruz)

(narcisusdan indirdiimiz MLO, u-boot.bin ve uImage dosyalarn srayla fat32li blme kopyalyoruz) sudo cp /'/home/erdem/MLO' /tmp/disk sudo cp /'/home/erdem/u-boot.bin' /tmp/disk sudo cp /'/home/erdem/uImage' /tmp/disk

sudo umount /tmp/disk sync

(disk dosyasyla fat32li sistemin ban koparyoruz)

Bu ilemlerin ardndan sd kartmza angstrom yklemi oluyoruz. Artk bilgisyardan karabiliriz.

Minicom, beagleoard zerinde alan iletim sistemindeki deiikleri ve ilemleri seriport zerinden gstermek iin kullanlan bir pakettir. Sd kart beagleboarda takmadan nce sistemimizde bu paket ykl deilse sudo apt-get install minicom komutu ile gerekli paket yklenmelidir.

Beagleboardda yaplan ilmeleri konsolda grmek iin bir seriport-usb dntrc kullanlr. Minicom paketini ykledikten sonra bu dntrcy bilgisayarmza takp konsola ls /dev komutu girilerek bilgiayarmza bal olan dntrcnn hangi isimde olduuna baklr. Bu genellikle ttyUSB0 olmaktadr:

Ardndan konsola sudo minicom s komutu yazlarak ayralar yapmamz gerekir. Bu komut ile konsolda ayar mens grnr:

Ayar mensnde serial port setup a girilir ve ayarlar aadaki gibi deitirilir.

Burada ttyUSB0 yukarda bahsedildii gibi bakldnda deiiklik gsteriyorsa ayarlar ksmnda uygun olan isim yazlr. Ardndan save setup as dfl e tklar ve her seferinde ayarlar yapmamak iin kaydederiz. Bu ilemle birlikte minicom ayarlarn tamamlam oluyoruz.

Bu ilemi de yaptktan sonra bilgisayarmz ile birbirine seriport-usb dntrc kabloyla bal olan beagleboarda SD kartmz takp yaplan ilemlerin bitmesini bekliyoruz. Bu ilem kart ilk taktmzda biraz uzun srebilir. lem baladnda ve bittiindeki ekran ktlar aadaki gibidir:

Son olarak root ismiyle sisteme giri yapmamz gerekir.

BEAGLEBOARDIN MKRODENETLEYC LE HABERLETRLMES Ev sahibi bir bilgisayar sistemi zerinde hedef bir bilgisayar sistemi iin kod derleme ilemine apraz derleme denir. Gml sistemlerde kullanlr, nk hedef sistem genellikle yazlm gelitirebilecek ve derleyebilecek kaynaa sahip deildir. Yani yazdmz kodu arm ilemcili beagleboardda altrabilmek iin bilgisayarmzda arm ilemciye gre derleyeceiz ve elde ettiimiz k dosyasn arm ilemcili gml sistemde altrabileceiz. apraz derleme iin Codesourcery programn kullanacaz. Program https://sourcery.mentor.com/sgpp/lite/arm/portal/release858 adresinden indirilir ve programn kurulumu aadaki ekilde yaplr. Bu adresten IA32 GNU/Linux Installer dosyasn indirip kurulumu onun zerinde yapyoruz.

ndirdikten sonra dosyay arivden karp /home/<kullanc ad> dizinine getiriyoruz ve terminal zerinden sudo chmod +x <dosyann ismi> ./<dosyann ismi> komutlarn girerek program altryoruz Karmza bir ykleme ekran geliyor. Daha sonra admlar takip ediyoruz. tess olarak yazlan ksm kullanc addr. Sizde fakl olacaktr.

Bylelikle tess ismindeki dizin ierisine derleyiciyi kurmu olduk.

Beagleboard zerindeki seriport k ilk ayarlamalar ve dosya ilemlerinin grntlenmesi iin kullanldndan mikrodenetleyiciyle haberleme usb-seriport dntrc zerinden gereklemektedir. Sonu olarak elimizde HDMI girie sahip bir monitr yada beagleboard n DVI-D kn balayabileceimiz uygun bir monitr yoksa iki adet usb-seriport dntrcye ihtiyacmz olacaktr. Bunlardan biri beagleboardda yaptmz ilemleri grmek iin beagleboardun seri portundan bilgisayarmzn usb giriine baldr. Dieri ise mikrodenetleyici ile beagleboardn haberlemesi iin beagleboardn usb giriinden mikrodenetleyicili devreye balanr. Beagleboarda dntrc kabloyu taktmzda gzlenen kablo bilgileri aadaki gibidir.

Beagleboarda taklan dntrcnn hangi ismi aldn ls /dev komutuyla grebiliriz. Burada ttyUSB0 ismiyle yer almaktadr.

Linux sistemlerde seriport haberlemesi kullanm iin gelitirilmi olan ak kaynak kodlu libcssl ktphanesi kullanltr. Ktphane verilen adresten indirilebilir. http://sourceforge.net/projects/cssl/files/libcssl/0.9.4/ ndirilen ktphane zerinden gnderilmek istenen verilere gre deiiklikler yaplp apraz derleme ilemi yapldktan sonra beagleboard zerinde altrlmas gerekmektedir. ndirilen ktphane ierisinde haberleme ayarlar ve gnderilmek istenen veriler test.c dosyasnda deitirilir.

Libcssl dosyas iindeki test.c dosyas alr ve aadaki gibi deiiklikler yaplr.

serial=cssl_open() fonksiyonu donanm ve haberleme iin gerekli parametreleri ayarlama ilemlerini yapmaktadr. Beagleboard zerindeki seriport dntrc donanm /dev/ttyUSB dizini altnda olduu iin bu parametre girilmi ve mikrodenetleyicinin seriport kesmesinin ayarlarn iermitir (parite biti,biti biti,baud rate oran vs). cssl_putstring(serial, ) fonksiyonu istenen veriyi gnderir. rnek olarak ekilde p karakteri gnderilmektedir. Bu karakterin hexadecimal karl mikrodenetleyicinin b portuna bal 8 ledde gzlemlenmitir. Verinin srekli gnderilmesini engellemek iin while(!finished) ve pause() komutlar kaldrlmtr. printf(\ngonderildi\n) komutu verinin gnderildiini konsol ekranna basmaktadr. test.c kaynak dosyasnda gerekli deiiklikleri yapp dosyay kaydettikten sonra programn beagleboard zerinde almas iin apraz derlenmesi gerekir. Bunun iin ncelikle apraz derleme aralar konsola export edilir. Bununla apraz derleme aracmzn sistemdeki yerini belirtmi oluyoruz.

ndirilen program dosyasna geilir ve ardndan aadaki ekilde apraz derleme aralarndan arm-none-linux- gcc ile dinamik bi ktphane oluturulur. arm-none-linux-gnueabi-gcc Wall D_GNU-SOURCE g O c cssl.c

Oluturulan ktphane cssl.o dosyas olarak aada grlmektedir.

Oluturulan ktphane ile test.c dosyamza istediimiz isimle derleme yapabiliriz. arm-none-linux-gnueabi-gcc Wall O o ledp test.c cssl.o

Oluturulan ledp dosyas aada grlmektedir.

Bu ekilde farkl karakterler iin farkl dosyalar oluturulabilir ve mikrodenetleyiciye farkl ilemler yaptrmak iin farkl dosyalarn altrlmas koulu salanabilir. Arm ilemcilerde alabilir dosyamz beagleboarda aktarmamz gerekmektedir. Bu dosyay SD kartn rootfs blmndeki home dosyasnn iindeki root dizinine kopyalamamz gerekmektedir. Dosyay bu blme aktarmann bir ok yolu mevcuttur. Bilgisayara bir flash bellek takarak dosyay bu bellee atp ardndan bellei beagleboarda takp dosya transferini gerekletirmek bunlardan biridir. Bellei beagleboarda taktmzda aygtn tantlmasn gzlemliyoruz.

Daha sonra aadaki gibi dosyay uygun yere kopyalyoruz.

altrlabilir dosyamzn bulunduu dizin:

MKRODENETLEYCL DEVRENN KURULMASI VE YAZILIMI

Beagleboarddan veri alnmas ve alnan veriye gre mikrodenetleyici ile uygulama yaplmas salanmtr. Mikrodenetleyicinin bulunduu devrede uygulama iin PIC18F4680,ledler(8 adet hexadecimal karlk iin,1 adet veri alveriini gstermek iin,1 adet istenilen verinin alndnn gsterilmesi iin) ve max232 devresi bulunmaktadr. Max232 ile beagleboarddan kan yksek gerilim seviyelerini pic iin uygun seviyelere dntrmektedir. Rs232 kablosundan seri haberleme ile veri alverii iin 9 pinden 3 pin kullanmak yeterlidir. Bu 3 pinden biri toprak u, dierleri ise alc ve verici u olan tx ve rx ulardr. Dntrc kablodan alnan 3 pin max232 devresine girer ve entegreden alnan klar da mikrodenetleyiciye gider. Bylelikle rs232 deki lojik 0 iin 3 ile 25 volt, lojik 1 iin ise -3 ile -25 volt arasnda deien deerler uygun seviyeye ekilip PIC18F4680e gnderilmi oluyor. Max232 devresi u ekildedir:

5 numaral pinin ground pini olduu ve ekildeki konnektrn dii olduu unutulmamaldr. Yazlan kod ile her karakter transferi gerekletiinde c5 pinindeki led toggle yaplmaktadr. Bu led bize veri alndn bildirir. b portlarna bal sekiz adet led ise gelen karakterin hexadecimal karln ifade etmektedir. p veya r karakterleri gnderildiinde ise d1 pinindeki led toggle yaplmaktadr. Bu kod aada yer almaktadr. #include <18F4680.h> #fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD,NOWRT,NODEBUG #use delay(clock=4000000) #use rs232 (baud=9600,xmit=pin_C6,rcv=pin_C7,parity=N,stop=1) #bit overrun_flag = GETENV("BIT:OERR") #byte rcreg = GETENV("SFR:RCREG") char karakter; #int_rda // RX ucuna veri gelince meydane gelen kesme void serihaberlesme_kesmesi () { disable_interrupts(int_rda); // int_rda kesmesini pasif yap karakter=getch(); // veriyi al ve "karakter" adl dizi deikenine aktar. output_b(karakter); output_toggle(pin_c5); if(karakter=='r') { output_toggle(pin_d1); karakter='a'; //a karakteri rastgele bir karakterdir. } if(karakter=='p') { output_toggle(pin_d1); karakter='a'; } enable_interrupts(int_rda); // int_rda kesmesi aktif }

void main ( ) { setup_psp(PSP_DISABLED); // PSP birimi devre d setup_spi(SPI_SS_DISABLED); // SPI birimi devre d setup_timer_1(T1_DISABLED); // T1 zamanlaycs devre d setup_timer_2(T2_DISABLED,0,1); // T2 zamanlaycs devre d setup_adc_ports(NO_ANALOGS); // ANALOG giri yok setup_adc(ADC_OFF); // ADC birimi devre d setup_CCP1(CCP_OFF); // CCP1 birimi devre d setup_CCP2(CCP_OFF); // CCP2 birimi devre d enable_interrupts(int_rda); enable_interrupts(GLOBAL); // Aktif edilen tm kesmelere izin ver set_tris_b(0x00); output_b(0x00); output_high(pin_c5); // RC5 k ilk anda sfrlanyor output_high(pin_d1); while(1) // Sonsuz dng { enable_interrupts(GLOBAL); if(overrun_flag) { overrun_flag=rcreg; } } }

Beagleboard ile mikrodenetleyicili devrenin balants yapldktan sonra beagleboarddan dosyamz altrabiliriz.

Uygulamann asl amac beagleboard ile harici bir mikrodenetleyicinin haberlemesini salamaktr. Bu kapsamda eitli uygulamalar yaplabilir.

KAYNAKLAR: 1. BeagleBoard-xM Rev C System Reference Manual 2. nternet Tabanl Gml Sistem Ara Denetimi- Ali Tun, Hamit etinkaya, Ahmet Samet Uzuncan 3. http://www.mcu-turkey.com 4. http://hyetik.wordpress.com/ 5. http://sourceforge.net 6. CCS C ile PIC Programlama Serdar iek 7. PIC18F4680 Datasheet 8. MAX232 datasheet

You might also like