Bağlam Merkezi Çalışma Zamanı Ortamı (CHRE)

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.

CHRE çerçeve mimarisi

Ş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şlevleri std::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

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.