Gömülü sistem soruları - 1

Başlatan armsistem, 18 Eylül 2013, 19:08:11

armsistem

Arkadaşlar merhaba ; aşağıdaki yazıyı gördüm sevindirik oldum

<CR><LF>
.---O---.                                           <CR><LF>
|       |                  .-.           o o        <CR><LF>
|   |   |-----.-----.-----.| |   .----..-----.-----.<CR><LF>
|       |     | __  |  ---'| '--.|  .-'|     |     |<CR><LF>
|   |   |  |  |     |---  ||  --'|  |  |  '  | | | |<CR><LF>
'---'---'--'--'--.  |-----''----''--'  '-----'-'-'-'<CR><LF>
                -'  |<CR><LF>
                '---'<CR><LF>



ls -a yazdım aşağıdaki liste geldi.

.                          .dmrc                  .nautilus<CR><LF>
..                         .gconf                 .ssh<CR><LF>
.AbiSuite             .gnome2             .themes<CR><LF>
.ICEauthority      .gvfs                   .thumbnails<CR><LF>
.bash_history     .htoprc                .xsession-errors<CR><LF>
.config                .icons                   .xsession-errors.old<CR><LF>
.dbus                 .local                    Desktop<CR><LF>
root@beagleboard:~#


sanıyorum yavaş yavaş ilerleme kaydediyorum.... peki bu cihaza bir 7" display takmak istiyorum veya eeprom dan veri yazmak-okumak istiyorum.
Bu iş için libraryler mi devreye giriyor ? Veya out için ne yapmak gerekiyor ?

polleme

Kartınız Beagleboard olduğuna gore bunun GPIO portlarını bulup onlara LCD ekranı bağlamanız gerekecek. Eğer hiç GPIO uygulaması yapmadıysanız o dünyanın "HelloWorld" ü olan LED yakıp söndürme, butona basınca LED yakma gibi uygulamalardan başlamanızı tavsiye ederim. LCD ve EEPROM nispeten karmaşık uygulamalar.


z

Linux, Android gibi işletim sistemi barındıran kartlarda GPIO vs donanımlara doğrudan user programlar erişebiliyormu? Yoksa işletim sistemi üzerindeki hazır fonksiyonlarımı kullanmak gerekiyor?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

polleme

Linux'ta herşey (printer, USB, seri, GPIO vs) bir dosya ile temsil edilir. Siz eğer o donanım birimini temsil eden dosyaya bir veri yazarsanız o porta erişmiş ve veri göndermiş olursunuz. Linux'ta örneğin bir metin dosyası açıp karakter yazmak ile seri portu açıp karakter yazmak aynı şekilde yapılıyor. Bu sebeple Linux shell üzerinden komutlarla GPIO portlarına erişmek mümkün. Eğer bir programlama dili üzerinden erişmek isterseniz o dilin kütüphanelerini kullanabileceğiniz gibi programlama dili içinde Linux shell komutlarını da işlemeniz mümkün.


armsistem

Alıntı yapılan: polleme - 18 Eylül 2013, 19:29:18
Linux'ta herşey (printer, USB, seri, GPIO vs) bir dosya ile temsil edilir. Siz eğer o donanım birimini temsil eden dosyaya bir veri yazarsanız o porta erişmiş ve veri göndermiş olursunuz. Linux'ta örneğin bir metin dosyası açıp karakter yazmak ile seri portu açıp karakter yazmak aynı şekilde yapılıyor. Bu sebeple Linux shell üzerinden komutlarla GPIO portlarına erişmek mümkün. Eğer bir programlama dili üzerinden erişmek isterseniz o dilin kütüphanelerini kullanabileceğiniz gibi programlama dili içinde Linux shell komutlarını da işlemeniz mümkün.

Hocam çok açıklayıcı olmuş ,
-  QT tarzı ide programı ile bu iş daha kolay yapılabilir mi ? Yoksa alakası yok mu ?
-  Donanımsal ekletilerimi (lcd+eeprom) bunu başlangıçta mı dosya mantığında oluşturmam gerekiyor ?
-  İlk olarak kernel derlemeyi denedim neden denedim ben bile bilmiyorum ? Bu neden gerekli ?
-  Kelime olarak U-boot-Kernel vs. hepsinin tanımları var pratik olarak neden bunlara direk erişip yeniden derlemek isteyeyim ki ?
- Bence bu işte önemli olan mantığın oturmasıdır ?

yamak

Alıntı yapılan: z - 18 Eylül 2013, 19:24:29
Linux, Android gibi işletim sistemi barındıran kartlarda GPIO vs donanımlara doğrudan user programlar erişebiliyormu? Yoksa işletim sistemi üzerindeki hazır fonksiyonlarımı kullanmak gerekiyor?
Hocam işletim sisteminde eğer gerekli donanımın driver ı mevcutsa durum @polleme'nin dediği gibi oluyor.Eğer driver yoksa mmap fonksiyonu aracığılıyla fiziksel belleğe erişip register lar üzerinden erişebiliriz

z

Peki interrupt rutini yazılabiliyormu? Demek istediğim mesela seri portu kullanacak yazılım yapacağız ve interruptlara biz kendimiz cevap vereceğiz. Linux vs üzerinde bu işler nasıl oluyor?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

polleme

Alıntı yapılan: armsistem - 18 Eylül 2013, 19:59:59
Hocam çok açıklayıcı olmuş ,
-  QT tarzı ide programı ile bu iş daha kolay yapılabilir mi ? Yoksa alakası yok mu ?
-  Donanımsal ekletilerimi (lcd+eeprom) bunu başlangıçta mı dosya mantığında oluşturmam gerekiyor ?
-  İlk olarak kernel derlemeyi denedim neden denedim ben bile bilmiyorum ? Bu neden gerekli ?
-  Kelime olarak U-boot-Kernel vs. hepsinin tanımları var pratik olarak neden bunlara direk erişip yeniden derlemek isteyeyim ki ?
- Bence bu işte önemli olan mantığın oturmasıdır ?

- Qt ile erişimi görsel olarak gerçekleştirebilirsiniz. Erişimin sağlanması daha kolay demek zor, ama görsel bir arayüz üzerinden işlem yapmak daha rahat olur. Qt ile bir dil kullanmak ve programlama yapmak zorundasınız.
- Eklentilerin sürücüleri yüklü ise o eklentiye ait bir dosya zaten var demektir. Yoksa sürücü oluşturmanız veya direkt register erişimi yapmanız gerekir ama sürücü bulmayı veya oluşturmayı öneririm.
- Kernel derleme karmaşık ve tecrübe gerektiren bir iştir. Kernel içine birşeyler eklemek, değiştirmek veya çıkarmak için yeniden derleme gerekebilir ama bence elzem değil. İleride tecrübe kazanınca yapmanız daha doğru.

Öncelikle Linux altyapısına hakimiyet sağlayıp sonar işletim sistemi derinliklerine girmek doğru yol olur.

Icarus

Alıntı yapılan: polleme - 18 Eylül 2013, 19:29:18
Linux'ta herşey (printer, USB, seri, GPIO vs) bir dosya ile temsil edilir. Siz eğer o donanım birimini temsil eden dosyaya bir veri yazarsanız o porta erişmiş ve veri göndermiş olursunuz. Linux'ta örneğin bir metin dosyası açıp karakter yazmak ile seri portu açıp karakter yazmak aynı şekilde yapılıyor. Bu sebeple Linux shell üzerinden komutlarla GPIO portlarına erişmek mümkün. Eğer bir programlama dili üzerinden erişmek isterseniz o dilin kütüphanelerini kullanabileceğiniz gibi programlama dili içinde Linux shell komutlarını da işlemeniz mümkün.
Eriştiğiniz dosya gerçek port (GPIO) değil. Ör: Siz /dev/tty'e birşeyler yazdığınızda sadece serial port sürücüsüne "acaba bunları benim için gönderebilirmisin ?" diyorsunuz. Sürücü gönderir veya göndermez.

polleme

Alıntı yapılan: Icarus - 18 Eylül 2013, 20:40:44
Eriştiğiniz dosya gerçek port (GPIO) değil. Ör: Siz /dev/tty'e birşeyler yazdığınızda sadece serial port sürücüsüne "acaba bunları benim için gönderebilirmisin ?" diyorsunuz. Sürücü gönderir veya göndermez.

Muhakkak dosya gerçek port değil. Sadece onu temsil etmektedir. Dediğiniz gibi bilgiyi göndermesini söylersiniz ama gidip gitmediğinin kontrolü gerekirse yapılmalı.

X-Fi

Yeri gelmişken bişey sormak istiyorum;

*.ko (kernel output) uzantılı dosyaların üzerinde nasıl değişiklik yapabiliriz?
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

X-Fi

Alıntı yapılan: gerbay - 18 Eylül 2013, 23:48:59
hocam .ko lar "kernel object", yukarda behsettiğim "kernel module" ler .ko uzantılı olanlar.  genelde 3. parti sürücüler kernel module olarak yüklenir. değiştirmek için kodları değiştirip kernel object olarak yeniden derlemeniz gerekir.

Hocam diyelim ki açık kaynak kodlu bu linkdeki gibi; https://github.com/notro/fbtft/wiki bir proje var, üzerinde değişiklik yapıp tekrar nasıl derleyebilirim. Bunu linux komutlarıyla mı derliyorum farklı bir gelistirme ortamı mı var? Bu konuları öğrenebileceğim bir kaynak gösterebilirseniz sevinirim.

http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

Icarus


Tagli

#13
Alıntı yapılan: Icarus - 19 Eylül 2013, 10:52:11
Emacs
Bu hangi sorunun cevabı?

Alıntı yapılan: X-Fi - 19 Eylül 2013, 10:28:19
Hocam diyelim ki açık kaynak kodlu bu linkdeki gibi; https://github.com/notro/fbtft/wiki bir proje var, üzerinde değişiklik yapıp tekrar nasıl derleyebilirim. Bunu linux komutlarıyla mı derliyorum farklı bir gelistirme ortamı mı var? Bu konuları öğrenebileceğim bir kaynak gösterebilirseniz sevinirim.
Genelde bu tür kodların yanında gelen README dosyasını okumakta fayda var. Anladığım kadarıyla bu kod kernel kodunun içine ekleniyor. README dosyasında anlatmış. Daha sonra ilgili Kconfig ve Makefile dosyaları değiştirilerek sürücünün kernel konfigürasyonu sırasında bir seçenek olarak çıkması sağlanıyor. Bu seçenek "make menuconfig" aşaması sırasında seçildiği zaman kernel derlemesine bu sürücü de katılmış oluyor.

Yani sürücüyü kernel modülü olarak yazmayıp doğrudan içine yerleştirmişler. Bu yüzden kernel'in tekrar derlenmesi gerekiyor. Bunu RPi üzerinde yapmak uzun sürebilir, normal bir bilgisayar üzerinde karşı derleme yapmak daha iyi bir fikir.
Gökçe Tağlıoğlu

Icarus

Alıntı yapılan: Tagli - 19 Eylül 2013, 11:13:46
Bu hangi sorunun cevabı?
Linux için IDE.
Otomatik kod tamamlamadan tutun, otomatik fonksiyon tanımlarını, help'lerini bulmaya kadar herşey var. Aynı zamanda projenizide yönetebiliyorsunuz.
Kısaca bir IDE'nin yapabilceği herşey ve daha fazlası.