سؤال

أقوم بالبحث عن شركة كدربة تدريبية. كان لدي بعض الأسئلة في استخدام Mono ، تنفيذ النظام الأساسي Cross لمنصة .NET. شركتي تصمم الأجهزة و sotware.

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

لقد نظرت بالفعل إلى ما يمكن أن يفعله مونو (ولا يمكنني فعله بعد). الآن وصلت إلى السؤال المضمن. لقد ضاعت نوعًا ما في القصة في كيفية بناء Linux المدمج.

رأيت بعض القصص حيث أخذوا بعض مكتبات Linux القياسية لصنع Linux المضمنة على الجهاز. رأيت أيضًا أن هناك توزيعات خاصة Linux مثل Uclinux (AKA µclinux). إذن ما هو الفرق ، أم هو نفسه. كيف تبدو العملية عادةً عندما أرغب في استخدام Linux المدمج على الهدف؟

حسنًا ، من الجزء الأحادي ، لذلك أريد أن أكون قادرًا على تشغيل C# في Linux المدمج. هنا في الغالب يستخدمون Uclinux ، هل يمكنني استخدام Mono لهذا؟ نظرت إلى بعض المواصفات ، وليس لديهم وحدة لإدارة الذاكرة (MMU).

لذلك أنا في الأساس أنا قلق بشأن عدم وجود MMU. منذ كيف سيكون رد فعل جامع القمامة؟

آمل ألا أعطي حمولة زائدة من الأسئلة ،

التحيات ، وأشكرك بالفعل على قراءتها ،

بنيامين

هل كانت مفيدة؟

المحلول

لا يعتمد جامع القمامة على MMU ، على الرغم من أنه قد يكون أكثر كفاءة إذا كان هناك واحد.

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

أما بالنسبة للتعليقات الأخرى ، فإن AOT و MKBundle غير ذي صلة إلى حد كبير بما تحتاجه. ما تريده حقًا هو تقليل البصمة أحادية لتناسب ما يسمح به جهازك ، انظر http://www.mono-project.com/small_footprint لمزيد من المعلومات.

إذا كان الأمر أنا اتخذ القرار ، فسأختار دائمًا Linux ذراعًا عاديًا على Uclinux لتشغيل برامج معقدة مثل Mono أو أي برنامج تحتاج إلى تشغيله على Mono.

نصائح أخرى

إذا لم يكن لدى أجهزتك MMU ، فقد ترغب في استخدام المصدر المفتوح لـ Microsoft .NET Micro Framework. إنه محدود أكثر بكثير من .NET/MONO ، وهو مترجم ، وليس JIT ، ولكن يمكن تشغيله كثير أجهزة محدودة أكثر.

يمكن أن تكون Mono محدودة بقدر ما تريد أن تكون. إذا كنت تستخدم جهازًا لا يحتوي على MMU ، فسأبحث عنه في وقت مبكر تجميع.

mkbundle قد تعمل أيضًا أيضًا ، لكنني لست متأكدًا من أنه يمكن أن يفعل ذلك بدون MMU. ومع ذلك ، إذا كنت تستخدم AOT ، فستستخدم MKBundle أولاً لسحب جميع التبعيات.

إذا كانت شركتك ترغب في استهداف ألواح Linux المضمنة عبر Mono ، وكل ما هو مطلوب هو نقل بعض التطبيقات التي تعمل بالفعل على كمبيوتر Windows على سطح المكتب ، فمن المحتمل أن تواجه مشكلات قليلة جدًا. ولكن إذا كنت ترغب في التحدث إلى بعض IO و I2C و SPI و 1-wire وغيرها من الأجهزة الطرفية ، فستواجه مشكلة في الوصول إليها عبر Mono وربما يتعين عليك صنع بعض المترجم (ربما مكتوب في GCC) بوابة بين الأجهزة الحقيقية وتطبيق أحادي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top