مراجعة عمليّة: لمحة عن محلل الإشارات المنطقية Saleae USB Logic Analyzer (24MHz 8CH Clone)

منذ أكثر من عام كانت لدي رغبة في تجربة محلل إشارة منطقي Logic Analyzer يكون متوافر لدي عند الحاجة له كون كثير من الأحيان نحتاج إليه وخاصة عند استخدام بروتوكولات أكثر تعقيداً ودقة من بروتوكول UART مثل بروتوكول I2C حيث من المفيد معرفة أن عملية الإرسال صحيحة وهذا يساعد في تنقيح الأخطاء أثناء تطوير برمجية المتحكم. وبالفعل كنت قد طلبت محلل منطقي عبر موقع Aliexpress بسعر حوالي 6 دولار وبالواقع هو نسخة مقلّدة من محلل إشارة اسمه Saleae USB Logic Analyzer ويبلغ سعر أرخص نسخة أصلية منه 100 دولار وهذا طبيعي فهذه كلفة جهد تطوير مثل هذه الأداة. على الرغم أني أعلم أن شراء نسخ مقلّدة يضر الشركات التي تعتاش على بيعها ولكن ليس باليد حيلة (أعتذر منكم فريق Saleae).

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

الإلكترونيات Hardware

حصلت على غلاف يحوي على محلل الإشارة المنطقية ذاته ويحوي أيضاً وصلة USB وعدد 10 من أسلاك التوصيل Jumper Wires.

Saleae Logic Analyzer Clone Package

تبدو الدارة المطبوعة من داخل العلبة البلاستيكية كالتالي:

Saleae Logic Analyzer Clone PCB

إن الدارة المطبوعة بسيطة وتحتوي:

  • CY7C68013A وهو متحكم صغري بنواة 8051 وأيضاً واجهة تخاطب USB.
  • AT24C01B ذاكرة EEPROM تسلسليّة بحجم 128 بايت من شركة ATMEL.
  • 74HC245 دارة transceiver ثمانية خطوط النقل.

 Saleae-Logic Analyzer PCB Bottom
 Saleae-Logic-Analyzer-PCB-Top AT24C01B, CY7C68013A , 74HC245 من اليمين إلى اليسار

أجد من الممتع محاولة فهم مايجري خلف الستار بين البرنامج والدارة حيث وجدت أولاً أن المتحكم CYC68013A لا يحوي ذاكرة Flash ذات محتوى غير قابل للتلاشي وهذه الذاكرة عادة ما تحوي الكود الذي يُنفذ على المتحكم وعوضاً عن ذلك يتم تحميل الكود إلى ذاكرة الرام RAM عبر الـUSB أو من ذاكرة EEPROM موصولة بالمتحكم وطالما أن الذاكرة EEPROM المستخدمة هنا صغيرة ذات 128 بايت كنت متأكد أن البرنامج يتم تحميله عبر الـUSB. لذلك إن أول معلومة مفيدة ومثيرة هي أن الدارة لا تحوي برنامج مسبق عليها فعلياً. المعلومة الثانية أن الذاكرة EEPROM تحوي معلومات تتعلق بالجهاز ومعرّفاته عند الوصل مع الحاسب مثل (VID, PID .. إلخ) وهي معلومات مهمّة لكي تبدو الأداة “المزوّرة” وكأنها أصليّة بالنسبة للأداة البرمجية (أتكلم عن الأداة البرمجية التي تأتي من شركة Saleae). في ما يلي مثال عن خرج تنفيذ التعليمة lsusb -v في جهاز عليه نظام تشغيل لينكس مع وصل المحلل المنطقي.

المعلومة الثالثة هي أن استخدام الـtransceiver هو لحماية مداخل المتحكم من الجهود العالية حيث أن مداخل الـtransceiver مزودة بديودات القص Clamping Diodes.

قد تجد أشكال أخرى من النسخ المزوّرة كما في هذه المقالة. للمهتمين: في ذات المقالة يشير الكاتب لطريقة لتغيير محتوى الذاكرة EEPROM دون فك تلحيم الذاكرة EEPROM.

وفي نهاية هذه الفقرة أود أن أقول أنه لو كنت أعلم الحقيقة الأولى قبل أن أشتري هذه الأداة المزوّرة ربما كنت سأفضل شراء دارة عامّة أكثر وتجربة محلل الإشارة عليها مثل هذه الدارة!

تجريب الدارة

فقط من أجل غرض التجربة، سوف أقوم بالتسمّع sniffing على خطوط الإرسال والاستقبال لدارة ESP8266 خلال رفع البرنامج باستخدام محمّل الإقلاع Bootloader الذي يعمل على بروتوكول الـUART.

 

Saleae logic analyzer test circuit

على الرغم أنه من ناحية المبدأ يمكن إجراء التسمّع باستخدام الحاسب (بالتسمع على منفذ الـUSB) ولكن ليس هذا ما أبحث عنه.

البرمجيّة Software

sigrok Tool

منذ فترة جيّدة وأنا أسمع عن sigrok الأداة البرمجية مفتوحة المصدر عامة الاستخدام للمحللات المنطقيّة والتي تدعم الكثير من أنواع المحلّلات.

هذه الأداة تدعم نظم التشغيل الأربعة (ويندوز ولينكس وماك وأندرويد)؛ يمكنك تحميل ما يناسبك. ويتألف الـsigrok من عدة أدوات وأهمها( بالنسبة للمستخدم العادي):

  • sigrok-cli  وهو برنامج سطر الأوامر البرمجية.
  • PulseView وهو الواجهة البرمجيّة للمستخدم.

بعد تنزيل الأدوات وقبل تشغيلهم يجب أن تؤمن البرنامج firmware الذي سيتم تحميله على ذاكرة الـRAM للمتحكم كما ذكرت في الفقرة السابقة. كون البرمجية غير مجانية وتتبع لرخص مختلفة فإنه لا يتم توزيعه مع الأداة البرمجيّة sigrok، لذلك يجب إضافته يدوياَ بعد تنصيب البرنامج. في حالتنا، يجب عليك أولاً تنزيل الأداة البرمجيّة الرسميّة من موقع Saleae ويجب تنزيل مجموعة من الملفات من موقع sigrok، والآن قم بنقل السكربتات إلى ملف برمجيّة Logic وقم بتشغيل السكربت (بايثون) sigrok-fwextract-saleae-logic16 بالشكل التالي:

sigrok-fwextract-saleae-logic16 Logic

هذا السكربت سيستخلص من البرنامج الرسمي الـfirmware الذي سيتم شحنه إلى الأداة من البرنامج وهذا مثال على تنفيذ السكربت:

والآن قم بنقل الملفات المستخلصة إلى مجلد sigrok-firmware (تجده في حالتي في جهاز اللينكس في المسار /usr/share/sigrok-firmware).

الآن يمكنك تشغيل الواجهة الرسوميّة PulseView والاتصال بالمحلّل.

 

sigrok pulseview connect

وإذا كنت فضولياً مثلي يمكنك تفعيل رسائل التنقيح debug من البرنامج عبر الأمر pulseview -l 5 لتشاهد بعض المخرجات المفيدة وهذه أحدها:

إن استخدام PulseView سهل ومباشر؛ عليك أولاً ضبط تردد أخذ العينات sampling rate وحجم العينات. يظهر في البرنامج 8 أقنية ويمكنك تغير اسماءهم من قيمة رقميَة لأي اسم معبر وذلك بالنقر على الرقم.

Sigrok pulseview

نأتي لأهم ميزة في أي برنامج محلل منطقي وهو “مفكّك البروتوكول” protocol decoder. يمكنك إضافة المفكّك من (decoders>add>UART) ويمكنك ضبط إعدادات المفكّك عبر النقر على اسمه الذي يظهر في الهامش اليساري للشاشة. كما يمكنك قياس الأزمنة بشكل دقيق وذلك عبر المؤشرات الزمنيّة من (view>Show Cursors).

ملاحظة: ارفع حجم العينات مع زيادة التردد. مثلاً: عند التردد 1 ميغا هرتز لا يعمل البرنامج بحجم عينات أقل من 1 غيغا.

Saleae Logic

هي الأداة الرسميّة من الشركة وقد استطعت استخدامها بنجاح مع النسخة المزوّرة ويوجد دليل مشروح بعناية عن كيفية استخدام البرمجية على موقع الشركة. وعلي أن أقول أن هذا البرنامج أفضل وأكثر سهولة ولديه أدوات مساعدة أكتر من sigrok.

Saleae Logic UI

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *