Akıllı telefonlar, her biri performans için optimize edilmiş bir dizi işlemciye sahiptir. üzerine konuşacağız. Ancak Android yalnızca tek bir işlemci üzerinde çalışır: Uygulamalar için geçerlidir. AP, ekranda mükemmel performans gösterecek şekilde ayarlanmıştır kullanım alanlarına sahip ancak bunu destekleyecek kadar çok sürekli ve kısa süreli seri işlemler gerektirir. kapalı olduğundan emin olun. Daha küçük işlemciler, bu iş yüklerini daha verimli şekilde işleyebilir. görevlerini tamamlarken pil ömrünü önemli ölçüde etkilemez. Ancak düşük güçlü işlemcilerdeki yazılım ortamları daha sınırlıdır ve büyük farklılıklar gösteriyor ve platformlar arası geliştirmeyi zorlaştırıyor.
Context Hub Çalışma Zamanı Ortamı (CHRE), ortak çalışma için ortak bir platform sağlar düşük güçlü bir işlemciye sahip, basit, standartlaştırılmış, kullanıcı dostu bir API'dir. CHRE, cihaz OEM'leri ve güvenilir oldukları için kolaylık sağlar iş ortaklarının AP'den işlem yüklemesi, pilden tasarruf etmek ve çeşitli alanına odaklanıyor ve her zaman açık, net bağlam bilgisi sunan özellikler, özellikle de yöntemlerin bu özellikleri ortam algılama teknolojisinden yararlanıyor.
Temel kavramlar
CHRE, küçük yerel uygulamaların
nanoapps kullanan bir uygulamanız varsa, düşük güçlü bir işlemci
sistemi nasıl çalıştırabileceğinizi göstereceğim. Dönüşüm Optimize Edici'nin doğru bir şekilde uygulanmasını
CHRE API'leri için platformlar arası referans uygulaması CHRE'nin
AOSP Referans uygulaması, RACI matrisine ilişkin ortak kod ve soyutlamaları
bir dizi platform soyutlama katmanı aracılığıyla temel donanım ve yazılımı
(PAL) olarak ayarlayın. Nanoapps hemen hemen her zaman bir veya daha fazla istemci uygulamasına bağlıdır
Kısıtlı erişim üzerinden CHRE ve nanoapps ile etkileşimde bulunan Android
ContextHubManager
sistem API'lerini devreye sokmaktır.
Özetle, CHRE ve Google Haritalar mimarisi arasında benzerlikler çizilebilir. bir bütün olarak Android. Ancak, birkaç önemli fark vardır:
- CHRE yalnızca yerel kodda (C veya C++); Java desteklenmemektedir.
- Kaynak kısıtlamaları ve güvenlik sınırlamaları nedeniyle CHRE açık değil tarafından kullanılmak üzere tasarlanmıştır. Yalnızca sistem tarafından güvenilen uygulamalar erişebilir.
Bir başka deyişle, CHRE kavramı ile araştırma yapmak arasında önemli bir ayrım var. ve sensör hub'ı. Bilgisayarda aynı donanımın kullanılması yaygın olsa da sensör merkezi ve CHRE, CHRE'nin kendisi sensör özelliklerini sağlamıyor. Android Sensörleri tarafından gereklidir HAL değerleridir. CHRE şuna bağlı: Bağlam Merkezi HAL'sini kullanır ve cihaza özel bir sensörün AP'yi dahil etmeden sensör verilerini almak için bir çerçeve işlevi görür.
Şekil 1. CHRE çerçeve mimarisi
Bağlam Merkezi HAL'si
Bağlam Merkezi donanım soyutlama katmanı (HAL),
Android çerçevesi ve cihazın CHRE uygulaması,
hardware/interfaces/contexthub
.
Bağlam Merkezi HAL, Android çerçevesinin
mevcut bağlam merkezlerini ve bunların nanouygulamalarını keşfeder,
nanoapps, mesaj
geçirerek nanoapps'in yüklenmesini sağlar ve
yüklenmedi.
referans uygulamasını şu adreste bulabilirsiniz:
system/chre/host
.
Bu belge ile HAL tanımı arasında uyuşmazlık olması durumunda HAL tanımı önceliklidir.
Başlatma
Android başlatıldığında
ContextHubHizmeti
herhangi bir bağlam hub'ının olup olmadığını belirlemek için getHubs()
HAL işlevini çağırır.
cihazda kullanılabilir. Bu, engelleyen, tek seferlik bir arama olduğundan tamamlanması gerekir
gecikmesini önlemek için hızlı bir şekilde çalışır ve yeni olduğu gibi, doğru bir sonuç
daha sonra sunulamaz.
Nanouygulamaları yükleme ve kaldırma
Bağlam merkezi, cihaza dahil olan bir dizi nanouygulama içerebilir.
resmi başlar ve CHRE başladığında yüklenir. Bunlar, önceden yüklenmiş nanouygulamalar olarak bilinir.
queryApps()
ile ilgili olası ilk yanıta dahil edilmelidir.
Context Hub HAL, nano uygulamaların dinamik olarak yüklenmesini ve boşaltılmasını da destekler
loadNanoApp()
ve unloadNanoApp()
işlevleri aracılığıyla çalışma zamanını sağlar. Nanouygulamalar
HAL'ye, CHRE donanımına özel bir ikili biçimde ve
cihazın yazılım uygulaması.
Nano uygulama yükleme işlemi, nano uygulamanın kalıcı olmayan bir uygulamaya yazılmasını içeriyorsa
Örneğin CHRE çalıştıran işlemciye bağlı flash depolama alanı ve ardından
CHRE uygulaması her zaman bu dinamik nano uygulamalarla
devre dışı bırakıldı. Bu, nanoapp kodunun hiçbirinin bir
enableNanoapp()
isteği, HAL üzerinden alındı. Önceden yüklenmiş nanoapps
ilk kullanıma hazırlar.
Bağlam merkezi yeniden başlatılıyor
CHRE'nin normal çalışma esnasında yeniden başlatılması beklenmese de
beklenmedik durumlarla başa çıkmak için de gerekli olabilir.
eşlenmemiş bir bellek adresine erişme. Bu durumlarda CHRE yeniden başlatılır
Android'den bağımsız olarak da çalışır. HAL, Android'i bu konuyla ilgili olarak
RESTARTED
etkinliği (yalnızca CHRE yeniden başlatıldıktan sonra)
yeni istekleri kabul edebileceğine işaret eder (ör. queryApps()
).
CHRE sistemine genel bakış
CHRE, etkinlik odaklı bir mimari etrafında tasarlanmıştır. Bu mimaride temel birim
computation, nanoapp'ın etkinlik işleme giriş noktasına iletilen bir olaydır. Bu sırada
CHRE çerçevesi çok iş parçacıklı olabilir ve belirli bir nano uygulama hiçbir zaman
iş parçacığınız olsun. CHRE çerçevesi belirli bir nanoapp ile etkileşime girer
üç nano uygulama giriş noktasından birini (nanoappStart()
,
nanoappHandleEvent()
ve nanoappEnd()
) veya
önceki CHRE API çağrısı ve nanoapps, CHRE çerçevesiyle ve
sistemi oluşturmayı öğreneceksiniz. CHRE API, bir grup temel
içerik sinyallerine erişim olanaklarının yanı sıra
sensörler, GNSS, Wi-Fi, WWAN ve ses
kullanım için satıcıya özgü özellikler sunar.
Bina sistemi
Bağlam Merkezi HAL'si ve diğer gerekli AP tarafı bileşenleri oluşturulurken Android'in yanı sıra, CHRE'de çalışan kodların da Android derleme sistemiyle uyumlu değildir; örneğin, özel bir kullanabilirsiniz. Bu nedenle, AOSP'deki CHRE projesi, nanoapps derlemek için GNU Make tabanlı sistem ve isteğe bağlı olarak CHRE kitaplığını sistemle entegre edebilen kitaplıklara dönüştürmenize yardımcı olur. Cihaz CHRE için destek ekleyen üreticiler, ilgili web sitesi için derleme sistemi AOSP'ye aktarmasını istiyor.
CHRE API, C99 dil standardına göre yazılmıştır ve referans uygulamada kaynak sınırlı için uygun, C++11'in kısıtlanmış bir alt kümesi kullanılıyor
CHRE API'sı
CHRE API, yazılımı tanımlayan C başlığı dosyalarından oluşan bir koleksiyondur bir nano uygulama ile sistem arasındaki bir arayüze dönüşüyor. Nano uygulamalar geliştirmek için tasarlandı CHRE'yi destekleyen tüm cihazlarla uyumludur; bu da nano uygulamanın kaynak kodunun yeni bir cihazı destekleyecek şekilde değiştirilmesine gerek yoktur ancak hedef cihazın cihaz kodu açısından özel olarak yeniden derlenmesi gerekebilir. işlemci talimatı kümesi veya uygulama ikili arayüzü (ABI) olabilir. CHRE mimarisi ve API tasarımı, nanouygulamaların ikili programlarla uyumlu olmasını da sağlar. Bu nanouygulama, CHRE API'nin farklı sürümlerinde farklı bir sürümünü uygulayan bir sistemde çalıştırmak için yeniden derlenmesi gerekir: nano uygulamanın derlendiği hedef API ile karşılaştırıldığında CHRE API. Başka bir deyişle, bir nano uygulama ikili programı CHRE API'yi destekleyen bir cihazda çalışıyorsa ve bu cihaz, aynı nanoapp CHRE API v1.4'ü destekleyecek şekilde yeni sürüme geçirildi. ikili çalışmaya devam eder. Benzer şekilde, nanouygulama CHRE API v1.2'de çalışabilir. ve çalışma zamanında API v1.3'ten düzgün çalışıp çalışmayacağını ve etik bir şekilde yardımcı olabilir.
Android ile birlikte CHRE API'sinin yeni sürümleri de (CHRE olarak) yayınlanmıştır. proje yönetiminin uygulanması, bir cihazda desteklenen CHRE API sürümü mutlaka bir Android sürümü.
Sürüm özeti
Beğen
Android HIDL sürüm şeması,
CHRE API'si anlamsal sürüm oluşturma işlemini uygular.
Ana sürüm ikili program uyumluluğunu gösterirken alt sürüm
geriye dönük uyumlu özellikler kullanıma sunulduğunda artar. CHRE API
hangi sürümde bir işlev sunanı tanımlamak için kaynak kodu ek açıklamaları içerir
veya parametre, örneğin @since v1.1
.
CHRE uygulaması ayrıca
chreGetVersion()
, şurada hata düzeltmelerinin veya küçük güncellemelerin yapıldığını gösterir:
adım adım anlatılmıştır.
Sürüm 1.0 (Android 7)
Sensör desteğinin yanı sıra etkinlikler ve uygulamalar gibi temel nano uygulama özelliklerini içerir. zamanlayıcılar.
Sürüm 1.1 (Android 8)
GNSS konum ve ham ölçümler aracılığıyla konum özellikleri sunuyor. Genel hassaslaştırmalarla birlikte kablosuz ağ taraması ve mobil ağ bilgileri .
Sürüm 1.2 (Android 9)
Düşük güçlü bir mikrofon, kablosuz RTT aralığı, AP'den gelen veriler için destek ekler. uyanık kalma ve uyku bildirimleri gibi özellikler içerir.
Sürüm 1.3 (Android 10)
Sensör kalibrasyonu verileriyle ilgili özellikleri geliştirir, Toplu sensör verilerinin isteğe bağlı olarak temizlenmesi, adım algılama sensörü türünü tanımlar ve GNSS konum etkinliklerini ek doğruluk alanlarıyla genişletir.
Sürüm 1.4 (Android 11)
5G hücre bilgileri, nanouygulama hata ayıklama dökümü ve diğer özellikler için destek ekler. tek yolu değildir.
Zorunlu sistem özellikleri
Sensörler gibi bağlamsal sinyal kaynakları, isteğe bağlı olarak sınıflandırılır. tüm CHRE’de birkaç temel fonksiyona ihtiyaç duyuluyor hakkında bilgi edindiniz. Buna, uygulama işlemcisindeki istemcilere ileti gönderme ve alma, ve diğerleri. Tüm ayrıntılar için bkz. API üstbilgileri.
CHRE API'de kodlanmış temel sistem özelliklerinin yanı sıra, Bağlam Merkezi HAL düzeyinde belirtilen zorunlu CHRE sistem düzeyindeki özellikler. İlgili içeriği oluşturmak için kullanılan en önemlisi, dinamik olarak yükleme ve boşaltma nanoapps.
C/C++ standart kitaplığı
Bellek kullanımını ve sistem karmaşıklığını en aza indirmek için CHRE uygulamaları standart C ve C++ kitaplıklarının yalnızca bir alt kümesini desteklemek için gereklidir ve çalışma zamanı desteği gerektiren dil özellikleri. Bu ilkelere uygun olarak, özellikleri, bellekleri ve kapsamlı işletim sistemi düzeyi nedeniyle açıkça hariç tutuluyor ve diğerleri, bunların yerini alan daha uygun CHRE'ye özel API'ler. Her ne kadar kapsamlı bir liste olmasa da aşağıda özellikleri nanouygulamalara sunulmak üzere tasarlanmamıştır:
- C++ istisnaları ve çalışma zamanı türü bilgileri (RTTI)
- C++11 üstbilgileri dahil olmak üzere standart kitaplık çoklu iş parçacığı desteği
<thread>
,<mutex>
,<atomic>
,<future>
- C ve C++ Standart Giriş/Çıkış kitaplıkları
- C++ Standart Şablon Kitaplığı (STL)
- C++ Standart Normal İfadeler kitaplığı
- Standart işlevler (örneğin,
malloc
,calloc
,realloc
,free
,operator new
) ve diğer standartlar yapısı gereği dinamik ayırma kullanan kitaplık işlevleristd::unique_ptr
- Yerelleştirme ve Unicode karakter desteği
- Tarih ve saat kitaplıkları
<setjmp.h>
dahil olmak üzere normal program akışını değiştiren işlevler<signal.h>
abort
std::terminate
system
,getenv
dahil ana makine ortamına erişme- POSIX ve C99 veya C++11 dilinde olmayan diğer kütüphaneler standartlar
CHRE API işlevlerinden çoğu durumda eşdeğer özellikler sağlanabilir.
yardımcı olan program kitaplığıdır. Örneğin, hata ayıklama günlük kaydı için chreLog
kullanılabilir.
daha geleneksel bir programın çalışabileceği Android logcat sistemini
printf
veya std::cout
kullanın.
Buna karşın, bazı standart kitaplık özellikleri gereklidir. Size bunları dahil etmek üzere statik kitaplıklar aracılığıyla ortaya çıkarmak için platform uygulaması nanoapp ikili programda veya nanoapp ile sistem arasında dinamik bağlantı oluşturarak. Bu aşağıdakileri içerir ancak bunlarla sınırlı değildir:
- Dize ve dizi yardımcı programları:
memcmp
,memcpy
,memmove
,memset
,strlen
Matematik kitaplığı: Genellikle kullanılan tek duyarlıklı kayan nokta işlevleri:
- Temel işlemler:
ceilf
,fabsf
,floorf
,fmaxf
,fminf
,fmodf
,roundf
,lroundf
,remainderf
- Üstel işlevler ve güç işlevleri:
expf
,log2f
,powf
,sqrtf
- Trigonometrik ve hiperbolik fonksiyonlar:
sinf
,cosf
,tanf
,asinf
,acosf
,atan2f
,tanhf
- Temel işlemler:
Bazı temel platformlar ek özellikleri desteklerken nano uygulama CHRE API işlevlerine ve onaylı standart kitaplığa dış bağımlılıklar işlevlerine dahildir.
İsteğe bağlı özellikler
CHRE API, donanım ve yazılımı tanıtmak için özellik alanlarına, Bunlar API açısından isteğe bağlı olarak kabul edilir. Bu özellikler uyumlu bir CHRE uygulamasını desteklemek için gerekli olmayabilir, ancak bir nano uygulamayı desteklemek için gereklidir. Bir platform, bir fonksiyona başvuruda bulunan nanouygulamaların mobil cihazlarda yükleyin.
Sensörler
CHRE API, sensörlerden veri isteğinde bulunma olanağı sunar. Örneğin, ivme ölçer, jiroskop, manyetometre, ortam ışığı sensörü ve yakınlık. Bu API'lerin amacı, Android Sensörlerine benzer bir özellik grubu sağlamaktır. Güç tüketimini azaltmak için sensör örneklerini toplu olarak işleme desteği de dahil olmak üzere API'ler. CHRE'de sensör verilerinin işlenmesi çok daha düşük güç ve daha düşük gecikme sağlar. daha ayrıntılı sonuçlar verir.
GNSS
CHRE, genel bir gezinmeden konum verisi isteğinde bulunmak için API'leri sağlar uydu sistemi (GNSS) ve GPS ve diğer uydu takım yıldızları. Bu ham ölçüm verilerinin yanı sıra periyodik konum düzeltmelerine yönelik istekleri içerir. ancak ikisi de bağımsız kapasitedir. CHRE'nin GNSS'ye doğrudan bağlantısı olduğundan AP tabanlı GNSS isteklerine kıyasla güç daha az olduğundan, AP'nin bir konum oturumunun yaşam döngüsü boyunca uyku modunda kalabilecek.
Kablosuz bağlantı
CHRE, özellikle de web siteleri için kablosuz ağ çipiyle neden olur. GNSS açık hava alanlarında iyi performans gösterse de sonuçları Kablosuz ağ taramaları, iç mekanlarda ve gelişmiş yerlerde doğru konum bilgileri sağlayabilir alanlar. CHRE, AP'yi tarama için uyandırma maliyetinden kaçınmanın yanı sıra kablosuz ağ tarafından gerçekleştirilen kablosuz ağ taramalarının sonuçlarını dinle bağlantı amacıyla kullanılmak üzere donanım yazılımı (genellikle AP'ye teslim edilmez) güç nedeniyle. Bağlamsal amaçlarla bağlantı taramalarından yararlanmak, Böylece, gerçekleştirilen kablosuz ağ taramalarının toplam sayısını azaltarak güç tasarrufu yapabilirsiniz.
CHRE API v1.1'e kablosuz ağ desteği eklendi (izleme özelliği dahil) ve istek üzerine taramaları tetikleyebilir. Bu olanakların kapsamı genişletildi performans gösterebilen sürüm 1.2 Gidiş Dönüş Süresi (RTT) ve böylece özelliği destekleyen erişim noktalarına göre ölçüm yaparak belirlemek için kullanır.
WWAN
CHRE API, hücre tanımlama bilgilerini alabilmek için sunma hücresi ve komşuları için kullanılır; bu işlem genellikle ayrıntılı konum amaçları için kullanılır.
Ses
CHRE, düşük güçlü bir mikrofondan gelen ses verilerini toplu halde işleyebilir. genellikle SoundTrigger HAL'yi uygulamak için kullanılan donanımdan yararlanır. İşleniyor CHRE'deki ses verileri, hareket gibi diğer verilerle birleştirilebilir olabilir.
Referans uygulaması
CHRE çerçevesinin referans kodu AOSP'de system/chre
yer almaktadır
projesinin C++11'de uygulanmasıdır. Kesinlikle gerekli olmasa da,
emin olmak için tüm CHRE uygulamalarının bu kod tabanına
ve yeni özelliklerin benimsenmesini hızlandırabilir. Bu kod görülebilir
açık kaynak olması açısından temel Android çerçevesinin analog
referans ve standart olarak işlev görerek uygulamaların kullandığı API'lerin uygulanması
açısından son derece önemlidir. Tedarikçi firmaya özel olarak özelleştirilip genişletilebilir.
ortak kodu, mümkün olduğunca
referansta bulunmaktır. Android'in HAL'lerine benzer şekilde, CHRE referansı
uyarlanması için çeşitli platform soyutlamalarından yararlanır.
minimum gereksinimleri karşılayan tüm cihazlarda kullanılabilir.
Teknik ayrıntılar ve numara taşıma rehberi için
BENİOKU
system/chre
projesi için geçerlidir.