המדריך של אנשי המקצוע לכלים וטכניקות ניפוי-באגים עבור התקני IoT

מאת ‎Jacob Beningo

באדיבות ‎DigiKey's North American Editors

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

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

מאמר זה ידון בכלי פיתוח ותוכנות שניתן להשתמש בהם לניפוי-באגים ולניתוח הביצועים של התקני IoT. הוא ישתמש בלוח פיתוח מבית STMicroelectronics כדוגמה להתקן IoT, וישתמש בכלי ובתוכנה מבית SEGGER Microcontroller Systems כדי להבין ולנפות באגים במערכת. הוא גם ידון בכמה טיפים וטריקים כיצד לקצר את זמן ניפוי הבאגים ולמסור פרויקט IoT לפי לוח הזמנים.

התקן IoT טיפוסי לניפוי באגים

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

  • מיקרו-מעבד
  • רדיו עבור חיבוריות
  • חיישנים

מפתח לא ירצה להתאים-במיוחד את הלוח שלו כדי לחקור טכניקות ניפוי באגים או לבדוק חלקים של קוד האפליקציה שלהם. זה פשוט גוזל זמן רב מדי. במקום זאת, חכם יותר לעבוד על לוח פיתוח בעלות נמוכה כמו ערכת ההיכרות B-L4S5I-IOT01A‏ עבור צומת IoT‏. יש בו כמעט כל מה שנמצא בהתקן IoT טיפוסי (איור 1).

תרשים של ערכת היכרות B-L4S5I-IOT01A מבית STMicroelectronicsאיור 1: ערכת היכרות B-L4S5I-IOT01A מבית STMicroelectronics עבור צומת IoT כוללת את כל הרכיבים הנדרשים בדרך כלל בהתקן IoT. (מקור התמונה: STMicroelectronics)

הלוח כולל את המיקרו-בקר STM32L4S5VIT6‏ Cortex®-M4 מבית ®Arm‏ הפועל במהירות של 120 מגה-הרץ (MHz). הוא נתמך על ידי זיכרון Flash‏ של עד 2 מגה-בייט (Mbytes) וזיכרון RAM‏ של 640 קילו-בייט (Kbytes). חשוב ביותר לצורכי תרגיל זה, הלוח כולל Wi-Fi ושפע של חיישנים שניתן להשתמש בהם כדי לבנות במהירות התקן בדיקת IoT מדומה.

כלי חומרה לניפוי באגים מקצועי

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

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

ישנם שני מודלים שהניסיון הוכיח שהם השימושיים ביותר עבור המפתח הכללי: J-Link Base‏ ו- +J-Link Ultra‏ (איור 2). מבחינה גורם הצורה, שתי היחידות זהות, אך ה- +J-Link Ultra מספקת למפתח מהירויות הורדה ל- RAM גבוהות יותר (Mbytes/s‏ 3 לעומת Mbytes/s‏ 1.0) ומהירות ממשק SWD גבוהה יותר (MHz‏ 100‏ במקום MHz‏ 30‏). המהירויות הגבוהות יותר עושות את כל ההבדל כאשר המפתח רוצה לעקוב אחר היישום שלו כדי לקבל תובנות לגבי הביצועים, התנהגות RTOS וניפוי באגים במערכת שלהם.

תמונה של +J-Link Ultra‏איור 2: ה- +SEGGER J-Link Ultra מעניק למפתחים חווית ניפוי באגים משופרת הודות לממשק מטרה של MHz‏ 50‏. (מקור התמונה: Segger Microcontroller Systems)

הדבר היפה ב- J-Link ובלוח הפיתוח B-L4S5I-IOT01A הוא שניתן לחבר את השניים באמצעות כבל TC2050-IC-NL‏ Tag-Connect‏ ומהדק מרתק TC2050-CLIP-3PACK‏. אלו מאפשרים לחבר מנפה-באגים ללוח הפיתוח באמצעות "פד ציפורניים" (איור 3). יתכן שיהיה צורך להתאים את מחבר 20 פינים של ה- J-Link למחבר 10 פינים של כבל TC-2050‏. אפשרות אחת שיכולה לשמש לכך היא מתאם 10 פינים J-Link‏ 8.06.04‏.

תמונה של לוח הפיתוח B-L4S5I-IOT01A מבית STMicroelectronicsאיור 3: בלוח הפיתוח B-L4S5I-IOT01A ניתן לחבר את מכלל הכבלים Tag-Connect על ידי חתימת-שטח של לוח מעגלים דמוי מיטה-של-ציפורניים (מימין). (מקור התמונה: STMicroelectronics)

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

כלי תוכנה לניפוי באגים מקצועי

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

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

המשתנים נבחרים על ידי מתן קובץ elf המופק על ידי הקומפיילר ל- J-Scope‏. זה מספק את מיקומי הזיכרון שייקראו, ואז המפתחים יכולים לקבוע את קצב הדגימה שלהם ולנטר את שינוי המשתנה(ים) לאורך זמן. דוגמה פשוטה של מעקב אחר שלושה משתנים ניתן לראות באיור 4.

תמונה של J-Scope‏ SEGGER‏ היכול לשמש לניטור משתניםאיור 4‏: ה- J-Scope‏ יכול לשמש לניטור משתנים באמצעות J-Link תוך כדי ריצת האפליקציה בזמן-אמת. (מקור התמונה: Segger Microcontroller Systems)

הבא אחריו הוא ה- Ozone‏. ה- Ozone‏ הוא ממשק מנפה-באגים ואנאלייזר ביצועים. המפתחים יכולים לטעון את קובץ elf‏ שלהם לתוך הכלי ולבצע ניפוי-באגים ברמת-המקור. הם יכולים להגדיר נקודות-יציאה ולעדכן את הקוד שלהם. מאפיין שימושי במיוחד עבור מפתחים הוא שהם יכולים גם לבצע מעקב פקודות (אם החומרה שלהם תומכת בזה) ולזהות אילו הצהרות אסמבלי וקוד C בוצעו. זה שימושי במיוחד לאימות כיסוי קוד של בדיקות חומרה-בתוך-חוג (HiL‏).

ה- Ozone‏ יכול גם לעזור למפתחים לנתח את ביצועי המערכת שלהם (איור 5) ולהציג משתנים לאורך זמן. הוא מעניק יכולות כמו J-Scope אך באופן משולב יותר. הוא יכול אפילו לשמש כדי לנטר את צריכת ההספק ולסנכרן את כל האירועים הללו יחד במקום אחד.

תמונה של Ozone‏ SEGGER‏ היכול לשמש למעקב אחר משתנים דרך J-Link‏איור 5‏: ה- Ozone‏ יכול לשמש למעקב אחר משתנים דרך ה- J-Link‏ תוך כדי ריצת האפליקציה בזמן-אמת, בנוסף לכיסוי הקוד וניפוי-באגים מודע-RTOS‏. (מקור התמונה: Segger Microcontroller Systems)

הכלי השלישי הוא ה- SystemView‏. ה- SystemView מאפשר למפתחים לנתח את התנהגות האפליקצייה שלהם בזמן הפעולה במערכת RTOS. החלפת משימות מוקלטת בחוצץ המעקב ואז מדווחת ל- SystemView דרך מנפה-הבאגים (איור 5). ה- SystemView מציג מידע זה באופן המאפשר למפתחים לראות את ההחלפות בהקשרים שלהם ולמדוד את ביצועי המערכת שלהם. זוהי גם דרך טובה מאוד להציג מערכת ולמצוא באגים ובעיות אחרות.

תרשים של SEGGER SystemView המספק קישור לתוך ה- RTOSאיור 6‏: ה- SystemView מספק קישור לתוך ה- RTOS ומאפשר למפתחים למדוד את ביצועי המשימות ולהציג מה ה- RTOS‏ עושה למעשה כשהיא עושה זאת. (מקור התמונה: Segger Microcontroller Systems)

טיפים וטריקים לניפוי באגים במערכת משובצת

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

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

המפתחים שיישמו "טיפים וטריקים" אלה יגלו שהם חוסכים לא מעט זמן ועוגמת נפש כשינסו לפתח התקן IoT‏.

סיכום

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

DigiKey logo

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

אודות כותב זה

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo הוא יועץ תוכנה משובצת. הוא פרסם יותר מ- 200 מאמרים על טכניקות פיתוח תוכנה משובצת, הוא דובר ומאמן טכני מבוקש, והוא בעל שלושה תארים, כולל תואר שני בהנדסה מאוניברסיטת מישיגן.

אודות מוציא לאור זה

DigiKey's North American Editors