جدول المحتويات:

Orange PI HowTo: Compile Sunxi Tool لنظام التشغيل Windows تحت Windows: 14 خطوة (بالصور)
Orange PI HowTo: Compile Sunxi Tool لنظام التشغيل Windows تحت Windows: 14 خطوة (بالصور)

فيديو: Orange PI HowTo: Compile Sunxi Tool لنظام التشغيل Windows تحت Windows: 14 خطوة (بالصور)

فيديو: Orange PI HowTo: Compile Sunxi Tool لنظام التشغيل Windows تحت Windows: 14 خطوة (بالصور)
فيديو: Libre Computer Development Boards S905X, RK3328, H2+/H3/H5 form-factor compatible with Raspberry Pi 2024, شهر نوفمبر
Anonim
Orange PI HowTo: Compile Sunxi Tool لنظام التشغيل Windows تحت Windows
Orange PI HowTo: Compile Sunxi Tool لنظام التشغيل Windows تحت Windows

الشروط المسبقة:

سوف تحتاج

  1. جهاز كمبيوتر (سطح المكتب) يعمل بنظام Windows.
  2. اتصال بالإنترنت.
  3. لوحة Orange PI.

الأخير اختياري ، لكنني متأكد من أنه لديك بالفعل. وإلا فلن تقرأ هذا الدليل.

عندما تشتري الكمبيوتر ذو اللوحة الواحدة Orange PI ، فإنه يبقى مجرد قطعة من المعدن الميت حتى يتم تكوينه بشكل صحيح. وملف التكوين الرئيسي الخاص به: "script.bin" هو المفتاح الأول لإحيائه. يوجد هذا الملف في قسم التمهيد لبطاقة SD القابلة للتمهيد. ولحسن حظنا ، في معظم توزيعات Linux من الموقع الرسمي (https://www.orangepi.org/downloadresources/) هذا القسم هو FAT32 ويمكن رؤيته بسهولة بواسطة أي كمبيوتر يعمل بنظام Windows. إنه يبسط الأمور حقًا ، نظرًا لأنه لا توجد طريقة موثوقة للكتابة في أقسام Linux ext2 من نظام Windows.

من سوء حظنا أن ملف التكوين script.bin يحتوي على تنسيق ثنائي غير ملائم تمامًا للتحرير البشري. يحتاج المرء إلى نوع من الأدوات البرمجية لفك تشفيره وإعادة تشفيره بعد إجراء التعديلات اللازمة. ومجموعة الأدوات هذه موجودة. إنها أدوات SUNXI سيئة السمعة. إن الذبابة في المرهم هي أن الغرض منه هو العمل في نظام Linux وعلينا إما الاحتفاظ بآلة Linux مخصصة لاستخدام أدوات sunxi فقط ، أو لإيجاد طريقة لتجميعها للنوافذ.

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

الخطوة 1: قم بتنزيل Sunxi-tools

تنزيل أدوات Sunxi
تنزيل أدوات Sunxi
تنزيل أدوات Sunxi
تنزيل أدوات Sunxi

احصل على أحدث إصدار (أو ضروري) من رمز مصدر أدوات sunxi. انتقل إلى عنوان URL: https://github.com/linux-sunxi/sunxi-tools/releases واختر التنزيل كأرشيف مضغوط.

الخطوة 2: قم بفك ضغط رمز المصدر

قم بفك ضغط الرمز المصدر
قم بفك ضغط الرمز المصدر

بمجرد انتهاء التنزيل ، قم بفك ضغط رمز المصدر إلى المجلد الذي تختاره. (كذلك سأفترض أن هذا المجلد هو c: / sunxitools / ، لذا استبدل هذا المسار بالمسار الخاص بك).

الخطوة 3: قم بتنزيل Code:: block

تنزيل Code:: block
تنزيل Code:: block

إذا كان لديك نسخة مثبتة من بعض مترجم c ++ التشغيلي لنظام التشغيل windows. وإذا كنت تعرف كيفية استخدامه ، فيمكنك المتابعة مباشرة إلى الخطوة 3. يجب أن يحصل الآخرون على مترجم c ++ مناسب و shell (IDE) لاستخدامه بشكل مريح. اختيار الألغام هو code:: block for Windows جنبًا إلى جنب مع MinGW toolchain المثبت مسبقًا. يمكنك الحصول عليه من هنا:

قم بتنزيله وتثبيته.

الخطوة 4: اختبر IDE الخاص بك

اختبر IDE الخاص بك
اختبر IDE الخاص بك

لاختبار ما إذا كانت الأمور تسير على ما يرام ، ابدأ عمليات حظر الرموز ، وانقر على "إنشاء مشروع جديد" ، واختر "تطبيق وحدة التحكم" ، واختر إما c أو c ++ ، واكتب عنوان مشروع السداد ، واحتفظ بالإعدادات الافتراضية كما هي في النافذة التالية وانقر على "إنهاء ".

الخطوة 5: إكمال الاختبار

اختبار كامل
اختبار كامل

ثم انقر فوق المثلث الأخضر في اللوحة العلوية لـ IDE أو استخدم Build-> Run menu point. إذا سارت الأمور على ما يرام ، سترى رسالة من تطبيق "Hello world" المُنشأ تلقائيًا في نافذة "DOS" السوداء.

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

الخطوة السادسة: إنشاء مشروع جديد

إنشاء مشروع جديد
إنشاء مشروع جديد
إنشاء مشروع جديد
إنشاء مشروع جديد
إنشاء مشروع جديد
إنشاء مشروع جديد
إنشاء مشروع جديد
إنشاء مشروع جديد

الآن يجب أن يكون لديك مجموعة أدوات مبرمج C / C ++ عاملة وأكواد مصادر sunxi-tools التي تم فك حزمها في المجلد c: / sunxitools / على جهاز الكمبيوتر الخاص بك. حان الوقت لتجميع المشروع. إنشاء مشروع جديد في IDE الخاص بك. اختر مشروع C العادي (وليس c ++) من النوع "تطبيق وحدة التحكم".

تأكد من أنك تقوم بإنشاء مشروع في المجلد c: / sunxitools / وليس في مكان آخر. (تميل كتل الأكواد البرمجية على سبيل المثال إلى إنشاء مجلد فرعي يحمل نفس اسم المشروع. لذلك إذا قمت بتسمية مشروعك ، قل "اختبار" ، وحاول وضعه في c: / sunxitools / ، فقد ينتهي بك الأمر مع اختفاء المشروع إلى c: / sunxitools / test / إذا لم تكن منتبهًا بما فيه الكفاية.) تحتوي أدوات Sunxi على العديد من الأدوات المساعدة ، ولكن لغرضنا سنحتاج إلى واحد فقط: ما يسمى الأداة المساعدة "fexc".

الخطوة 7: إضافة ملفات إلى المشروع

أضف ملفات إلى المشروع
أضف ملفات إلى المشروع

الأداة المساعدة "fexc" هي المسؤولة عن تحويل script.bin إلى تنسيق نص والتحويل الخلفي إلى ملف ثنائي. من الضروري أن يكون الملف التنفيذي لهذه الأداة المساعدة يحمل الاسم "fexc.exe" ، لذلك من الجيد أن تسمي مشروعك باسم "fexc". ومع ذلك ، يمكنك استخدام أي اسم آخر للمشروع ، حيث يمكنك دائمًا إعادة تسمية الملف القابل للتنفيذ بعد التجميع ، أو إما يمكنك اختيار "مشروع-> خصائص" من القائمة المنسدلة العلوية وفي النافذة التي تظهر انقر فوق علامة التبويب "إنشاء الأهداف" ، وتعديل حقل "اسم ملف الإخراج" هناك لتجاوز الاسم القابل للتنفيذ.

إلى مشروعك الذي تم إنشاؤه تلقائيًا ، يجب إضافة خمسة ملفات مصدر فقط:

  • fexc.c
  • script.c
  • script_bin.c
  • script_fex.c
  • script_uboot.c

وسبعة ملفات رأس:

  • list.h (انقلها من c: / sunxitools / include / folder إلى c: / sunxitools / folder)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • الإصدار. h

تأكد من استبعاد main.c المُنشأ تلقائيًا من المشروع ، لأن fexc.c يحتوي بالفعل على وظيفة "int main" فيه. (تذكر أن أي برنامج يجب أن يكون له وظيفة رئيسية واحدة فقط؟).

جميع ملفات التعليمات البرمجية المصدر الضرورية موجودة بالفعل في المجلد الفرعي ، حيث قمت بفك حزم أكواد المصدر إلى. تستحق ملفات الرأس زوجًا من الكلمات ، حيث يمكن الحصول عليها. "list.h" - عادة ما تكون في المجلد الفرعي "التضمين" لمجموعة أكواد المصدر التي تم فك حزمها. "version.h" - فقط قم بإنشائه بنفسك. ضع هناك سلسلة مثل:

#define الإصدار "Win32"

ثم احفظ وأغلق الملف. (يمكنك تزيينه بـ # تعريف و # ifdef إذا كنت تريد.)

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

الخطوة 8: اطلب من دول مجلس التعاون الخليجي اتباع معيار اللغة ISO C لعام 1999

احصل على دول مجلس التعاون الخليجي التي تتبع معيار اللغة ISO C لعام 1999
احصل على دول مجلس التعاون الخليجي التي تتبع معيار اللغة ISO C لعام 1999

لكي لا يشكو المترجم من أسلوب البرمجة المجاني للغاية ، قم بتعيين معيار "с99" الخاص بالتجميع. في قوالب الكود ، انتقل إلى قائمة "المشروع -> خيارات الإنشاء" وفي "إعدادات المترجم -> علامات المترجم" حدد مربع الاختيار "اجعل مجلس التعاون الخليجي يتبع معيار لغة ISO C لعام 1999". أو يمكنك فقط إضافة "-std = c99" إلى سلسلة خيارات المترجم.

الخطوة 9: ابحث عن التبعية المفقودة

ابحث عن التبعية المفقودة
ابحث عن التبعية المفقودة

التبعية المفقودة هي ملف "mman.h" - رأس نوع من إدارة ذاكرة لينكس. لا يحتوي Windows C أصلاً على مثل هذا الملف ، ولكن لحسن الحظ يوجد منفذ windows منه. انتقل إلى https://github.com/witwall/mman-win32 لنظام التشغيل windows. قم بتنزيل لقطة من مستودع git.

الخطوة 10: فك حزمة Mman

فك ممان
فك ممان

قم بفك ضغط ملفات mman.c و mman.h ، وضعها في المجلد c: / sunxitools \.

الخطوة 11: وأضفهم إلى المشروع

وإضافتهم إلى المشروع
وإضافتهم إلى المشروع

الخطوة 12: المسار الصحيح

المسار الصحيح
المسار الصحيح

وفي ملف "fex.c" سطر raplece:

#يشمل

الى

# تضمين "mman.h"

في هذه الخطوة ، يجب ألا يشكو المترجم الخاص بك من أي شيء وستحصل على الانتظار الطويل fexc.exe كإخراج. لا تكن سعيدا في وقت مبكر جدا. الأداة لا تزال لا تعمل بشكل كامل. يمكنك التأكد من ذلك عن طريق فك تشفير بعض ملفات script.bin الصالحة في النموذج النصي - ملف script.fex مع ما يترتب على ذلك من تشفير ملف script.fex مرة أخرى في script.bin. قد تلاحظ أن حجم script.bin الناتج يختلف قليلاً عن حجم script.bin الأصلي. وإذا حاولت فك تشفير النتيجة مرة أخرى فسوف تفشل. لن يعمل Orange PI مع هذا script.bin. للحصول على الأداة الوظيفية ، يتعين علينا تفريغ قنبلة رمز ، وضعها شخص ما في رمز مصدر أدوات sunxi. ستكون خطوتنا التالية.

الخطوة 13: طرد الأرواح الشريرة

طرد الارواح الشريرة
طرد الارواح الشريرة

من أجل تفريغ قنبلة الكود ، افتح ملف كود fexc.c وابحث عن سلسلة نصية للمحتوى التالي:

else if ((out = open (filename، O_WRONLY | O_CREAT | O_TRUNC، 0666)) <0) {

فقط استبدلها بالسلسلة التالية:

else if ((out = open (filename، O_WRONLY | O_CREAT | O_TRUNC | O_BINARY، 512)) <0) {

إذا لم تكن الأرقام الشريرة "666" في السلسلة الأولى ، أعتقد أن المبرمج قد نسي للتو استخدام علامة O_BINARY. لكن رقم الوحش يوضح نواياه بشفافية. اذهب إلى الشكل ، ما مدى براعته: نظرًا للاختلاف الدقيق في كيفية معالجة الملفات في نظامي التشغيل Windows و Linux ، فإن القنبلة ليس لها أي تأثير عندما يتم تجميع الأداة المساعدة واستخدامها في نظام Linux. لكنها تدمر كل شيء عند استخدام الأداة المساعدة تحت Windows.

بعد نزع سلاح القنبلة ، يمكنك أخيرًا تجميع الأداة المساعدة fexc واستخدامها بأمان على كمبيوتر سطح المكتب الذي يعمل بنظام Windows.

الخطوة 14: الملاحظات

ملحوظات
ملحوظات

1) لاستخدام الأداة المساعدة fexc بشكل مريح ، يجب أن تحصل على ملفين دفعي:

bin2fex.bat - و - fex2bin.bat.

يمكنك الحصول عليها من بعض إنشاءات fexc.exe لنظام التشغيل Windows ، أو يمكنك إما كتابتها بنفسك:

  • يجب أن يحتوي bin2fex.bat على "fexc -I bin -O fex script.bin script.fex"
  • يجب أن يحتوي fex2bin.bat على "fexc -O bin -I fex script.fex script.bin"

2) إذا كان من الصعب العثور على مدير mman لنظام التشغيل Windows ، فيمكن للمرء تجنب استخدامه على الإطلاق. ومع ذلك ، يتطلب الأمر مزيدًا من التحرير لملف fexc.c ويتطلب بعض المعرفة على الأقل بـ c. من أجل راحتك ، أشارك رمز المصدر المحرر لـ fexc من أدوات sunxi-tools v1.4 الخالية من التبعية إلى mman.h جنبًا إلى جنب مع ملف مشروع قوالب الكود وعينة script.bin من بعض pi البرتقالي. يمكنك تنزيل fexc_nomman.zip

3) من الممكن أنه في الإصدارات اللاحقة من أدوات sunxi ستضيف بعض التبعيات. لا تتردد في العثور عليها عبر الإنترنت وإضافتها إلى مشروع التجميع الخاص بك.

5) أخيرًا ، إليك الإصدار المترجم مسبقًا من fexc.exe لـ Win32:

fexc_nomman.zip

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

4) "Orange PI" ، "Code:: Blocks" ، "Windows" ، "Linux" ، "Sunxi-Tools" ، "Allwinner" ، إلخ … هي علامات تجارية مراسلة لأصحابها المعنيين.

5) إذا اشتكى المترجم من عدم العثور على وظائف mman ، مثل:

إشارة غير محددة إلى "_imp_mmap"

كن على علم بأن تعريف عشاق مجتمع تطوير mman قد نسوا أن الكود يمكن تجميعه ليس فقط كمكتبة dll. يمكن أن تكون أيضًا مكتبة ثابتة أو رمزًا مستقلاً كما هو الحال لدينا هنا. لإصلاح المشكلة ، قم بتحرير ملف "mman.h" على النحو التالي:

أ) ابحث عن السلاسل:

# إذا تم تعريفه (MMAN_LIBRARY)

#define MMANSHARED_EXPORT _declspec (dllexport) #else #define MMANSHARED_EXPORT _declspec (dllimport) #endif

ب) أضف السلسلة

#define MMANSHARED_EXPORT

أسفل السلاسل الموجودة في الخطوة السابقة

موصى به: