ما هو nRF Connect SDK الجديد لـ Nordic؟ تطور أم ثورة أم بديل؟

في الأسبوع الماضي ، أضافت Nordic Semiconductor دعم سلسلة nRF52 إلى nRF Connect SDK.



السؤال الرئيسي الذي يطرحه معظم الناس هو ما هو ولماذا هو مهم؟ هذا السؤال مناسب بشكل خاص لأولئك الذين لديهم خبرة في nRF5 SDK ، وهناك الكثير منهم.

ألاحظ على الفور أن المقالة مكتوبة في المقام الأول لأولئك الذين يستخدمون الأساليب التقليدية في تطوير مستوى Cortex-M أو الأجهزة القريبة. لذلك ، قد لا تبدو بعض التعريفات والتماثلات صحيحة تمامًا من وجهة نظر أولئك الذين يعملون على مستوى عال (ينظر إلى ما يحدث على جانب Linux) ، ولكن سيكون من الأسهل فهمه لأولئك الذين بدأوا للتو بهذه الطريقة.

التعليقات والتوضيحات مرحب بها دائما


قليلا عن من هو الشمال وكيف هم بخير الآن
Nordic . , , Bluetooth Low Energy, 90% . : Starline, Pandora, Scher-Khan . Redmond, Ready4Sky. . 2 .

Nordic Semiconductor 40%, 2.5 , (TI). , . , Samsung Xiaomi Nordic , , .

, Nordic, , . nRF5x STM ( ).

:

  • ( )
  • SDK
  • ( )
  • Altium

, Nordic Semiconductor .

هنا يبرز السؤال الرئيسي ، لماذا تم إصدار SDK الجديد وكيف تختلف عن الحالية؟ إذا كان الأمر كذلك ، فكل شيء على ما يرام مع الحل الحالي.

يعمل nRF5 SDK الحالي على أساس قائمة انتظار بسيطة ، وفي معظم الحالات يكون هذا كافيًا لتنفيذ أي مهمة تقريبًا (على الرغم من أن بعض الشركات لا تزال تستخدم حزم SDK الخاصة بها ، ولكن هذه استثناءات للقواعد). يستخدم nRF Connect SDK الجديد نهجًا مختلفًا جذريًا يعتمد على Zephyr RTOS. فكر في الاختلافات بمزيد من التفصيل.
RTOS (RTOS) تحمل مزايا معينة وعيوب معروفة. تشمل الأخيرة:

  • عبء إضافي للحفاظ على نظام التشغيل
  • تعقيد كبير في التنمية في المشاريع البسيطة
  • زيادة تعقيد البناء

بقية RTOS هي:

  • زيادة الموثوقية بسبب التحكم في التدفقات الفردية

في بلدان الشمال الأوروبي ، أصبح هذا مثيرًا للاهتمام وملائمًا منذ إدخال النظام الجديد في الحزمة (SIP) مع LTE Cat-M / NB-IoT / GPS - سلسلة nRF91. يتمتع SIP هذا بأداء أعلى بسبب Cortex-M33 الجديد والمتطلبات الأخرى لمكون الشبكة ، والتي ظهرت بسبب الانتقال من BLE إلى الشبكات الخلوية. هناك ابتكار آخر هنا هو مودم SDR ، الذي يعمل على قلب منفصل والذي كان من الضروري معه تنظيم التفاعل النووي. لأول مرة ، ظهرت SDK المستندة إلى RTOS هنا ، وبالنسبة لأولئك الذين واجهوا نهجًا جديدًا لأول مرة ، فقد أثار عددًا من الأسئلة ، بدءًا من مرحلة الإعداد. كما تم إصدار مساعد خاص للتجميع الصحيح لبيئة التطوير - Getting Started Assistant. يخبرك بالمكونات التي تحتاج إلى تثبيتها (هناك الكثير منها ، انظر أدناه) ، ويتحقق من تثبيت كل شيء بشكل صحيح.

صورة

من وجهة النظر هذه ، يمكننا مقارنة الانتقال إلى Zephyr مع ظهور الكتلة الأولى ARM Cortex-M والانتقال إلى 32 بت. الآن تستخدم الأغلبية أعضاء الكنيست 32 بت كأهمهم ، حيث توجد مقالة عن حبري. كما تخبرنا عن عملية الانتقال ، التي بدت معقدة في البداية دون داعٍ. ولكن مع مرور الوقت ، توصل الجميع تقريبًا إلى استنتاج مفاده أن هذا أصبح المعيار.

من الجدير بالذكر أن Zephyr OS ليس RTOS الوحيد الذي يعمل على رقائق الشمال. أمثلة على المشاريع مع FreeRTOSمتوفر في SDK v.11 بدءًا من عام 2016 ، وحتى في وقت سابق في SDK v.9 كان هناك دعم Keil RTX لعائلة nRF51 (2015). ومع ذلك ، في وقت سابق كانت هذه وظائف أكثر تجريبية وتم توفير الدعم إلى حد أكبر من قبل الشركات المصنعة لـ RTOS. وهو ، من حيث المبدأ ، صحيح الآن.

ظهر دعم Zephyr غير الرسمي لعائلات nRF5x في عام 2016 .

قرر Zephyr Nordic إنشاء SDK جديد تمامًا على RTOS الآن فقط.

هناك عدد من المتطلبات الأساسية لذلك:

  • هناك عدد من التقنيات الموروثة من Linux:

    • العمل مع مجموعات البث وقوائم الانتظار في الوقت الفعلي (مهم بشكل خاص للبروتوكولات المعتمدة على الوقت مثل BLE)
    • مكتبات للشبكات والأمن
    • نموذج وصف الأجهزة المرن مع تحسين الطاقة
    • مكتبات للعمل مع الأجهزة الطرفية (أجهزة الاستشعار ، وما إلى ذلك)

  • :




    • , Nordic,

  • ( )
  • ( ) . , , .

لفهم كيفية حدوث تغييرات جذرية ، فإن المخطط الهيكلي من الوثائق الرسمية مناسب تمامًا. يشير اللون الرمادي إلى المكونات التي تعد جزءًا من Zephyr.

صورة

من الناحية العملية ، عند تنفيذ هذا النهج ، ينشأ عدد من المشاكل المعرفية. اعتاد المطورون على المنتج والحلول تجربة التنافر مع عدد كبير من التغييرات.

ضع في اعتبارك إصدار التطوير على Windows ، لأنه سيسبب المزيد من الأسئلة بخصوص أولئك الذين اعتادوا على التطوير على Linux.

الحزم التالية مطلوبة:

  • شوكولاتي (مدير الحزم)
  • Git (نظام التحكم في الإصدار)
  • النينجا (نظام بناء موجه للسرعة)
  • CMake (نظام بناء عالي المستوى)
  • DTC-MSYS2 ( (device tree))
  • GPerf ( )
  • west ( )
  • pip ( Python)
  • Python3
  • GNU Arm Embedded Toolchain (GCC, GDB ARM)

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

على سبيل المثال، تشوكولاتيي و نقطة تسمح لك لتثبيت كافة حزم اللازمة من خلال وحدة التحكم لنظام التشغيل وبيثون، على التوالي. ويتم وضع Python نفسها ، مثل معظم البرامج المعنية ، في أمر واحد:

hoco install python xxx

كما يتم تحديثه بأمر واحد:

choco upgrade all

هذا النهج غير معتاد قليلاً لمستخدمي Windows ، لأولئك الذين هم على دراية بمديري حزم وحدة التحكم في Linux (apt ، zypper ، إلخ) ، لا شيء جديد. لقد لاحظت في كثير من الأحيان الموقف الذي يقوم به مطورو البرامج لبرنامج تحديث MK فقط عند إعادة تثبيت نظام التشغيل على جهاز الكمبيوتر. حول سبب سوء ذلك ، لن نتحدث ، فقط ألاحظ أنه هنا يتم حل هذه المشكلة تلقائيًا.

الابتكارات في مجال تكوين وتجميع المشاريع أكثر إثارة للاهتمام.

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

Cmakeفي المقابل ، فإنه يسمح بتوليد ملفات التكوين للنينجا بلغة (برمجة) عالية المستوى للنظام الأساسي الذي سيتم التجميع عليه. حول Cmake يمكن قراءتها على حبري، على سبيل المثال، هنا ، هنا و هنا ،
GPerf بإنشاء جدول المؤشرات، مما يوفر الذاكرة، راجع الخطوة 3 من الجمعية أدناه.

يجب علينا أيضًا الانتباه إلى نهج جديد لوصف الحديد. ظهر Devicetree ، واصفا هيكل الأجهزة للجهاز. هذه نتيجة مباشرة لدعم Zephyr من قبل مؤسسة Linux.

الإيجابيات هي أن وصف الأجهزة الآن في ملف .dts منفصل ، له بنية بسيطة، من السهل تعديله ، ونتيجة لذلك ، ينقل الكود بين مجموعات مختلفة من الرقائق.
كمثال ، بقدر ما أستطيع أن أوضح كل شيء ، سأعطي dtsi الأساسي على nRF52840 ، والذي يستخدم بدوره في وصف لوحة nRF52840-DK nrf52840dk_nrf52840.dts
. عدد اللوحات الأم التي يدعمها Zephyr بالفعل أكثر من 200 .

كما ذكرنا سابقًا ، أصدرت Nordic لأول مرة Zephyr في سلسلة nRF91 ، ثم على nRF53 ، والآن وصلت أخيرًا إلى nRF52 الأكثر ضخامة.

يسمح التبديل إلى RTOS بدوره بحل مشكلة تعديل التعليمات البرمجية للأجهزة الجديدة. حتى بين شرائح عائلة واحدة ، تطلب الانتقال موارد معينة من جانب التطوير ، إذا كان مصحوبًا بانتقال إلى جهاز آخر (مكتبة BLE المجمعة مسبقًا). ناهيك عن الانتقال ، على سبيل المثال ، من 51 أو 91 سلسلة إلى 52 ، عندما يتغير نظام الأجهزة نفسه بشكل كبير. الآن سيتم حل هذه المهمة أسهل وأسرع.

يتم تحسين الحديد في Nordic باستمرار ، ولكن يجب كتابته بشكل منفصل. في إطار هذه المقالة ، لا يسعنا إلا أن نلاحظ أن التركيز ينصب على التكامل مع RTOS والسلامة وكفاءة الطاقة وتحسين القناة الراديوية (BLE 5.2). شكرا يمكن القول ثنائي النواة اللحاء-M33، ARM Cryptocell وARM TrustZone.

لبناء devicetree استخداماDevice Tree Compiler ، وهو جزء من MSYS2 (نظام بناء محسّن يعتمد على Cygwin و MinGW-64).

الجزء الثاني من تكوين المشروع موجود في KConfig (تكوين Kernel) ، والذي تم توارثه أيضًا من Linux. يسمح لك بتحديد الكتل الضرورية من خلال واجهة رسومية وتعيين المعلمات للتجميع لمهمة معينة ، وهو أمر مهم بشكل خاص في ظروف الموارد المحدودة للأنظمة على الشريحة.

يمكنك استخدام الأدوات المساعدة التقليدية مثل menuconfig ، أو في إطار Segger Embedded Studio (IDE الرسمي الموصى به) هناك واجهة مدمجة يمكن تشغيلها من خلال عنصر القائمة المقابل: Project> Configure nRF Connect SDK Project



فيما يلي مثال على تكوين المشروع باستخدام SSL / TLS استنادًا إلى nRF9160. كما ترى في ذلك ، يمكنك تكوين كل من ميزات الأجهزة للمشروع (النظام الأساسي ، وعدد سلاسل العمليات ، ووحدات kernel للمكونات الإضافية) ، والبرامج (المفاتيح والعناوين ، وما إلى ذلك).





خذ بعين الاعتبار مراحل تجميع المشروع: هناك خمسة في المجموع:

  • التكوين - المعالجة الأولية لجميع التكوينات (devicetree ، KConfig) ، عند الإخراج نحصل على ملفات رأس تصف الأجهزة والتكوين لـ Ninja
  • التجميع المسبق (I) - هياكل المعالجة على مستوى عالٍ ، وتجميع ملفات النظام والإزاحة (الإزاحة) ، وإنشاء جداول المكالمات
  • التجميع الأولي (II) - تجميع رموز المصدر الرئيسية وحزمها في الأرشيفات ، والربط
  • (III) — (GPerf),
  • - (IV) — hex, bin

يمكنك قراءة المزيد حول نظام التجميع Zephyr مع الصور في الوثائق الرسمية . هناك الكثير من النصوص والصور ، لذلك لن نفكر في التفاصيل في إطار هذه المقالة.
من المهم أن نفهم أن الأدوات المستخدمة هنا ليست بديلاً عن المعالج المسبق C (cpp) و C linker (ld). كلاهما يستخدم في جميع المراحل باستثناء ما بعد المعالجة. ومع ذلك ، تخضع نتيجة عملهم إلى تحسينات إضافية ، مما يسمح لك بتقليل وقت التجميع ومتطلبات الذاكرة بشكل كبير.

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

بالعودة إلى السؤال في عنوان المقال ، يمكننا القول أن هذا النموذج هو بالتأكيد واقع جديد. وهو ما يجلب للوهلة الأولى تحسينات كبيرة. تعمل ما لا يقل عن عائلتين جديدتين من الرقائق من أكبر مصنعي BLE في العالم بدقة وعلى هذه التقنية فقط ولا يُتوقع حدوث أي عائد. في رأيي ، هذه ثورة أعدت مسبقا.

تحديث : في 14 مايو ، عقدت Nordic ندوة عبر الإنترنت حول حزمة SDK الجديدة التي أعلنت فيها أن جميع إصدارات BLE الأقدم من 5.0 ستكون متاحة فقط في nRF Connect SDK. وفقًا لذلك ، سيجلب Directino Finding المعروف أيضًا باسم AoA / AoD (BLE 5.1) و LE Audio (BLE 5.2) ، الذي ينتظره الكثيرون ، أدوات جديدة هذا العام وستحدث التغييرات في التطوير في وقت أقرب مما كان متوقعًا.

الموجودات:

  • التغييرات جذرية ، الكود الذي يعمل مع nRF5 SDK الحالي غير متوافق مع الجديد (nRF Connect SDK)
  • يتيح لك التبديل إلى RTOS باستخدام Devicetree و KConfig الحصول على مستوى إضافي من التجريد للأجهزة ، والذي بدوره يسرع بشكل كبير من تطوير المشروع ونقله إلى نظام أساسي جديد
  • يؤدي التبديل إلى Zephyr إلى دعم عدد كبير من البروتوكولات والمكتبات ؛ أما بالنسبة لأجهزة IoT ، فإن الأكثر إثارة للاهتمام هي وظائف الشبكة والأمان ، حيث يكون Linux قويًا تقليديًا
  • يستخدم نظام Zephyr OS عددًا من الأدوات أثناء التجميع ، والتي يمكن أن تقلل بشكل كبير من وقت التجميع ومتطلبات الذاكرة ، وهو أمر مهم بشكل خاص للتطبيقات المضمنة
  • تسمح حزمة SDK الجديدة باستخدام المطورين ذوي المستوى الأعلى ، الذين هم في السوق أكثر بكثير من المطورين ذوي المستوى المنخفض. هذا يحل مسألة الموظفين وزيادة حصتها في السوق.

All Articles