Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Arduino Yun

Başlatan polleme, 19 Mart 2014, 23:07:43

CoşkuN

Aynı olmuyor aslında. Yun'da SPI haberleşme gibi işleri Atmega'da yapıp Linux tarafında da server vs.. işleri yapabilirsin.
Rasperry'deki SPI problemlerinden şurada bahsetmişler biraz: https://www.raspberrypi.org/forums/viewtopic.php?t=19489

mehmet

#16
http://radxa.com/Rock
Biraz pahalılar.

Ek: Bir monitör/tv içerisine yerleştirilip LVDS bağlantısı ile
medya-monitör yapmak mümkün... (Pro versiyonu ile)
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Gökhan BEKEN

Onu da düşündüm Coşkun hocam , bir tane stm32 bağlayım spi ve kesme işleri o yapsın dedim ama sorun yine dataları raspberry'e aktarmada.
FTP işleri sırasında data aktarmada yine sorun çıkacak.

İnceliyorum Mehmet hocam.
Özel mesaj okumuyorum, lütfen göndermeyin.


Gökhan BEKEN

Sorun ethernet ile ilgili değilmiş. Raspberry a+ ve b+ ikisinde denedim(aslında aynı sayılırlar)
işlemci gücü(700mhz) kullanan bir program çalıştığı an bu bahsettiğim sorunlar yine oluyor.
Demekki bana işlemci gücü daha yüksek bir kart lazım.
Raspberry pi 2 'yi deneyeceğim yarın, 900mhz 4 çekirdekli işlemcisi varmış. Akımı çok artmazsa ve performans sorunu yaşamazsam bu projeyi de böyle atlatmış olacağım.
Özel mesaj okumuyorum, lütfen göndermeyin.

muhendisbey

Gökhan mesele işlemci gücünde değil. 2GHz lik kartta kullansan benzer sorunla karşılaşabilirsin. Bunu şuna benzetebiliriz: elimizin altındaki bilgisayar yoğun iş yaptığında donuyor ve klavyeye basınca yazmıyor. sonrasında yazdıklarımız ekranda bir anda görünebiliyor. Kaldı ki bilgisayarda bu problemleri ekarte etmek için özel bir birim var: south bridge.

Senin yapman gereken bir işlemci ile i/o işlerini yaptırıp karta aktarmak. Karta da aktarırken doğrulama kodlu (örneğin CRC) yada handshake'li veri göndermen gerek. UART kullanılabilir bu noktada.

Bir de problemlerini daha hızlı bir SD kart kullanarak aşma ihtimalin de var. Bazen class 4 SD kartlar donma problemine neden olabiliyor.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

Gökhan BEKEN

Hocam kullandığım sd kart sandisk'in class 10 ultra speed kartı.
IO işlerinde dediğiniz gibi düşündüm ben de ama doğrulama yapılmadığında tekrar göndermeye kalkarsam veri kaçırırım.
RF den canlı ses geliyor ve bu sesi kaçırmamam gerekiyor. Kaçırdığımda tekrar göndermesini sağlarsam sonrasında gelmesi gereken verileri kaçırırım.
10ms'de bir 1kbyte veri geliyor, denedim, usart baut ratesi: 2,5 mbaud olduğunda bütün veriler gidebiliyor ancak. Daha aşağısında süre yetişmiyor. (okuma işini stm32 ile yapıp dma'lı usart kurup göndermekten bahsediyorum)

linux'da cpulimit diye bir program varmış onu kurup, ftp gibi diğer önceliksiz işlemlerin olduğu programların işlemci kullanım yüzdelerini %1'e kadar kıstım, arada fark oldu ama yine de veri kaçırıyorum.

south bridge yi bilmiyordum bi araştırayım.

Bu arada kernelin etkisi çok büyük.
Raspberry'nin orjinal raspbian(900 küsür mb) işletim sisteminde durum daha vahim, çalışan başka hiç bir ek uygulama açmasam bile, veri kaçırıyorum çok.
Ama özellikleri kırpılmış sadece zaruri ihtiyaçlar olan bir kernel(15-20mb bir şey) kurduğumda şu an ki kadar düzgün çalışıyor.
Özel mesaj okumuyorum, lütfen göndermeyin.

tekosis

Gökhan hocam konu ile çok ilgili değil kusura bakmayın ama merak ediyorum raspberry ile yaptığınız bu projelerin kopyalanma ihtimali nedir? normal mcu ile yapılan programlarda protect iş görüyor ama bilgisayar yazılımında durum nasıl olacak?
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

Gökhan BEKEN

Teknik olarak kopyalanmasına engel bir korumamız yok.
Ancak, cihazın olduğu alana yetkisiz kimse giremez.
Yine de SD kart söküp takılır cinsten olmayacak, kartın içine lehimli olacak ve kolay kolay ulaşılamayacak.
Özel mesaj okumuyorum, lütfen göndermeyin.

muhendisbey

Güvenilirlik için içerisindeki yazılımı cpu id'sine çakılı yapabilirsin. ID tutmazsa exitcode yada kill döndürürsün. Kırılmaz olmaz belki ama işi zora sokar.

Ben dediğin olayı senkron olması gereken bir işte yakaladım. Başta senkron giden iş, işlemci yüküyle bozuluyordu.

South bridge'in temel görevi şu:
Normalde işlemci 3GHz
klavyenin veya mouse'un 3GHz'de çalışması problem. Çalışırsa tekrarlı veri okuma bir o kadar fazla olur. Örneğin "A" tuşuna bastın, bunun işlemciye 1sn'de 100 kez gitmesi var 1 milyon kez gitmesi var.Bu durumda alt donanımları kontrol eden daha yavaş çalışan bir birim olsun. İşte bu noktada daha düşük hızdaki işlemlerin gerçekleşmesi için south bridge'e ihtiyaç duyulur. North bridge ile de yüksek hız gerektiren işlemler (CPU-RAM veri transveri, veya CPU-PCI... gibi) için merkez oluşturulmuştur. Hocamızın dediği buydu. SoC içinde bu yapı var mı emin değilim.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

Gökhan BEKEN

Raspberry pi 2 ile sorunlar biraz çözüldü.
Bir şey daha keşfettim wiringpi kütüphanesinde piHiPri diye bir fonksiyon var, bu fonksiyonu main fonksiyonun tepesinde sıfır değeri vererek çağırdığımda program daha az kesintiye uğruyor.
Benim programımın kullanımı raspberry pi A+'da %60 larda idi, raspberry pi 2'de %5 civarında işlemciyi kullanıyor.
Fakat az da olsa kesilmeler devam ediyor. Bu durumda işlemci kullanma oranının doğrudan etkilemediğini düşünmeye başladım.

Bir kaç sorum var:
Şu raspberry'nin ikinci seri portunu bir türlü çalıştıramadım çalıştırabilsem başka şeyler de deneyeceğim, sistem hiç görmüyor ikinci seriportu, kullanabilen var mı?

4 çekirdekli sistemi verimli kullanmak için yöntem ne olmalı? Thread oluşturuyorum ama performansta artış olmuyor. Tek program yerine birden fazla task olması için 2-3 programa mı bölmeliyim? Eğer bölersem aynı değişkenleri nasıl kullandıracağım? Ram'deki adreslerini otomatik bulup hepsine göndermem mi lazım?
Oluşturduğum thread'ler hangi çekirdekte çalışıyor, daha doğrusu hangi çekirdek ne kadar yoğun, hangi çekirdekte ne çalışıyor görebilir miyim?

Bu raspberry'i yapan adamlar hangi kafayla yapmış anlamıyorum, bunu kullanan adam hiç mi seriport spi kullanmayacak,
veri kaçırmayı geçtim, iki tane spi var biri komple sorunlu, iki tane seriport var birini hiç görmüyor.

Raspberry'nin tek beğendiğim yanı az akım çekmesi , wiringpi kütüphanesinin kolaylığı ve ucuz olması.
Özel mesaj okumuyorum, lütfen göndermeyin.

sovalye

Thread oluşturmanız diğer çekirdekleri kullanacağını garantiye almaz. Kesin bir şekilde bunu sağlayan bir yol var mı emin değilim. İşlemcinin kullanımı işletim sisteminin sorumluluğunda. Şu an baktım windows ta +1000 civarı thread çalışıyor. Tabi ki sizin program linux'ta çalışırken sayı çok daha düşük olacaktır ama yine de işletim sistemi olunca bol miktarda yabancı thread olacak. Programınızın kullandığı protokoller falanda çalışacak.
2-3 programa bölmek işe yarayabilir ama bu seferde iletişime geçmeleri için beklemeniz gerekebilir. Denemeniz lazım.
Sizin oluşturacağınız thread den ziyade daha profesyonel sistemlere bakabilirsiniz. Mpi yada OpenMP ' ye bakabilirsiniz. Multi processor işlemlerde çok daha iyi iş çıkardıklarından bahsediliyor.

Ram 'deki adresler aslında gerçek ram'deki adresler değildir. İşletim sistemi her programa sanal bir ram alanı verir. İşletim sistemi dışında kimse nereye ne yazdırdığını bilemez. Programlar kayıt yaparken aslında nereye ne yaptıklarını bilmezler, bu işi işletim sisteminden beklerler. İki programın haberleşmesini istiyorsanız "mmap" kullanabilirsiniz . ( RAM adreslerine erişmeniz legal olmayan yollardan mümkün en azından windows'ta ( linux'ta nasıl olur bilmiyorum.) ama açıklar kullanıp, sistemle uğraşmanız lazım. )

top veya htop kullanabilirsiniz ram ve cpu kullanımına bakmak için (pi2 im yok. multi process gösteriyor mu bilmiyorum) ama hangi çekirdekte ne çalıştığını görebilecek bir yapının olduğu sanmıyorum. Yine tamamen işletim sistemin anlık kararı.

Gökhan BEKEN

Arkadaşlar sorun USB'de. USB'den yapılan her hareket diğer kısımların aksamasına neden oluyor, flash bellek taktığımızda da bahsettiğim donmalar aynen oluyor.
Raspberry'de ethernet, usb üzerinden bağlı olduğu için otomatikman ethernette'de donmalar oluyor.
USB'yi high speed'den full speed'e geçirdik donmalar ethernet bayağı yavaşladı, dosya transfer hızı çok düştü. Bu donmaları azalttı, ancak en ufak bir usb hareketi bile az da olsa donmaya sebep oluyor.
Benim ilacım şu olmalı, etherneti usb'den kurtarmak. Bu yüzden spi'dan enc28j60 bağladım ama linux ayarlarından ethernet için enc28j60 seçtim, spi clock'unda en ufak bir hareket olmuyor, yani enc28j60'ı bir türlü kullanamadım.
Ayrıca şöyle bir sorun olacak, eğer spi'ı ethernet için kullanırsam, benim diğer işlerimi spi'dan halledemeyeceğim çünkü 1 tane spi kullanabiliyoruz, 2.spi kanalı çalışmıyor(daha önce bahsetmiştim).

Dileğim o'dur ki hayat kimseyi raspberry'nin ve linux'un eline düşürmesin.
Hele ki son projesini yapıp, işten çıkıp, hayatına başka bir şekilde yön vermek isteyen birisine...
Özel mesaj okumuyorum, lütfen göndermeyin.

engerex

#28
Pc de thread oluştururken hangi çekirdekte çalışacağını seçebiliyorsun. Mutlaka bu vardır. Tabi kullanılan kütüphaneye göre değişebilir.
Senkron ve asenkron thread ile ortak değişken kullanım durumu farklılık gösterir.

Uygulama işletim sisteminde çalıştığı için şöyle bir durum var. Ön plan arka plan ne kadar çalışan uygulama varsa işlemci sırasıyla belli süre uygulamaları teker teker çalıştırıyor. Portlarında sürücüleri olduğuna göre onlarda bu döngüye dahil. Uygulamaların işlemci önceliklerinle oynayarak bu duruma müdahale edebilirsin. Yada daha detaya inip real time gerekli.
Tabi bir şeylerde terslikte olabilir. Daha düşük donanımla video kayıt mümkünse yöntem değiştirmen gerekli.

Gökhan BEKEN

Sorunun ilk kısmını çözdük. Çözmenin tek yolu kernel modülü yazmak. Kernel modülünün insmod yapıp cat komutu ile çalıştırınca verilerde kayma, gecikme veya bozulma olmadan alıyorum. Sırada user space kısmı yani aldığım verileri işleme ve kaydetme kısmı kaldı. Kernelde doldurduğum buffere erişebilirsem ve user kısmında bozulma olmazsa proje bitecek.
Özel mesaj okumuyorum, lütfen göndermeyin.