
شاركت
Embox في مهرجان
TechTrain IT. مثل
المرة الأولى ، أحضرنا قطع الحديد وأظهرنا إنجازاتنا على الهواء مباشرة. لقد كتبنا بالفعل عن بعض على Habré ، لكنك لا تعرف أبدا من :).
تم عرض هاتف VoIP و
Qt و
OpenCV ، وكل ذلك يعتمد على STM32F7-Discovery. بالإضافة إلى الموقف ، قدمنا ثلاثة تقارير. سبق أن وصفت أفكار الأول عن المشروع المفتوح على
هابر في هذه المقالة ، أود أن أقول أفكار تقرير آخر ، والذي كان يسمى برنامج
"إطلاق" سطح المكتب "على ميكروكنترولر" . حسنًا ، انتهز هذه الفرصة ، وسأخبركم قليلاً عن مشاعري حول المهرجان.
TechTrain
أولاً ، دعني أخبركم قليلاً عن المهرجان نفسه. يمكن لأي شخص غير مهتم بالرجوع إلى قسم "بدء تشغيل برنامج" Desktop على وحدة التحكم "على الفور"
أول ما لفت انتباهي في المهرجان كان الكثير من الناس. لقد سئمنا من الوقوف على المنصة ، والتحدث ، وإجراء البحث ، والتواصل. من ناحية أخرى ، كانت ممتعة للغاية ومثيرة للاهتمام ، والأهم من ذلك ، حصلنا على الكثير من المشاعر الإيجابية ، على سبيل المثال ، أخبرنا العديد من الناس أن لدينا مدونة جيدة على المحور :). كان المشاركون في المهرجان من مختلف مجالات النشاط ، ولم يكونوا حتى من تكنولوجيا المعلومات ، لأن شعار المهرجان هو "مهرجان رائع للمطورين والمهندسين والمتعاطفين معهم." كان هناك العديد من الأطفال ، قام صبي في نهاية المهرجان بسحب آلة الروبوت من المنصة ولعب بها. لم يصب الصبي ولا الروبوت.
لجعل عرض الجمهور أكثر قابلية للفهم ، سأوضح ذلك بطريقة مختلفة. تم تنفيذ الكثير من الأنشطة في المهرجان ، كان أحدها عبارة عن مهمة. كان على المشاركين في البحث الصعود إلى المدرجات وإكمال المهام التي تم اختراعها والحصول على نسخة مطبوعة. لهذا ، شخص ما حصل حتى quadrocopter كله. ولكن الآن ليس عن ذلك. كنا أيضا واحدة من الأماكن التي يمكن أن تحصل على الختم. لقد أعددنا المهام ، بما في ذلك الأسئلة. كانت الأسئلة بسيطة ، فيما يتعلق بالبرمجيات مفتوحة المصدر والأنظمة المدمجة. لكن الوحدة كانت مختلفة لدرجة أن البعض استاء من بساطة السؤال ، بينما دخل آخرون في ذهول. آخر ما ساعدنا بشكل طبيعي أو أخبرنا (أو اقترحنا google) عن أشياء مثل: "من هم المبدعون للغة C" أو "ما يشتهر به Linus Torvalds" أو "ما هو الفرق بين المعالج الدقيق ومتحكم دقيق" أو "ما هو المترجم المتقاطع". نتيجة لذلك ، لا أحد غادر دون الطباعة. بالمناسبة ، كان الأمر غريبًا بعض الشيء ، لكن الكثير من المشكوك فيه أنه تم فك رموزه بسهولة "جنو - جنو ليس يونكس". ربما أعدت لستالمان. :)
والثاني يتبع من الأول. كان هناك الترفيه لجمهور واسع جدا. على سبيل المثال ، أحضر هبر صندوقًا للرمل. صحيح ، لم يكن صندوق رمل محلي حيث يمكنك الحصول على دعوة لمقال ، ولكن كان من الممكن أن تغمرها الشهرة. حول الدعوات في صندوق الحماية ، لم أفكر في السؤال ، وربما أعطوها كما في صندوق رمل حقيقي. كان هناك نادي
لأجهزة الكمبيوتر القديمة ، يمكنك اللعب عليها ، وهو ما فعله الكثيرون. كانت هناك ماكينات القمار من
متحف ماكينات القمار السوفيتية . سبيربنك ، عرضت منطقة استرخاء ، كان من الممكن أيضا أن تلعب فيه بالفعل في بلاي ستيشن. كانت هناك كيكرز نعم لتكنولوجيا المعلومات والعديد من وسائل الترفيه الأخرى. لسوء الحظ ، كان علينا العمل ، لذلك أنا أتحدث فقط عما كان مرئيًا من جناحنا.
الشيء الثالث ، وربما كان الشيء الرئيسي ، هو أن المنظمين تمكنوا من جمع ممثلي جميع مجالاتها تقريبًا بدءًا من تطوير الويب والأنظمة الموزعة وحتى المضمنة. من المطورين والتقنيين الآخرين ، إلى الموارد البشرية والمهتمين بها فقط ، على سبيل المثال ، الألعاب (بعد كل شيء ، كان من الممكن التسلل إلى
روميرو نفسه) أو المتحمسين للـ DIY. كان هناك ضمان الجودة من
كوماكا كان
هناك فريق يؤدي من
حرق الرصاص . كانت هناك مجتمعات في مدن مختلفة (روستوف ، تفير ، كراسنودار). نتيجة لذلك ، كانت التقارير والمواقف مختلفة للغاية في الموضوع. على سبيل المثال ، يقع جناحنا بين مجتمع قادة الفرق Burning Lead وكشك
نادي St. Petersburg Petersburg لمديري تقنية المعلومات .
نتيجة لذلك ، اقترب أناس من خلفيات مختلفة تمامًا من جناحنا ، وكان هناك مطورو ويب وخدين dotnet ، وكان هناك JS والإيجابيات. ذكر أحدهم أنه كان يفعل شيئًا على AVR بينما كان لا يزال في الجامعة ، فقد قال أحدهم إنه كان يستمتع بـ RaPi أو Arduino. كان هناك الكثير من فراخ DotNet ، وكان الكثير منهم يتساءلون عما إذا كان لدينا برنامج
.NET Micro Framework . حتى أننا فكرنا بصعوبة في عدم جره إلينا. من المتوقع أن يكون هناك الكثير من الأسئلة حول الصدأ. باختصار ، في رأيي ، تمكن المنظمون من تطبيق فكرة المهرجان "اكتشف ما يعيشه الآخرون". بعد كل شيء ، كما هو الحال في أي مهرجان ، فإن الشيء الرئيسي هنا هو رؤية الآخرين وإظهار أنفسهم :).
نعم ، لا يتم إعطاء الصور هنا.
يمكن عرض بعض الصور ، بما في ذلك مع ولد حي فولوديا ، في مجموعتنا. حسنًا ، بالطبع ، في
مجموعة techtrain ، مجموعة من الصور عالية الجودة ، وعدوا بنشر المزيد.
إطلاق برامج سطح المكتب على متحكم
لقد كان تقريري نوعًا من تلخيص نتائج العديد من أعمالنا المتعلقة بإطلاق برامج سطح المكتب (
كيو تي ،
OpenCV ،
pjsip ). يهدف التقرير إلى الجمهور العام. بالنسبة إلى habr ، سأحاول تقليل الكثير من التفاصيل ، وبالنسبة للأمور الضرورية ، سأقدم الرابط أو الكلمات الرئيسية للبحث.
بادئ ذي بدء ، سأقدم نوعًا من جدول الأعمال. في الواقع ، سيكون هناك 3 أجزاء. أولاً ، سأشرح صعوبات نقل برامج سطح المكتب إلى متحكم دقيق ، وعلى طول الطريق سوف أشرح الفرق بين المتحكم الدقيق والمعالج الدقيق. سأجيب أيضًا على سؤال رئيسي ، على
سبيل المثال ، عنزة بيان ، لماذا تقوم بتشغيل برنامج سطح المكتب على متحكم ، وأخيراً ، سوف أخبرك كيف تمكنا من تقليل تكلفة نقل هذا البرنامج "المكتبي" إلى متحكم دقيق.
ما هو الفرق بين ميكروكنترولر والمعالجات الدقيقة
لذلك بدا أحد أسئلتنا حول السعي وربما تحت تأثير هذا
المقال على مبرمج نموذجي يخبرنا كيف يختلفون. أتفق مع كل شيء في المقالة ، لكننا سنحاول شرحها بكلماتنا الخاصة ولهجات أخرى عديدة.
ما هي وحدة التحكم الجزئي (MCU)؟ إذا نظرت إلى
ويكيبيديا ، يمكنك أن تفهم أن المتحكم هو نظام على شريحة ، أي أن المعالج والأجهزة الطرفية موجودة في شريحة واحدة.
مصطلح النظام على رقاقة (النظام على رقاقة ، شركة نفط الجنوب) هو مفهوم أوسع من متحكم. هذه هي الدائرة الإلكترونية المدمجة في شريحة واحدة ، والتي تحتوي على المعالج الدقيق (CPU) والأجهزة الطرفية. توجد في أي هاتف محمول شريحة يوجد بها مجموعة من الأجهزة الطرفية بالإضافة إلى العديد من مراكز المعالج. حتى الآن x86 معالجات تشمل الجسور وحتى GPU. لكنني لا أريد التركيز على تصنيف واضح ، ولكن على الميزات. يعلم الجميع أن الأنظمة على رقاقة:
- تستهلك أقل
- أرخص
- أقل إنتاجية
لا يعلم الجميع أنهم أكثر موثوقية عن طريق تقليل عدد جهات الاتصال وربما يكون نطاق درجات الحرارة أكبر.
يحتوي المتحكم الدقيق على تكامل أكبر ويتضمن أيضًا ذاكرة (RAM و ROM) ، والتي تتم الإشارة إليها أيضًا في المحيط. وفقا لذلك ، يتم الحفاظ على الخصائص ، تستهلك أقل ، تكلف أقل ، حتى أقل إنتاجية ، حتى أكثر موثوقية.
أريد أن أتحدث عن "حتى أقل إنتاجية" بمزيد من التفصيل. والحقيقة هي أنه من ناحية ، يمكنك أخذ أي وحدة المعالجة المركزية الحديثة للأغراض العامة أو شركة نفط الجنوب ورؤية أداء أكبر بكثير في ما يسمى
DMIPS . ولكن إذا كنت تفكر في سبب هذا الأداء؟ على سبيل المثال ، سأقدم ألعاب Quake and Doom (التي كان منشئها جون روميرو في المهرجان) ، لقد عملوا بشكل رائع على Pentium MMX. ولكن أداء الأنظمة القائمة على وحدة المعالجة المركزية هذه تم حظره بالفعل بواسطة ميكروكنترولر الراقية. أعني
STM32F7 أو حتى
STM32H7 . أي أنه بناءً على وحدات MCU هذه ، من الممكن تمامًا تشغيل تطبيقات مستوى Doom و Quake ، والتي توافق على أنها ليست سيئة على الإطلاق.
دعونا نتحدث عن ميزة أخرى من MCU - الذاكرة الداخلية. هي ، كما قلت ، تقع مباشرة على الرقاقة ، وبالتالي فهي سريعة جدًا. لكن لها ، بالطبع ، ليست كافية. لكن كم هو قليل؟ يحتوي متحكم STM32F769 على 2 ميغا بايت فلاش (ROM) و 512 + 16 + 4 كيلو بايت SRAM (RAM). بالإضافة إلى ذلك ، على سبيل المثال ،
تحتوي لوحة
STM32F769i-disco أيضًا على ذاكرة خارجية (ذاكرة SDRAM بسرعة 128 ميجابت وذاكرة فلاش SPI بسرعة 512 ميجابت) ، والتي يتم تناولها مباشرةً. أنا لا أتحدث حتى عن القدرة على توصيل بطاقة sd أو usb. حسنًا ، إذا كنت تتذكر العبارة الشهيرة "640 كيلو بايت يجب أن تكون كافية للجميع" ، فسيظهر السؤال المعقول - لماذا برمجيات سطح المكتب الحديثة شديدة الشراهة؟ على سبيل المثال ، تستهلك الآلة الحاسبة في نظام التشغيل windows 10 في وضع الخمول ما يصل إلى 16 ميغابايت من الذاكرة.
دعنا ننتقل إلى الميزة التالية من MCU ، وجود ROM. في الواقع ، تحتوي الأنظمة التي تحتوي على وحدة المعالجة المركزية (ROM) أيضًا على ذاكرة للقراءة فقط ؛ ويبدأ التنفيذ منها ، ويبدأ BIOS ، ولكن يتم تحميل بقية البرنامج على ذاكرة الوصول العشوائي وتنفيذه منها. في الأنظمة المضمّنة ، من المعتاد تنفيذ التعليمات البرمجية مباشرةً ، والتي تسمى eXecute-In-Place (XIP) ، Linux ، بالمناسبة ، يدعم هذا الوضع أيضًا ، لكن الشيء الرئيسي هو تحميل كل شيء في الذاكرة الرئيسية وحتى تنفيذه. القدرة على التنفيذ مباشرة من ROM مهمة لسببين: الأول هو بنية هارفارد ، والفصل بين ناقل الأوامر وناقل البيانات يسمح لك بزيادة سرعة تنفيذ البرنامج ؛ الثاني - حسنًا ، بطبيعة الحال ، يتم إهدار ذاكرة أقل ، لأنه لا يلزم نسخ مقطع رمز على الأقل في أي مكان آخر.
الميزة الرئيسية الأخرى في MCU هي عدم وجود وحدة نمطية مثل
MMU ، أي أن
المتحكمين الصغريين ليس لديهم دعم الأجهزة
لإدارة الذاكرة الافتراضية . في وحدة MCU ، حتى لو لم تكن جميعها تحتوي على
وحدات MPU ، يتم تشغيل الرمز في نفس مساحة العنوان ، لذلك يصعب تنظيم
مفترق كامل () . لكن شوكة () نفسها ، كما كتبنا في مقالة
"شوكة () مقابل vfork () "هي استدعاء نظام ثقيل إلى حد ما ، ووفقًا لوظائفه ، في كثير من الحالات ، يمكن استبداله بـ vfork () أو posix_spawn ().
بإيجاز ، كيف تختلف ميكروكنترولر عن المعالجات الدقيقة ، يمكننا أن نقول ما يلي:
من حيث الأجهزة:
- ميكروكنترولر لديها جميع الأجهزة الطرفية بما في ذلك الذاكرة
- ميكروكنترولر لديها ذاكرة أقل بكثير
- لا تحتوي Microcontrollers على وحدة MMU للأجهزة
- تتميز وحدات التحكم في المايكروكونترولر بسرعة أقل على مدار الساعة وقد تحتوي على بنية مختلفة للمعالجات (هندسة الهدايا)
من حيث خصائص المستهلك:
- ميكروكنترولر تستهلك طاقة أقل ، ويمكن أن تعمل على البطارية
- ميكروكنترولر أرخص
- ميكروكنترولر هي أكثر موثوقية
- ميكروكنترولر هي أقل إنتاجية
لماذا تشغيل برنامج سطح المكتب على متحكم
لذلك ، تعد وحدات MCU أقل إنتاجية وكان الغرض منها أصلاً (والمقصود) لمهام التحكم. فلماذا تشغيل البرامج المصممة لفئة أخرى من الأنظمة عليها؟ حسنًا ، حتى لو كانت قوتهم كافية بالفعل لمثل هذه المهام ، ولكن يمكن حل هذه المهام بالطريقة التقليدية لوحدات التحكم الدقيقة. وهذا هو ، لاستخدام مختلف RTOS الصغيرة أو كتابة التعليمات البرمجية من نقطة الصفر ، ما يسمى المعدن العاري. هناك إجابة واضحة ، في البداية كانت مهام الإدارة بسيطة للغاية ، والآن تنمو متطلبات الوظيفة بسرعة. حتى من بعض المصباح الخفيف الذي يتوقعون التحكم فيه عن طريق الإنترنت ، لا أتحدث عن الغلاية ، فمن المحتمل أن يختاروا قريبًا تركيبة الشاي وفقًا لمزاج المالك وتسخين الكمية المثلى من الماء إلى درجة الحرارة المثلى من أجل تحسين الوضع البيئي. :)
لذلك ، ليس من المستغرب أن تبذل باستمرار محاولات لاستخدام البرنامج الذي تم تطويره بالفعل في ميكروكنترولر. على سبيل المثال ، تعتبر ucLinux واحدة من أولى المحاولات المعروفة والمعروفة على نطاق واسع لتشغيل Linux على منصات صغيرة ، والآن أصبح وضع NOMMU هو Linux بشكل أساسي. كانت الفكرة هي تشغيل Linux على الأنظمة الأساسية للأجهزة بدون وحدة MMU ، لكننا اكتشفنا أن هذا أحد الاختلافات الرئيسية بين وحدة المعالجة المركزية ووحدة MCU.
باختصار ، مزايا استخدام البرامج الجاهزة:
- تقليل تكاليف التطوير
- وقت أقصر للسوق
- الحد من الأخطاء في الكود. البرامج الجاهزة أكثر موثوقية.
كيف نفعل ذلك في Embox
يمكنك أن تتحدث هنا لفترة طويلة جدًا ، ولكن مرة أخرى سأحاول تحديد النقاط الرئيسية في أطروحة بطريقة يمكن الوصول إليها.
أول واحد. تستخدم Embox نظام بناء Mybuild مع لغته الخاصة لوصف الوحدات والأنظمة ، وقد كتبنا عن ذلك في المقالة
"Mybuild - نظام بناء للتطبيقات المعيارية" . يتيح لك نظام التصميم هذا عدم تضمين أي شيء غير ضروري في الصورة ، أو تضمين ما هو مطلوب فقط. يمكنك ضبط خصائص النظام بالفعل ، على سبيل المثال ، لتشغيل PJSIP على STM32F7 ، حددنا عدد حزم الإيثرنت بـ 16 من خلال كتابة سطر في ملف التكوين للنظام
include embox.net.skbuff(amount_skb=16)
يقوم Mybuild بتحليل التبعيات ويولد العديد من الأعمال الفنية ، بما في ذلك ملفات الرأس والبرامج النصية للرابط و Makefiles. كل هذا يسمح بتقليل مقدار الذاكرة المطلوبة بشكل كبير وعدم تضمين الأجزاء التي لم يتم استخدامها على الإطلاق.
والثاني. من الواضح ، يجب أن يدعم Embox POSIX وهو مدعوم. علاوة على ذلك ، قمنا بتنفيذ مكتبتنا القياسية الخاصة ، لأنه يجب أيضًا إعادة بنائها اعتمادًا على تكوين النظام.
الثالث. ربط ثابت. لتجنب المشاكل المتعلقة بمساحة عنوان واحدة وتقليل حجم الصورة وتضمين الأجزاء المطلوبة فقط ، نستخدم رابطًا ثابتًا. في مراحل مختلفة ، يتم تجميع أجزاء مختلفة من النظام ، ولكن في النهاية يتم ربط كل شيء (النواة وجميع النظم الفرعية والمكتبات والتطبيقات) في صورة واحدة. لديه كل المعلومات حول جميع الشخصيات في الصورة. وعلى الرغم من أن للوهلة الأولى لدينا العديد من التطبيقات التي تحتوي على نقاط إدخال int الرئيسية (..) القياسية ، ولكن في الصورة الناتجة ، ستكون هذه أحرف مختلفة ستتوفر على النظام من سطر الأوامر.
الرابعة. كان علينا تطبيق وقت تشغيل لـ C ++ ، نظرًا لأن العديد من التطبيقات والمكتبات الشعبية تستخدم المزايا.
الخامسة. أضفنا القدرة على استخدام نظام البناء
./configure; make; make install
بعد تنزيل المصدر من مكان ما وتطبيق التصحيحات اللازمة.
استنتاج
اليوم ، نمت المتطلبات الوظيفية للأنظمة التي تم تصنيعها مسبقًا على المتحكمات الدقيقة بشكل كبير. من المتوقع أن تكون أنظمة التحكم متوافقة مع الأنظمة العالمية. نمت خصائص المتحكمات الدقيقة أيضًا بشكل كبير ، مما يسمح لك بتشغيل البرنامج عليها مع الوظيفة المقابلة. من الناحية التاريخية ، تمت كتابة برامج أجهزة التحكم الدقيقة لأغراض مهمة ، ولكن مع زيادة المتطلبات الوظيفية ، من الضروري تطبيق نُهج من عالم الأنظمة العالمية التي يمكن أن تزيد بشكل كبير من موثوقية البرنامج ، أي إعادة استخدام الوحدات النمطية ، والتطوير الموزع. البرنامج العالمي ، على الرغم من أنه لا يأخذ في الاعتبار ميزات الأنظمة المدمجة ، ولكن لديه وظائف أكبر بكثير ويعمل بشكل جيد. لذلك ، فإن استخدام برامج سطح المكتب على ميكروكنترولر يعطي مكسب. في الواقع ، من ناحية ، يمكنك استخدام منصة أجهزة أرخص وأكثر موثوقية وأقل استهلاكًا ، ومن ناحية أخرى ، فإن تكلفة تطوير مثل هذه الأنظمة تقل بشكل كبير.