كيف يمكنني الحصول على قائمة لغة التجمع من رسومات اردوينو بلدي على ويندوز؟

StackOverflow https://stackoverflow.com/questions/919781

  •  06-09-2019
  •  | 
  •  

سؤال

أود أن أكون قادرا على رؤية قائمة لغة التجمع من رسومات اردوينو بلدي. كيف يمكنني تحقيق ذلك؟

تحديث: أقوم بتشغيل برنامج 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:

  1. تحميل (وإعادة تسمية) اردوينو ويندوز سطر الأوامر خط الدفعة في الدليل الذي يحتوي على رسم الخاص بك ( .pde ملف)
  2. قم بإعداد متغيرات البيئة المطلوبة كما هو محدد في الصفحة المرتبطة أعلاه
  3. يضيف -S إلى abuild_gcc_opts متغير في abuild.bat (خط 158)
  4. يركض abuild -r -c <pde_filename>
  5. نتوقع الحصول على التحذيرات والأخطاء التالية، والتي يمكنك تجاهلها:

    ... 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>
...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top