ARM9 geliştirme boardı yapıyoruz[YAZILIM]

Başlatan ahmet2004, 25 Ocak 2008, 18:11:45

ahmet2004

1- Bios hazırlama?
2- Kullanılacak bootloader ve yazılım?
3- Jtag kullanımı?
4- Şu anki donamımızın sürücüleri nelerdir?
5- Linux çekirdek yapısı ve derleme?
6- WinCE_4.2 ve WinCE_5 kullanımı ve sürücüleri?
7- Linux ve WinCe de sürücü hazırlama?
8- Xilinx Xc9572 Programlama ve kullanımı?
9- İlerde kullanılabilecek donanım sürücüleri?
10- TFT Lcd kullanımı?

mp3dragon

https://www.picproje.org/index.php/topic,18790&postdays=0&postorder=asc&start=0

Evet arkadaşlar,

yukarıdaki linkte başlayan ARM9 geliştirme boardı bu başlıkta yazılım olarak donanıma paralel biçimde devam edecektir.

bu gün program yükleme konusunda biraz araştırma yaptım. Çıkan sonuç şu;

Jtag programlama H-jtag ve wiggler ile malesef olamıyor. J-link, Ulink gibi profesyonel Jtag donanımları gerektirmekte. Bununla ilgili bir forumda aynen şu yazmış. wiggler="toys" (oyuncak)
Ancak moraliniz bozulmasın işlemcimiz oldukça gelişmiş ve farklı bootloader seçenekleri mevcut. Bunun la ilgili olarak;
http://wiki.emqbit.com/free-ecb-at91 adresindeki "dokumantation" başlığı altındaki açıklamaların türkçeleştirilmesi ile işe başlanabilir. Burada yer alan bord bizim boardımızla benzeşmektedir. U-boot ve linux kernel'ın UART0 üzerinden yüklenmesi anlatılmaktadır.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

bu ftplerde oldukça faydalı bilgiler, kodlar ve programlar bulunmaktadır.İncelemenizi tavsiye ederim.

ftp://at91dist:distrib@81.80.104.162/
ftp://ftp.arm.linux.org.uk/
ftp://ftp.realitydiluted.com/
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

ahmet2004


mp3dragon

Kartı programlama konusunda bir çok kişinin aklına takılan konular olduğunu düşünüyorum. Elimden geldiğince bu konudaki araştırmalarım sonucunda ulaştığım bilgileri burada paylaşacağım.
Öncelikle ne yapılması gerektiği konusunu sıra ile inceleyelim.

1 - Tasarladığımız kartta kullanılan ARM920 (AT91RM9200) çekirdeğinin içerisinde diğer işlemcilerden alışkın olduğumuz şekilde bir flash hafıza bulunmamaktadır. Şematiğimizi ve benzer şemaları inceleyenler ayrıca işlemcinin datasheetini okuyanlar bunu farketmişlerdir. Bu sebeple harici bir flash hafıza kullandık. Program yükleme ve çalıştırma bu flash hafıza içerisinden olacaktır. İlerde tabii HDD, MMC veya USB flash disk kullanılabilir. Ama Linux Çekirdeği (kernel) bu hafızada olacak.

2 - Kartımız farklı program yükleme şeçeneklerine sahiptir. Bunlar sırası ile;
A) Jtag kullanarak flashı direkt programlama (ve tabiiki HW debug),
B) Atmel romunda bulunan bootloader ile programlama;
a) UART0 ve Xmodem protokolü ile,(biz bunu kullanacağız)
b) USB device ve DFU protokolü ile,
C)Harici paralel flash kullanarak ve buraya bootloader yazarak programlama.

Burada bir açıklama yapmalıyım. Eğer Atmel sayfasındaki jtagselect jumperi (J2) seçili değilse kart dahili bootloader ile açmaya çalışacaktır. Burada da öncelikle sıra ile şunlara bakar;

a) EEPROM üzerinde geçerli program var mı?
b) Serial flash üzerinde geçerli program var mı?
c) 8 Bit paralel flash üzerinde geçerli program var mı?

eğer bu üçünü bulamaz veya bu üçü üzerinde geçerli bir program bulamaz ise,

a) UART0 dan Xmodem transferi bekler
b) USB Device den DFU transferi bekler.

Şemada flash yanındaki, flash resete bağlı jumper, flashı resette tutup atmel bootloaderin UART0'a yönlenmesi içindir.

3 - Linux kernel yüklenmeden önce bir bootloader yüklememiz gerekmekte. Burada şöyle bir uygulama vardır. Atmel içerisindeki dahili bootloader sadece atmel sramına yükleme yapar. (max. program boyutu 12 kb dir. 4 kb değişkenler için tutar toplam ram boyutu 16 kb dir.) Bu sebeple fazla yer tutan U-Boot programı direkt atılamaz. Öncelikle bir loader yüklemesi yapmak gerekmekte. Bu loaderin kaynak kodları bulunmaktadır. Tabii ki kendi bordumuza göre bir uyarlama gerekmektedir.

4 - U-boot derleme ve yükleme; U-boot'u bir nevi basit bios olarak düşünebiliriz. Ancak burada kendi bordumuzun yapısına göre ufak değişiklikler yaparak derlememiz gerekecek. (32 bit sdram kullanmamız sebebi ile mesela)

5 - Kernel derleme ve yükleme; Linux kernel, kernel.org sitesinde ana çekirdek kodlar ve http://maxim.org.za/at91_26.html sitesinde Atmel patch (yama) dosyaları ile yamanarak ve bulamadığımız donanımlar için kendi driverimızı yazarak derlenir. Şematiği düzenlerken özellikle driver ve patchı bulunan donanımlar seçmeye çalıştık. Ancak ufak düzenlemeler gerekebilir. Donanımlar linux kernel içerisinde tanımlı oldukları için artık program yazarken donanıma direkt müdahale etmemiz gerekmeyecektir. işletim sistemi mantığı budur zaten.

6 - Linux kernel üzerinde program geliştirme.

Derleme için gerekli programlar bedava olarak bulunabilmektedir. Derleme ortamı Linux yüklü bir bilgisayar ve bu bilgisayara yüklü "arm crosscompiler" olacaktır. Linux tercihimiz rpm tabanlı redhat, fedora veya benzeri bir dağıtım olmalıdır. Çünkü gerekli programlar genellikle .rpm paketinde bulunabilmektedir. Tabii kaynak kod ile başka dağıtımlarda derlemekte mümkün ama linux konusunda deneyimli kişiler için daha uygundur.

Şimdilik bu kadar,
Kolay gelsin.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

Kart üzerinde bulunan CPLD Xilinx web sitesinde bulunan ISE-WEBPACK programı ve Basit bir jtag donanımı ile programlanacaktır. ISE programı VHDL ve Verilog haricinde şematik giriş te kabul eder. yani CPLD içerinde kuracağımız mantık devrelerini şematik olarak derleyip CPLD içerisine atmamız mümkün. İleride HDD için şematik, kaynak ve derlenmiş dosya yayınlanacaktır. Farklı uygulamalar için kendi devrenizi kurabilirsiniz.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

Kernel patch ve donanım desteği için;
http://maxim.org.za/at91_26.html
ARM üzerinde linux ile ilgili güzel bir site;
http://www.arm.linux.org.uk/
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

Paylaşıma ve rapide AT91RM9200 için CYGWIN (ve normal linux elbette) U-boot, Linux Kernel nasıl derleneceğini anlatan bir döküman hazırlayıp koydum. Daha çok eksikleri var ama bir giriş yapmış oldum. Boardlar gelene kadar derleme ortamımızı hazırlarsak hızlı yol almış oluruz. Katılımcıların PC lerine Linux veya CYGWIN kurarak Crosscompile yüklemeleri ve derleme denemeleri yapmaları faydalı olur. Dökümanda görüleceği gibi bazı eksiklikler var. CYGWIN ortamında kernel derlemesi başarısız oldu. Ancak U-boot sorunsuz derlenebiliyor. Pardus ta ise kernel derlemesi dökümanda anlattığım şekilde derlenebiliniyor. Bu arada kendi boardımıza has değişiklikleri kernel ve u-boot gerekli Makefile config ve .h, .c dosyalarında yapmamız gerekiyor.

Dökümandaki işlemleri uygulayıp dökümanın sonunda verdiğim linklerdeki açıklamaları da okuyup eksikleri tamamlamama yardım ederseniz sevinirim. Eminim linux ve programcılık konusunda benden daha iyi olan arkadaşlar aramızda vardır.

http://rapidshare.com/files/98267106/CYGWIN_AT91RM9200_LINUX_KERNEL.pdf.html
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

madpic

Herkese selamlar
hocam döküman için ellerinize sağlık cygwin'i internetten kurmada sıkıntı çıktı hatta kurulrum iki sefer yarıda kaldı
bende dosyaları indirip öyle kurdum.
ama programı  vistada çalıştıramadım uymluluk vs falanda yemedi
vistada çalıştıran varsa; püf noktasını açıklarlarsa sevinirim.

mp3dragon

CYGWIN XP de sorunsuz kuruldu ama Vista da denemedim. Yalnız Busybox ve Kernel derlemede CYGWIN hata veriyor. Açıkça sebebini tam anlayamadım. Yalnız PARDUS yüklü PC de tüm derlemeleri sorunsuz olarak hallettim. CYGWIN işi sorunsuz olsa PC ye linux yüklemeden halletmek daha pratik olacak ama PC nizin boş bir alanına linux yüklemek daha sorunsuz oluyor.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

ugurtarlaci

Arkadaşlar,  Windows tabanlı işletim sistemleri üzerinde eğilsek daha kolay olmazmı acaba. Linux sanırım birçoğumuzun yabancı olduğu bir OS. Ayrıca sistemi oturttuktan sonra yazılım geliştirme ortamlarını da öğrenmek gerekecek sanırım. Oysa WinCE gibi platformlar için Visual Studio gibi geliştirme ortamları kullanılabilir diye biliyorum. Şöyle bir karıştırdım da Emb. Linux  biraz kasacak gibi. Yazılımcı arkadaşların fikirlerini bekliyorum
Zoru Başarırım , İmkansız Biraz Zaman Alır....İmza... YENİ NESİL GENÇ TÜRK MÜHENDİSLERİ......

picusta

Cygwin ile Linux çekirdedi derlemede daha önce sorun çiktigini duymustum.
Bildigim kadari ile bir sorun Windows ve Linux arasinda ki dosya yollarindaki farklilik. Windowsda örnegin C:\Windows\... yaziyoruz, Linux'ta ise anti-slash yerine slash kullaniliyor /opt/...  
Sorunlar bunla bitmiyor tabii ki.
Demek isteyecegim Windows altinda gelistirmek güzel ama Cygwin'de bu isi halletmek için biraz configurasyon yapmak gerekecek gibi.
gömülü isletim sistemimiz Linux olacaksa Linux'a isinmak lazim.
Isletim sistemi WinCE olacaksa haklisiniz tabii.

mp3dragon

Ben de bir hayli araştırdım. WinCE ile BSP geliştirmek açık kaynak bulmaktaki güçlükler nedeni ile daha zor. Başta WinCE nin kendisi kapalı bir ortam. Aynen diğer windows sürümlerinde olduğu gibi .dll mantığı ile çalıştığından derinlere müdahale etmek çok mümkün değil. Başlangıç için windows daha kasacaktır. Ayrıca geliştirme ortamları PC ye de bir hayli yük getiriyor. WINCE Platform Builder, visual kompanentler vs. Linux avantajı tüm donanım driverların açık olması ve müdahale edilebilmesi. Benzer donanım driverlarından da faydalanabiliriz. WinCE de bunlar genellikle derlenmiş dosya şeklinde.Ama WinCE konusunda usta olanlar yardım edebilir.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

Ziya

Linux'ta fazla sorun yaşamayız tahmin ediyorum. Bir arkadaşımın Arm7 tabanlı pos makinası geliştiren elemanları var. Linux kernelini kendileri halletmişler. Gerekirse destek alırız.

Ben PC üzerinde çok defa kernel derledim ve yükledim ama embedded linux nasıldır bilmiyorum. Linux ile de 1992-2000 yılları arasında çok uğraşmıştım. Umarım çok fazla şey unutmamışımdır.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

picusta

mp3dragon'un 9 martta koydugu kullanma kilavuzunu yeni okudum  :oops:
Adim adim uyguladim:
PC'de daha önce cygwin oldugu için o asamayi geçtim.
Sayfa 8'de
Alıntı Yapnotepad iyi bir seçim değildir
deniyor ama alternatif sunulmuyor. Ben notepad++ ile açtim.
#taginin satiri yok saydigini belirtmeli.
Eklenecek satir aslinda dosyada bulunuyor, yani o satirin basindaki #'i silerek de yapabiliriz.
Bir de bu islemin neden yapildigi 1 cümle ile anlatilsa. (gcc eski versyon, glibc yeni mi oluyor?) birde "--notest" te iki tire olmali
ANladigim kadari ile bu asamadan sonra Linux, gcc, glbc, linux header programlari cygwin\Kulllaniciadi\download  klasörüne indirilip, crosstool-0.43\build\arm-linux\gcc-3.4.5-glibc-2.3.6 klasörüne açiliyor ve en son cygwin\Kulllaniciadi\crosstool kalsörüne kuruluyor.
Sonra otomatik test ve düzeltme kisimi basliyor.
Bir döngünün içinde toolchain'in bütün özellikleri tek tek test ediliyor (gerekli temel fonksyonlar, özellikler ...). Hepsi OK olana kadar  tekrar tekrar compile ediliyor.
Bu islemden önce bos disk alanimizin 800MB'dan fazla olmasini tavsiye ediyorum.
crosstool kurulumu hala sürüyor.