כשמוצר חומרה לא מתנהג כמצופה, ההבדל בין יום עבודה לשבוע שלם נעוץ כמעט תמיד בכלי דיבוג embedded שעומדים לרשות הצוות. קוד משובץ רץ מול חומרה אמיתית, ללא מסך ולעיתים ללא מערכת הפעלה, ולכן אי אפשר להסתפק בהדפסות למסך. אנחנו בפרוג'קטס האוס מתעקשים לתכנן את יכולת הדיבוג לתוך הלוח כבר בשרטוט הראשון, כי הוספה שלה בדיעבד תמיד יקרה יותר.

JTAG מול SWD: מה ההבדל

שני התקנים מאפשרים לעצור את המעבד, לקרוא זיכרון ורגיסטרים, לצעוד שורה אחר שורה ולצרוב קושחה. ההבדל הוא במחיר החיבור. JTAG הוא ממשק ותיק שדורש ארבעה או חמישה קווים, ומאפשר לשרשר כמה רכיבים על אותו אפיק וגם לבצע בדיקות סריקה גבולית לחיבורי הלחמה. SWD הוא ממשק מצומצם של שני קווים בלבד, שנפוץ מאוד במיקרו-בקרים מודרניים וחוסך פינים יקרים בזיווד קטן.

  • SWD: ברירת המחדל ברוב הפרויקטים החדשים, ומספיק לרוב צורכי הדיבוג היומיומיים.
  • JTAG: כשצריך שרשור רכיבים, בדיקות ייצור או תמיכה בארכיטקטורה ותיקה.
  • מעקב זרימה: ממשקי Trace מאפשרים לראות מה קרה לפני הקריסה בלי לעצור את המעבד.
  • מתאם הדיבוג: אביזר החומרה שמחבר בין המחשב ללוח, ואיכותו משפיעה על יציבות העבודה.

שווה לציין שאותם קווים משמשים גם לצריבה הראשונית בייצור, ולכן ההחלטה על הממשק אינה נוגעת רק לפיתוח אלא גם לקו ההרכבה ולתחזוקה בשטח.

מתי הדיבאגר לא מספיק

הבעיות הקשות באמת אינן בקוד לבדו אלא בתפר שבינו לבין החומרה. כאן נכנס לוגיק אנלייזר, שמקליט מספר קווים דיגיטליים במקביל ומפענח פרוטוקולים כמו SPI, I2C או UART. הוא עונה על השאלה האם ההודעה בכלל יצאה מהמעבד ובאיזה תזמון. כשהבעיה אנלוגית, כמו נפילת מתח בהמראת מנוע או רעש על קו שעון, צריך אוסילוסקופ. שילוב של השניים מאתר את רוב התקלות שנראות "אקראיות" ושאי אפשר לשחזר בעצירה של הדיבאגר, שכן עצירת המעבד משנה את התזמון ומעלימה את הבאג. במילים אחרות, ארגז כלי דיבוג embedded שלם מכיל תמיד גם מכשירי מדידה ולא רק דיבאגר תוכנה, ומי שמוותר עליהם ימצא את עצמו מנחש.

תשתית דיבוג בתוך הקושחה

מעבר לחומרה נדרשת גם תשתית תוכנה, וזה החלק שנוטים לדחות ואז מתחרטים. יומן טורי עם רמות חומרה, מונה שעות עבודה, שמירת סיבת האתחול האחרון וזיהוי חריגות מאפשרים לאתר בעיות גם אצל לקוח בשטח, במקום להחזיר מוצר למעבדה. שעון שמירה שמאתחל את המערכת בעת תקיעה חייב לשמור את ההקשר לפני האתחול, אחרת המידע היקר ביותר נמחק בדיוק ברגע הכשל. בחירת ארכיטקטורת הקושחה משפיעה ישירות על כך: מערכת הפעלה בזמן אמת מספקת כלים לניתוח משימות ולזיהוי גלישת מחסנית, אך מוסיפה שכבה שצריך להכיר. גם בוטלואדר תקין הוא כלי דיבוג לכל דבר, כי הוא מאפשר לשחזר מוצר תקוע בלי לפרק אותו.

איך מתכננים לוח שאפשר לדבג

כמה החלטות פשוטות בשלב תכנון המעגל המודפס חוסכות שעות רבות: פדים או מחבר ייעודי לממשק הדיבוג, נקודות בדיקה על קווי האספקה ועל אותות מפתח, נורית סטטוס, ואפשרות לנתק עומסים כדי להריץ את המערכת בשלבים. גם בחירת המיקרו-בקר היא למעשה החלטת דיבוג, משום שאיכות הכלים, הספריות והתיעוד של המשפחה הנבחרת משפיעה על קצב הפיתוח יותר מכל שורה במפרט. חשוב לזכור שבמוצר מסחרי משאירים גישה פיזית לדיבוג בשלב הפיתוח, אך נועלים אותה לפני ייצור המוני, כפי שמוסבר במאמר על אתחול מאובטח והצפנת קושחה. מי שלא מתכנן זאת מראש נאלץ בסוף לבחור בין אבטחה לבין יכולת תחזוקה.

כמה זה שווה בפועל

ערכת כלי דיבוג embedded סבירה, הכוללת מתאם דיבוג, לוגיק אנלייזר בסיסי ואוסילוסקופ פשוט, עולה כמה אלפי שקלים בלבד. זהו סכום זניח לעומת חודש פיתוח אבוד בחיפוש אחר באג שאי אפשר לראות. הכלים האלה גם משתלמים שוב בשלב הייצור, כשצריך לאבחן יחידות שנכשלו בבדיקה במקום לפסול אותן. מי שמתחיל מאפס ימצא רקע מסודר במאמר מה זו קושחה ובמרכז התוכן על פיתוח תוכנה embedded.

יש לכם מוצר עם באג שלא מצליחים לאתר, או פרויקט חדש שאתם רוצים לבנות נכון מההתחלה? קבעו פגישה ראשונית ונבחן יחד את המערכת.

רוצים להפוך רעיון למוצר? צרו קשר עם צוות פרוג'קטס האוס בע"מ – טלפון: 054-8936922 | דוא"ל: info@projects-house.com – ונשמח ללוות אתכם משלב הרעיון ועד המדף.