سؤال

أنا مهتم بالتجميع المتقاطع لنواة Linux لهدف ARM على مضيف x86.هل هناك بعض الممارسات الجيدة التي توصي بها؟ما هي أفضل مجموعة الترجمة المتقاطعة في رأيك؟هل قمت بتسوية بيئة ترجمة مشتركة مخصصة؟إذا كانت الإجابة بنعم، ما هي النصائح التي لديك؟هل هي فكرة جيدة؟

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

المحلول

وهناك نهجان لقد استعملت لأدوات ARM / لينكس. هو أسهل لتحميل سلسلة أداة بنيت قبل مباشرة.
على برو : لانها تعمل فقط، ويمكنك الحصول على مع الجزء مثيرة للاهتمام من المشروع
على كون : لكنت عالقة مع أيهما نسخة من دول مجلس التعاون الخليجي / بينوتيلس / LIBC أنها التقطت

إذا الأمور في وقت لاحق لك، وتحقق من crosstool-نغ . هذا المشروع هو عبارة عن أداة التكوين مشابهة لتطبيق التكوين نواة لينكس. تعيين أي إصدارات دول مجلس التعاون الخليجي، بينوتيلس، LIBC (GNU أو uCLibc)، خيوط، ونواة لينكس لبناء وcrosstool-نغ بالباقي (أي بتحميل كرات القار، بتكوين الأدوات، ويبني لهم).
على برو : لتحصل بالضبط ما الذي حددته أثناء تكوين
على كون : لتحصل بالضبط ما الذي حددته أثناء تكوين

وهذا يعني أنك تأخذ على المسؤولية الكاملة لاختيار المترجم / binutil / LIBC ومن الميزات المرتبطة / القصور / البق. أيضا، كما ذكر في التعليقات، هناك بعض "الألم" تشارك في اختيار إصدارات بينوتيلس، C مكتبة الخ وليس كل المجموعات تعمل بالضرورة معا أو حتى بناء.

ونهج هجين يمكن للمرء أن يكون لبدء بالأدوات بنيت قبل واستبدالها في وقت لاحق مع حل مخصص عبر crosstool-نغ إذا لزم الأمر.

على تحديث : في الجواب تستخدم في الأصل أدوات CodeSourcery كما مثال على سلسلة أداة بنيت قبل. وكانت أدوات CodeSourcery لARM مجانية ل تحميل من منتور جرافيكس ، ولكنها تسمى الآن Sourcery CodeBench ويجب أن يكون شراؤها من شركة مينتور جرافيكس العالمية. خيارات أخرى تشمل الآن Linaro وكذلك توزيع أدوات محددة من الروبوت، أوبونتو، وغيرها.

نصائح أخرى

ويمكنني استخدام toolchain emdebian لتجميع الاشياء لأجهزة ARM لي أن ليست سعيدة يجري تجميع أصلا في الموارد المتاحة صغيرة (/ لي يبرز على نحو فاضح في النواة). حزمة الرئيسي هو gcc-4.X-arm-linux-gnueabi (X = 1،2،3)، ويوفر suffixed بشكل مناسب دول مجلس التعاون الخليجي / حزب الشعب الكمبودي / دينار / الخ الأوامر. I هذا إضافة إلى بلدي sources.list:

deb http://www.emdebian.org/debian/ unstable main

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

ولقد استعملت scratchbox بينما تجريب التطبيقات بناء لمايمو (نوكيا N810)، والذي يستخدم ARM المعالج. ويفترض ان لا يقتصر scratchbox للتنمية مايمو.

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

1) في رأيي، بناء سلسلة الأدوات الخاصة بك هو الأفضل.سينتهي بك الأمر بالسيطرة الصارمة على كل شيء، بالإضافة إلى أنه إذا كنت جديدًا في نظام التشغيل Linux المدمج، فهذه تجربة تعليمية رائعة.

2) لا تستخدم سلسلة أدوات تجارية.حتى إذا كنت لا تريد أن تأخذ الوقت الكافي لبناء منتجك الخاص، فهناك بدائل مجانية متاحة.

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

إذا لم تتمكن من الحصول على مصحح أخطاء jtag وكنت تعمل في النواة، فاستخدم جهاز VM للقيام بذلك، أو usermode linux، أو vmware..إلخ.سيتم تصحيح التعليمات البرمجية الخاصة بك على x86..سيكون نقله إلى هدف ذراعك قصة مختلفة، لكنها طريقة أرخص للتخلص من بعض الأخطاء.

إذا كنت تقوم بنقل أداة تحميل التشغيل، فاستخدم uboot.بالطبع، إذا كنت تستخدم نظامًا أساسيًا مرجعيًا، فمن الأفضل أن تستخدم ما يقدمونه مع BSP.

أتمنى أن يساعد ذلك.

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

وأيضا، فإن العديد من مستخدميها القائمة (أي. جزءا لا يتجزأ من توزيعات الموجه) يستهدفون أيضا ARM.

إذا كنت تستخدم جنتو، والحصول على toolchain عبر تجميع سهلا كما هو

$ emerge crossdev
$ crossdev -t $ARCH-$VENDOR-$OS-$LIBC

وحيث ARCH هو arm أو armeb، البائع هو unknown أو softfloat، OS هو linux، وLIBC هو gnu أو uclibc.

إذا كل ما تريد هو مترجم (ورابط) للنواة، الجزء LIBC غير ذي صلة، ويمكنك استخدام -s1 / --stage1 لإبلاغ crossdev التي تحتاجها binutils وgcc فقط.

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

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