كيف يمكنني الحصول على قائمة لغة التجمع من رسومات اردوينو بلدي على ويندوز؟
سؤال
أود أن أكون قادرا على رؤية قائمة لغة التجمع من رسومات اردوينو بلدي. كيف يمكنني تحقيق ذلك؟
تحديث: أقوم بتشغيل برنامج Arduino على جهاز Windows.
المحلول
طريقة واحدة للقيام بذلك هو للاستخدام avr-objdump
على ال .elf
ملف تم إنشاؤه بواسطة Build. على سبيل المثال، على OS XI يمكن القيام بذلك:
$ CD ~ / Arduino-0015 / أمثلة / رقمي / وميض / صفيح $ avr-objdump -d blink.elf
(قد يكون مسارك على Windows مختلفا، من الواضح.) هذا ينتج تفكيك الكود، والجزء الذي سيبدو شيئا مثل هذا:
0000013A.u003Cmain> : 13A: 0e 94 3E 01 دعوة 0x27cu003Cinit> 13E: 0e 94 97 00 اتصل 0x12eu003Csetup> 142: 0e 94 80 00 اتصل 0x100u003Cloop> 146: FD CF RJMP. -6؛ 0x142.u003Cmain+0x8>
نصائح أخرى
إذا كنت تستخدم Linux، فيمكنك اتباعها هذا البرنامج التعليمي حول كيفية ترجمة لاردوينو دون IDE.
بمجرد القيام بذلك، يمكنك الحصول على قائمة التجمع عن طريق تشغيل دول مجلس التعاون الخليجي مع علم -S.
ستوفر خطوات (Hacky) التالية قوائم لغة التجميع من رسومات Arduino والمكتبات المرتبطة بها على Windows:
- تحميل (وإعادة تسمية) اردوينو ويندوز سطر الأوامر خط الدفعة في الدليل الذي يحتوي على رسم الخاص بك (
.pde
ملف) - قم بإعداد متغيرات البيئة المطلوبة كما هو محدد في الصفحة المرتبطة أعلاه
- يضيف
-S
إلىabuild_gcc_opts
متغير فيabuild.bat
(خط 158) - يركض
abuild -r -c <pde_filename>
نتوقع الحصول على التحذيرات والأخطاء التالية، والتي يمكنك تجاهلها:
... warning: #warning "This file has been moved to <util/delay.h>."
.\obj\<pde_filename>.cpp.o: file format not recognized: treating as linker script
.\obj\<pde_filename>.cpp.o:1: syntax error
يمكن العثور على قوائم لغة التجميع في .o
الملفات الموجودة في المنشأة obj
الدليل. على سبيل المثال، قائمة رسم نفسها obj\<pde_filename>.cpp.o
إظهار علامة -s (not s) رمز C وكذلك تعرف كقائمة مختلطة:
Linux: (.arduino / secretences.txt: delete_target_folder = خطأ)
$ cd /tmp/buildxxxx.tmp
$ avr-objdump -dS Blink.cpp.elf
int main(void)
{
init();
2f4: 8a df rcall .-236 ; 0x20a <init>
...