بيئة وقت تشغيل مركز السياق (CHRE)

تحتوي الهواتف الذكية على عدد من المعالجات، تم تحسين كل منها لأداء مهام مختلفة. ولكن، يعمل Android على معالج واحد فقط: علمًا بأن التطبيقات (AP). تم ضبط AP لتقديم أداء رائع على الشاشة مثل الألعاب، لكنه يتوقون بشدة إلى دعم الميزات التي عمليات المعالجة المتكررة والقصيرة طوال الوقت، حتى عندما تظهر الشاشة غير مفعّل. فإن المعالِجات الأصغر تكون قادرة على التعامل مع أعباء العمل هذه بكفاءة أكبر إكمال المهام دون التأثير بشكل ملحوظ على عمر البطارية. ومع ذلك، تكون بيئات البرامج في هذه المعالجات منخفضة الطاقة أكثر تقييدًا يختلف اختلافًا كبيرًا، مما يجعل التطوير عبر المنصات أمرًا صعبًا.

توفّر بيئة وقت تشغيل مركز السياق (CHRE) نظامًا أساسيًا مشتركًا لتشغيل تعمل على معالج منخفض الطاقة، مع وحدة معالجة مركزية بسيطة وواجهة برمجة تطبيقات متوافقة. تسهّل CHRE على المصنّعين الأصليين للأجهزة وموثوقيهم الشركاء إلى تفريغ المعالجة من AP، لتوفير طاقة البطارية وتحسين تجربة المستخدم، وتمكين فئة من التشغيل الدائم، الميزات الواعية بالسياق، وخصوصًا تلك التي تتضمن تطبيق التعلم الآلي إلى استشعار البيئة.

المفاهيم الرئيسية

تُعد CHRE بيئة برمجية فيها التطبيقات الأصلية الصغيرة، والتي تسمى nanoapps، يتم تنفيذها على معالج منخفض الطاقة وتتفاعل مع البيانات الأساسية عبر واجهة برمجة تطبيقات CHRE الشائعة. لتسريع التنفيذ السليم واجهات برمجة تطبيقات CHRE، وهي عبارة عن تنفيذ مرجعي لمعيار CHRE من خلال أنظمة أساسية مختلفة بروتوكول AOSP. تتضمن عملية تنفيذ المرجع رموزًا عامة وتجريدات الأجهزة والبرامج الأساسية من خلال سلسلة من طبقات التجريد للنظام الأساسي (PALs). غالبًا ما ترتبط التطبيقات Nanoapps بتطبيق عميل واحد أو أكثر يتم تشغيله في. نظام Android، الذي يتفاعل مع بروتوكول CHRE وتطبيقات النانو من خلال حظر الوصول ContextHubManager واجهات برمجة التطبيقات للنظام.

على مستوى عالٍ، يمكن رسم أوجه التشابه بين بنية CHRE Android ككل. ومع ذلك، هناك بعض الاختلافات المهمة:

  • يدعم CHRE تشغيل التطبيقات النانوية (nanoapps) التي تم تطويرها باستخدام رموز برمجية أصلية (C أو C++); لا يتم دعم Java.
  • بسبب القيود المفروضة على الموارد وقيود الأمان، لا يمكن تشغيل CHRE. لكي تستخدمها تطبيقات Android العشوائية التابعة لجهات خارجية. يمكن للتطبيقات الموثوق بها من النظام فقط الوصول إليه.

يجب أيضًا مراعاة فرق كبير بين مفهوم CHRE ومركز استشعار. وعلى الرغم من أنه من الشائع استخدام الأجهزة نفسها لتنفيذ مركز أداة الاستشعار وCHRE، لا توفر CHRE نفسها إمكانات أداة الاستشعار مطلوبة من أجهزة استشعار Android HAL. ترتبط CHRE طبقة تجريد الأجهزة (HAL) لمركز السياق، وتعمل كعميل لمستشعر خاص بالجهاز لاستقبال بيانات جهاز الاستشعار بدون تضمين نقطة الوصول.

بنية إطار عمل CHRE

الشكل 1. بنية إطار عمل CHRE

طبقة تجريد الأجهزة (HAL) لمركز السياق

إن طبقة تجريد أجهزة مركز السياق (HAL) هي الواجهة بين إطار عمل Android وتطبيق CHRE على الجهاز، وفقًا للتعريف الوارد في hardware/interfaces/contexthub يحدد السياق على HAL واجهات برمجة التطبيقات التي من خلالها يعمل إطار عمل Android وتكتشف مراكز السياق المتاحة وتطبيقاتها النانوية، وتتفاعل مع تلك وتطبيقات النانو من خلال تمرير الرسائل، وتسمح بتحميل تطبيقات النانو إلغاء التحميل. يشير هذا المصطلح إلى مرجع تنفيذ لـ "HAL" في "مركز السياق" ويتوافق مع يتوفّر التنفيذ المرجعي لسياسة CHRE على system/chre/host

وفي حال حدوث تعارض بين هذه الوثائق وتعريف HAL، يتم تطبيق وتكون الأولوية لتعريف HAL.

الإعداد

عند بدء تشغيل Android، ContextHubService لاستدعاء دالة HAL getHubs() لتحديد ما إذا كانت أي من محاور السياق المتوفرة على الجهاز هذا طلب حظر لمرة واحدة، لذا يجب إكماله بسرعة لتجنب تأخير التمهيد، ويجب أن تعرض نتيجة دقيقة، إذا كانت لا يمكن تقديم محاور السياق بعد ذلك.

تحميل تطبيقات nanoapps وإلغاء تحميلها

يمكن أن يتضمن مركز السياق مجموعة من التطبيقات النانوية المضمَّنة في الجهاز. ويتم تحميلها عند بدء تشغيل CHRE. وهذه التطبيقات تُعرَف باسم التطبيقات النانوية المُحمَّلة مسبقًا، ويجب تضمينه في أول رد ممكن على queryApps().

يتيح مركز السياق (HAL) أيضًا تحميل التطبيقات النانوية وإلغاء تحميلها بشكل ديناميكي من خلال الدالتين loadNanoApp() وunloadNanoApp(). تطبيقات Nanoapps إلى HAL بتنسيق ثنائي خاص بأجهزة CHRE تنفيذ البرنامج للجهاز.

إذا كان تنفيذ تحميل تطبيق nanoapp يتضمن كتابته بتنسيق غير متطاير مثل وحدة تخزين الفلاش المتصلة بالمعالج الذي يُشغِّل CHRE، ثم يجب تشغيل تنفيذ CHRE دائمًا باستخدام هذه التطبيقات النانوية الديناميكية في غير مفعّل. يعني هذا أنه لا يتم تنفيذ أي من رموز nanoapp حتى تم استلام طلب enableNanoapp() من خلال HAL. يمكن للتطبيقات النانوية المُحمَّلة مسبقًا التهيئة في الحالة المفعّلة.

إعادة تشغيل مركز السياق

وعلى الرغم من أنّه ليس من المتوقّع أن تتم إعادة تشغيل CHRE أثناء التشغيل العادي، فإنّه لاسترداد الحساب في حالات غير متوقعة مثل محاولة الوصول إلى عنوان ذاكرة لم يتم تعيينه. في هذه الحالات، تتم إعادة تشغيل CHRE. بشكل مستقل عن Android. وتُعلم قناة HAL Android بذلك من خلال الحدث RESTARTED الذي يجب إرساله فقط بعد إعادة إعداد CHRE إليه نقطة قبول الطلبات الجديدة، مثل queryApps().

نظرة عامة على نظام CHRE

تم تصميم CHRE حول بنية قائمة على الحدث، حيث تكون الوحدة الأساسية العملية الحسابية هي حدث يتم تمريره إلى نقطة دخول معالجة حدث nanoapp. بينما يمكن أن يكون إطار عمل CHRE متعدد السلاسل، ولا يتم تنفيذ تطبيق nanoapp معيّن من سلاسل متعددة بالتوازي. يتفاعل إطار عمل CHRE مع تطبيق nanoapp معيّن. من خلال إحدى نقاط دخول تطبيق nanoapp الثلاث (nanoappStart()، "nanoappHandleEvent()" و"nanoappEnd()") أو من خلال معاودة الاتصال موضَّحة في طلب CHRE API سابقًا، وتفاعلت تطبيقات nanoapps مع إطار عمل CHRE الأساسي من خلال واجهة برمجة تطبيقات CHRE. توفر واجهة CHRE API مجموعة من الأدوات والإمكانات والأدوات اللازمة للوصول إلى الإشارات السياقية، بما في ذلك وأجهزة الاستشعار وGNSS وWi-Fi وWWAN والصوت، ويمكن توسيعها من خلال والإمكانيات الخاصة بالمورِّد لتستخدمها تطبيقات nanoapps الخاصة بالمورِّد.

نظام التصميم

بينما يتم إنشاء HAL لمركز السياق ومكونات أخرى ضرورية في جانب AP إلى جانب Android، فإن الرمز البرمجي الذي يعمل بموجب قانون حقوق الملكية الفكرية CHRE قد يكون له متطلبات تجعل لا تتوافق مع نظام إصدار Android، مثل الحاجة إلى أداة مخصصة وسلسلة الأدوات. لذلك، يوفّر مشروع CHRE في بروتوكول AOSP إصدارًا مبسّطًا القائم على خوارزمية GNU Make لتجميع التطبيقات النانوية، واختيار CHRE إطار العمل إلى المكتبات التي يمكن دمجها مع النظام. الجهاز الشركات المصنّعة التي تضيف دعمًا لإدارة حقوق الملكية الفكرية (CHRE) إلى دمج دعم نظام الإصدار أجهزته المستهدفة إلى AOSP.

تمّت كتابة واجهة برمجة تطبيقات CHRE وفق معيار اللغة C99، كما أن المرجع مجموعة فرعية محدودة من C++11 مناسبة للموارد المحدودة التطبيقات.

واجهة برمجة تطبيقات CHRE

واجهة برمجة تطبيقات CHRE هي مجموعة من ملفات العنوان C التي تعرّف البرامج واجهة بين تطبيق nanoapp والنظام. فهي مصممة لجعل التطبيقات النانوية متوافق مع جميع الأجهزة التي تدعم CHRE، ما يعني أن لا يلزم تعديل رمز المصدر لتطبيق nanoapp للتوافق مع جهاز جديد على الرغم من أنه قد يلزم إعادة تجميعها خصيصًا لمكتبة مجموعة تعليمات المعالج أو الواجهة الثنائية للتطبيق (ABI). مؤسسة The CHRE هندسة البرمجيات وتصميم واجهة برمجة التطبيقات أيضًا ضمان أن تكون التطبيقات النانوية متوافقة مع النظام الثنائي عبر إصدارات مختلفة من واجهة برمجة تطبيقات CHRE، مما يعني أن تطبيق nanoapp لا تحتاج إلى إعادة التجميع للتشغيل على نظام ينفذ إصدارًا مختلفًا من واجهة برمجة تطبيقات CHRE مقارنةً بواجهة برمجة التطبيقات المستهدفة التي يتم تجميع تطبيق nanoapp وفقًا لها. بمعنى آخر، إذا كان البرنامج الثنائي لتطبيق nanoapp يعمل على جهاز يتوافق مع CHRE API الإصدار 1.3، وتمت ترقية هذا الجهاز للتوافق مع الإصدار 1.4 من واجهة CHRE API، وهو تطبيق nanoapp نفسه استمرار عمل النظام الثنائي. وبالمثل، يمكن تشغيل تطبيق nanoapp على الإصدار 1.2 من CHRE API، ويمكنها في وقت التشغيل تحديد ما إذا كان يتطلب إمكانات من الإصدار 1.3 من واجهة برمجة التطبيقات تحقيق استخدامه، أو ما إذا كان يمكن أن يعمل، وربما مع تدهور الميزات.

تم طرح إصدارات جديدة من CHRE API إلى جانب Android، ولكن باسم CHRE تنفيذها جزءًا من تنفيذ المورّدين فإن إصدار واجهة برمجة تطبيقات CHRE المتوافقة على الجهاز ليس بالضرورة مرتبطًا إصدار Android.

ملخّص الإصدار

مثل خطة إصدارات Android HIDL، تتّبع CHRE API تحديد الإصدارات الدلالية. يشير الإصدار الرئيسي إلى التوافق الثنائي، بينما يشير الإصدار الثانوي إلى عند تقديم ميزات متوافقة مع الأنظمة القديمة. واجهة CHRE API ويتضمّن التعليقات التوضيحية لرمز المصدر لتحديد الإصدار الذي أدّى إلى استخدام دالة. أو معلَمة، مثل @since v1.1.

تعرض عملية تنفيذ CHRE أيضًا إصدار رمز تصحيح خاص بالنظام الأساسي من خلال chreGetVersion()، مما يشير إلى وقت إجراء إصلاحات الأخطاء أو التحديثات الطفيفة التنفيذ.

الإصدار 1.0 (Android 7)

يتضمّن ذلك دعم أدوات الاستشعار وإمكانات تطبيقات النانو الأساسية، مثل الأحداث الموقتات.

الإصدار 1.1 (Android 8)

وتقدم إمكانات الموقع من خلال الموقع الجغرافي لنظام GNSS والقياسات الأولية. البحث عن شبكات Wi-Fi ومعلومات شبكة الجوّال، إلى جانب تحسينات عامة لتفعيل الاتصال من تطبيق nanoapp إلى nanoapp وإجراء تحسينات أخرى.

الإصدار 1.2 (Android 9)

يضيف الدعم للبيانات من ميكروفون منخفض الطاقة ونطاق استخدام ميزة "مراسلة نصية في الوقت الفعلي" لشبكة Wi-Fi وAP. وإشعارات التنشيط والنوم، بالإضافة إلى تحسينات أخرى.

الإصدار 1.3 (Android 10)

يعزّز القدرات المتعلّقة ببيانات معايرة جهاز الاستشعار، ويدعم وتفريغ بيانات جهاز الاستشعار المجمّعة عند الطلب، وتحديد خطوة الكشف عن نوع أداة الاستشعار توسّع أحداث الموقع الجغرافي لنظام تحديد المواقع العالمي (GNSS) مع حقول دقة إضافية.

الإصدار 1.4 (Android 11)

يتيح التطبيق استخدام معلومات شبكة الجيل الخامس ونسخة تصحيح الأخطاء الخاصة بتطبيق nanoapp وغير ذلك. التحسينات.

ميزات النظام الإلزامية

في حين أنّ مصادر الإشارات السياقية، مثل أدوات الاستشعار، يتم تصنيفها إلى فئات اختيارية. كانت هناك حاجة إلى بعض الوظائف الأساسية في إطار CHRE وعمليات التنفيذ. يتضمن ذلك واجهات برمجة التطبيقات الأساسية للنظام، مثل واجهات برمجة التطبيقات المخصَّصة الموقتات وإرسال الرسائل واستلامها للعملاء على معالج التطبيقات، والتسجيلات وغيرها. للحصول على التفاصيل الكاملة، يمكنك مراجعة عناوين واجهة برمجة التطبيقات

بالإضافة إلى ميزات النظام الأساسية التي تم تنظيمها في واجهة برمجة تطبيقات CHRE، هناك أيضًا الميزات الإلزامية على مستوى نظام CHRE المحدّدة على مستوى HAL في مركز السياق تشير رسالة الأشكال البيانية وأهمها هو القدرة على التحميل وإلغاء التحميل بشكل ديناميكي nanoapps.

مكتبة C/C++ القياسية

للحدّ من استخدام الذاكرة وتعقيد النظام، يتم تنفيذ بروتوكول CHRE المطلوبة لدعم مجموعة فرعية فقط من مكتبات C وC++ القياسية ميزات لغوية تتطلّب دعمًا في وقت التشغيل. باتباع هذه المبادئ، فإن بعض الميزات التي يتم استبعادها بشكل صريح بسبب ذاكرتها الكبيرة على مستوى نظام التشغيل والتبعيات الأخرى لأنه يتم استبدالها بأدوات أكثر واجهات برمجة تطبيقات CHRE الخاصة على الرغم من أنّ ما يلي ليس قائمة شاملة، التي لا تهدف إلى إتاحتها لتطبيقات nanoapps:

  • استثناءات C++ ومعلومات نوع بيئة التشغيل (RTTI)
  • إتاحة سلاسل المحادثات المتعددة في المكتبة العادية، بما في ذلك عناوين C++11 "<thread>" و"<mutex>" و"<atomic>" و"<future>"
  • مكتبات الإدخال والإخراج القياسية C وC++
  • مكتبة النماذج العادية (STL) في C++
  • مكتبة التعبيرات العادية من C++
  • يتم تخصيص الذاكرة الديناميكي من خلال الدوال العادية (على سبيل المثال، malloc وcalloc وrealloc وfree وoperator new) ومعايير أخرى ودوال المكتبة التي تستخدم بطبيعتها التخصيص الديناميكي، مثل std::unique_ptr
  • الأقلمة وإتاحة أحرف يونيكود
  • مكتبات التاريخ والوقت
  • الدوال التي تعدِّل التدفق العادي للبرنامج، بما في ذلك <setjmp.h> <signal.h> وabort وstd::terminate
  • الدخول إلى البيئة المضيفة، بما في ذلك system وgetenv
  • POSIX والمكتبات الأخرى غير المضمنة في لغة C99 أو C++11 عادي

في الكثير من الحالات، تتوفّر إمكانات مكافئة من خلال وظائف واجهة برمجة تطبيقات CHRE ومكتبات الخدمات العامة. على سبيل المثال، يمكن استخدام chreLog لتسجيل تصحيح الأخطاء. تستهدف نظام Android Logcat، حيث قد يحتاج أي برنامج تقليدي استخدِم printf أو std::cout.

في المقابل، هناك حاجة إلى بعض إمكانات المكتبة القياسية. الأمر يعود إلى التنفيذ على النظام الأساسي للكشف عنها من خلال مكتبات ثابتة للتضمين في برنامج ثنائي nanoapp أو عن طريق الربط الديناميكي بين تطبيق nanoapp والنظام. هذا النمط على سبيل المثال لا الحصر:

  • الأدوات المساعدة للسلسلة والمصفوفة: memcmp وmemcpy وmemmove وmemset strlen
  • مكتبة الرياضيات: دوال النقاط العائمة أحادية الدقة شائعة الاستخدام:

    • العمليات الأساسية: ceilf وfabsf وfloorf وfmaxf وfminf وfmodf roundf، lroundf، remainderf
    • الدوال الأسية ودوال الطاقة: expf وlog2f وpowf وsqrtf
    • الدوال المثلثية والقطعية: sinf وcosf وtanf وasinf acosf، atan2f، tanhf

وفي حين أنّ بعض المنصات الأساسية تتيح إمكانات إضافية، لا يزال تطبيق nanoapp لا يمكن نقلها في جميع عمليات تنفيذ CHRE إلا إذا كانت تقيد التبعيات الخارجية لدوال واجهة برمجة تطبيقات CHRE والمكتبة القياسية المعتمدة الأخرى.

ميزات اختيارية

لترويج الأجهزة والبرامج، يتم تقسيم واجهة برمجة تطبيقات CHRE إلى عدة مجالات: وهي تعتبر اختيارية من منظور واجهة برمجة التطبيقات. وفي حين أن هذه الميزات قد لا تكون هناك حاجة إلى تنفيذ نظام CHRE متوافق، فقد لا المطلوبة لدعم تطبيق nanoapp معيّن. حتى إذا كانت المنصة لا تدعم مجموعة معينة من واجهات برمجة التطبيقات، يجب أن تكون التطبيقات النانوية التي تشير إلى تلك الدوال قادرة على إنشاء وتحميلها.

أجهزة الاستشعار

توفّر واجهة CHRE API إمكانية طلب البيانات من أدوات الاستشعار، بما في ذلك مقياس التسارع، والجيروسكوب، ومقياس المغناطيسية، وجهاز استشعار الضوء المحيط، والتقارب. تهدف واجهات برمجة التطبيقات هذه إلى توفير مجموعة ميزات تتشابه مع أجهزة استشعار Android. تشمل واجهات برمجة التطبيقات إمكانية إرسال عينات من أجهزة الاستشعار لتقليل استهلاك الطاقة. تؤدي معالجة بيانات جهاز الاستشعار ضمن إطار CHRE إلى توفير طاقة أقل بكثير ووقت استجابة أقل. معالجة إشارات الحركة مقارنةً بالجري على نقطة الوصول.

نظام GNSS

توفِّر CHRE واجهات برمجة تطبيقات لطلب بيانات الموقع الجغرافي من شريط تنقّل عمومي. الأقمار الصناعية (GNSS)، بما في ذلك نظام تحديد المواقع العالمي (GPS) ومجموعات الأقمار الصناعية الأخرى. هذا النمط تتضمن طلبات إصلاحات الموضع الدورية، إلى جانب بيانات القياس الأولية، على الرغم من أن كلاهما يمثل قدرات مستقلة. بما أنّ CHRE لديها رابط مباشر إلى GNSS يتم خفض الطاقة مقارنة بطلبات GNSS المستندة إلى AP، نظرًا لأن AP يمكن أن يبقى نائمًا طوال دورة الحياة الكاملة لجلسة الموقع.

Wi-Fi

توفر CHRE القدرة على التفاعل مع شريحة Wi-Fi، وبشكل أساسي من أجل الموقع الجغرافي. على الرغم من أن نظام GNSS يعمل بشكل جيد مع المواقع الخارجية، إلا أن نتائج يمكن أن توفر عمليات البحث عن شبكات Wi-Fi معلومات دقيقة عن الموقع الجغرافي في الأماكن المغلقة المختلفة. وبالإضافة إلى تفادي تكاليف إيقاظ AP لإجراء فحص، يمكن لمركز CHRE الاستماع إلى نتائج عمليات البحث عن شبكة Wi-Fi التي تم إجراؤها بواسطة شبكة Wi-Fi البرامج الثابتة لأغراض الاتصال، والتي لا يتم تسليمها عادةً إلى AP لأسباب تتعلق بالطاقة. تساعد الاستفادة من عمليات فحص الاتصال للأغراض السياقية لتقليل إجمالي عدد عمليات البحث عن شبكة Wi-Fi التي تم إجراؤها وتوفير الطاقة.

تمت إضافة إمكانية الاتصال بشبكة Wi-Fi في الإصدار 1.1 من CHRE API، بما في ذلك إمكانية المراقبة فحص النتائج وإجراء عمليات فحص عند الطلب. تم تطوير هذه الإمكانات في الإصدار 1.2 مع إمكانية تنفيذ مدة الذهاب والعودة (RTT) القياسات مقابل نقاط الوصول التي تدعم الميزة، والتي تتيح تحديد الموضع النسبي بدقة.

شبكة WAN

تتيح CHRE API استرداد معلومات تعريف الخلية. لخلية العرض والعناصر المجاورة لها، والتي تُستخدم عادةً لتحديد الموقع الجغرافي الدقيق.

الصوت

ويمكن لفريق CHRE معالجة دفعات من البيانات الصوتية من خلال ميكروفون منخفض الطاقة، عادةً ما يستفيدون من الأجهزة المستخدمة لتنفيذ طبقة المقابس الآمنة (HAL) على SoundTrigger. قيد المعالجة ويمكن دمج البيانات الصوتية في أداة CHRE مع بيانات أخرى، مثل الحركة. أجهزة الاستشعار.

تطبيق المرجع

إنّ الرمز المرجعي لإطار عمل CHRE مدرَج في بروتوكول AOSP في system/chre. المشروع في لغة C++11. وبينما ليس مطلوبًا بشدة، يوصى به أن تعتمد جميع عمليات تنفيذ CHRE اعتمادًا على قاعدة الرموز هذه، وذلك للمساعدة في ضمان الاتساق وتسريع الاعتماد للإمكانات الجديدة. يمكن الاطّلاع على هذا الرمز. يُظهر إطار عمل Android الأساسي في كونه برنامجًا مفتوح المصدر تنفيذ لواجهات برمجة التطبيقات التي تستخدمها التطبيقات، بحيث تعمل كقاعدة أساسية وعادية للتوافق. وبينما يمكن تخصيصها وتوسيعها باستخدام خيارات خاصة بالمورّدين الأخرى، إلا أننا ننصح بإبقاء الرمز المشترك أقرب إلى الرجوع إليها قدر الإمكان. وكما هو الحال في HALs في Android، لا يزال مرجع CHRE التنفيذ يستخدم أنظمة تجريد مختلفة للمنصة لتمكينه من التكيّف مع أي جهاز يستوفي الحد الأدنى من المتطلبات.

للحصول على التفاصيل الفنية ودليل النقل، يمكنك الاطّلاع على قراءة التي تم تضمينها في مشروع system/chre.