Android ve ARM hakkında

Başlatan yamak, 22 Kasım 2011, 13:36:17

yamak

Arkadaşlar kafamı karıştıran bi konu var.
Mesela HTC nin bir telefonun da TI ın ARM çekirdekli bi mikrodenetleyicisi var Samsung un da bi telefonun samsung un ARM çekirdekli bir mikrodenetleyicisi var.Şimdi bu iki telefona da android yüklü fakat her iki mikrodenetleyicinin de komut seti farklı nasıl oluyo da android her ikisinde sorunsuz çalışıyo. Ya da her iki mikrodenetleyicinin de komut seti aynı mı?

z

İkisi de aynı seriden ARM işlemci ise komut setleri aynıdır.

Fakat bunun önemi yok.

C de yazdığınız programı herhangi bir işlemci için derleyebilirsiniz. Yeterki doğrudan donanıma hükmeden kod satırları kullanmayın.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

yamak

C de yazdığınız programı herhangi bir işlemci için derleyebilirsiniz. Yeterki doğrudan donanıma hükmeden kod satırları kullanmayın.

Evet hocam haklısınız. Ama her firma kendine özgü çevre birimleri ekliyo mikrodenetleyicilerine ve bu çevre birimlerine ait register isimleri farklı oluyo. Bu bir sorun teşkil etmez mi? Ya da bir işletim sisteminin kernel i yazılırken ya da bir driver yazılırken bu register isimleri kullanılmıyo mu?

z

Programı katman katman yazarsın.  En üst katman senin yazdığın program olur. Ara katman, en alt donanım katmanını çağırır ve yüksek seviyeli fonksiyonları içerir.

Mesela HDD erişimi için en alt katman, HDD donanımına ait registerler üzerinden oku, yaz, formatla gibi çok düşük seviyeli fonksiyonları içerir.

Ara katman yazılımında örneğin verilen sektörden okuma yada yazma yapan fonksiyonlar olur. Bu fonskiyonlar donanıma doğrudan değil de en alt katman fonksiyonlarını çağırarak yazılır.  Ara katman Fat32 gibi çok daha yüksek seviyeli HDD rutinlerini içerir.

En üst katmanda senin uygulama programın olur.

İşlemci değiştirdiğinde sadece en alttaki donanıma erişen katmanı değiştirmen yeterli olur.

Ana mantık böyle.

Eğer donanıma erişen kodları da asıl uygulama kodların arasına serpiştirirsen bu durumda işlemci değiştimi herşeyi sil baştan değiştirmen gerekir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

MC_Skywalker

Piyasadaki tüm telefonlar ve tabletler ARM Cortex A9 çekirdeğini içeren CPU kullanır. Fakat Çin çakmaları ARM11 kullanmaktalar. (Bu arada neden hala  Cortex A15 çekirdeğini kullanmadıklarını anlayamadım.)

HTC nin diğer telefonlardan farklı olmasının sebebi "Sense" adını verdikleri bir özelliği Android kernel'i içine entegre etmeleri.  Diğer markalarında benzer ekstra eklentileri oluyor. HTC Qualcomm firmasının ARM Cortex A9 core CPU sunu kullanmakta.

Nasıl NXP, Ti ile  ST MCU larının donanım farkı var ise telefon üreticilerinin kullandığı CPU larda da değişklikler oluyor fakat Core aynı.

Örnek verecek olursak;
Nvidia'nın Tegra ailesi CPU içinde özel olarak Ge Force GPU bulunmakta. Diğer firmalar ya ARM firmasının Mali GPU çekrideğini ekleyerek kullanmakta yada başka başka ek özellikler. Özel donanıma erişen kodlar olunca taşınırılık ve ortadan kalkmakta.


mufitsozen

ARM CORTEX M serisi ureticilerin ortak yazilim arabirim standardi olan CMSIS'e uygun yazilan yazilimlar herhangi bir ureticinin herhangi bir ARM COrtex M tipi islemcisinden (baska bir ureticinin) baska bir islemcisine gecerken bir abstraction layer saglarlar. Boylece kullandiginiz compiler ve/veya ARM Cortex ureticisi ve/veya mcudan bagimsiz yazilim gelistirmeniz mumkun olabilir. Hatta bunun DSPyide iceren kisimlari vardir.

Daha fazla bilgi icin  http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php

Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Erol YILMAZ


MC_Skywalker

http://www.arm.com/products/processors/cortex-a/index.php

Telefon ve tabletlerde vb. kullanılan Cortex-A serisinde CMSIS yok diye biliyorum. acaba yanılıyormuyum.

Alıntı Yap
ARM and Thumb ISA for ensuring binary compatibility
Thumb-2 for optimal blend of code density and performance
NEON™ / DSP extensions for advanced DSP and media performance
VFP for high-performance single and double-precision floating point
Jazelle®-DBX and RCT support

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/kiAiGCDqBW8y3K.html

CoşkuN

#8
Android Dalvik adı verilen bir Java sanal makinası üzerinden çalışıyor. Dolayısıyla bu sanal makinanın port edildiği bütün işlemciler üzerinde de çalışabiliyor...
http://en.wikipedia.org/wiki/Dalvik_(software)

http://en.wikipedia.org/wiki/Java_Virtual_Machine

SpeedyX

2009 da beagleboard a android yükleyip videosunu çekmiştim.

http://www.youtube.com/watch?v=Hy846QDOpIY

İşlemciye göre derleyip çalıştırıyorsunuz, anahtar cümle bu.

yamak

#10
Alıntı yapılan: SpeedyX - 22 Kasım 2011, 16:56:45
2009 da beagleboard a android yükleyip videosunu çekmiştim.

http://www.youtube.com/watch?v=Hy846QDOpIY

İşlemciye göre derleyip çalıştırıyorsunuz, anahtar cümle bu.
Böyle olduğunu bilmiyodum. Peki ARM 64 bitlik işlemci çıkaracak deniliyo. Yine bu işlemciyi firmalara pazarlayıp o firmalar bu işlemcilerle mcu mu yapacak yoksa direkt kendi başına intel amd gibi bilgisayar piyasasına mı girecek?

Sdttn

Alıntı yapılan: CoşkuN - 22 Kasım 2011, 16:27:35
Android Dalvik adı verilen bir Java sanal makinası üzerinden çalışıyor. Dolayısıyla bu sanal makinanın port edildiği bütün işlemciler üzerinde de çalışabiliyor...
http://en.wikipedia.org/wiki/Dalvik_(software)

http://en.wikipedia.org/wiki/Java_Virtual_Machine

Port edilmek ne demek?
Sanal makinenin işlemciye göre yazılıp (düzenlenip) derlenmesi gibi bir şey mi? Android os üzerinde hiç bir düzenlemeye gerek yok mu?