سؤال

أنا أستخدم uCsim لإجراء اختبار الوحدة على مشاريع SDCC.

في uCsim/S51، يمكنك محاكاة حركة مرور الخط التسلسلي عن طريق

s51 -s /dev/tty PROGRAM.ihx

أو

s51 -S in=testdata.in,out=testdata.out PROGRAM.ihx

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

s51 -S in=<(cat testdata.in),out=testdata.out PROGRAM.ihx

الآن، كيف يمكنني التحكم في إخراج البث بالباود من الأداة المساعدة "cat"؟أم أن هناك أداة مساعدة أخرى يمكنني استخدامها لإخراج البتات بمعدل معين؟

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

المحلول

الإجابة 1 غير صحيح.لا أحد "تغذي" محتوى الملف إلى خط التسلسل.يقرأ UCSIM من الملف عندما يكون ذلك ضروريا.يتم التحكم في معدل الباود من قبل SFRS من Timer و UART.عند محاكاة العدد الضروري للقراد، سيتم قراءة بايت واحدة من الملف.

نصائح أخرى

المعدل الذي تقوم بتغذية ملف in= به ليس هو الطريقة التي يتم بها تعيين المعدل.ليس لدى جهاز المحاكاة أي طريقة لمعرفة متى قام تطبيقك بتهيئة المنفذ التسلسلي ويكون جاهزًا للقراءة.من المحتمل أنك تفتقد البيانات لأن جهاز المحاكاة يقوم بتغذية المنفذ التسلسلي المحاكى قبل تنفيذ رمز التهيئة التسلسلي الخاص بك.

ما عليك القيام به هو إعداد ملف fifo باستخدام mkfifo (راجع صفحة الدليل) ثم استخدم ذلك كمعلمة in= .ثم قم بتغذية ملف fifo بالبيانات بعد تشغيل التطبيق الذي تمت محاكاته.

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