אמבדד

הקטנת עלויות וסכונים בפיתוח תוכנה למערכות משובצות

אמבדדמאת: אסף גליל, ארז רם ועידו אלפרוביץ.

פתח דבר: מהנדסי מערכות משובצות רבים – מקפידים על בחירת החומרה האופטימלית ויש להם כלים רבים לבצע הערכה כמותית: עלות החומרה, צריכת ההספק שלה, גודל הזיווד שלה וכו’.
מאידך קשה לעיתים להעריך כמותית את האלטרניטיבות לבחירות בתוכנה. ולרוע המזל – לעיתים קרובות בחירה לא נכונה בנושאי תוכנה עלולה להשפיע לרעה הרבה יותר מכל בחירה שגויה אחרת בפרויקט.
הבחירות הראשוניות בתוכנה מכתיבות את מערכת ההפעלה וסביבת הפיתוח. אלה מצידן משליכות על אופן בניית מערכות לבדיקות וסימולציה ועל סיבוכיות כתיבת התכנה ובחירת ה-drivers.
ככל שיהיו בידי המתכנן יותר אמצעים ותכונות שיקלו עליו בכתיבת תוכנה אמינה – יקטנו הסיכונים ויקטנו העלויות.
המאמר יציג את האופן שבחירה במע”ה INtime של חברת TenAsys מקטינה את הסיכונים והעלויות בפיתוח התוכנה למערכות משובצות. המאמר יתאר מספר יכולות בסיסיות של מערכת ההפעלה שפועלות בכיוון הנ”ל. מעל תיאור התרומה של התכונות הבסיסיות מתרכז המאמר בהצגת סוגי התקני I/O לשימושה של INtime. יתוארו שני סוגים חדשניים להתקני I/O עבור INtime שמשותפים להם הקטנת סיכוני פיתוח התוכנה והקטנת עלויות הפיתוח.
תיאור התכונות המדויקות של פתרונות החומרה השונים לא יכלל במסגרת המאמר. ניתן לקבל את הנתונים מכותבי המאמר עבור כל אחד מסוגי הפתרונות שיוצגו להלן.

סביבת הפעולה של INtime
במערכת משולבת שבה רצה INtime לצידה של Windows מחלקים את תוכנת המערכת לשני חלקים. האחד שמבצע משימות דטרמיניסטיות (עומדות בזמני תגובה קטנים וקבועים), ו\או משימות שדורשות רובוסטיות (מתאפשרת התאוששות מהירה מבעיות חומרה ותוכנה במערכת).
המרכיב שעומד בדרישות הנ”ל שכולל את התהליכים (processes) וה-drivers למרכיבי ה-I/O ירוץ על מרכיב INtime. יתר המרכיבים יכתבו מעל Windows באחד מהכלים הרבים הזמינים. למי שמעונין בכתיבה בצד Windows ב-DOTNET, מסופקת ספריית ממשק שמאפשרת לתוכנה ב-#C לפנות ישירות לאוביקטים של INtime. מאידך ניתן לפנות בצורה דומה מ-Windows ל-INtime בכתיבה ב-C או ++ C. הממשקים בין שני חלקי התוכנה הם אוביקטים משותפים כמו Mailbox Semaphore Shared Memory או Virtual LAN Port. קטעי הקוד בחלק של INtime נכתבים ב-C או ב-++ C ומתאפשר שימוש במספר רב של תוכניות דוגמא ו-Wizards.
הפרדה זו לשני חלקי מערכת מאפשרת למתכנן ליהנות משני העולמות: סביבת Real Time רבת עוצמה שהיא המשך פיתוח של Intellectual Property של Intel משנות השמונים, וגם סביבה מלאה של Windows – כולל מערכות 64 ביט ואפילו Windows 8 שזה עתה יצאה.
סביבת הפיתוח של כל חלקי המערכת היא Visual Studio (כולל גם את גירסת
VS 2012) שהינה סביבת הפיתוח המקובלת ביותר שבה משתמשים “כמעט כולם”. מנהל פרויקט יכול ליהנות מהזמינות של כח האדם לבניית התוכנה ומשפע התוכנות הקיימות הניתנות לשימוש מ”המדף” ברמת קוד בינרי וברמת קוד מקור. חשוב לציין שזוהי כמעט מע”ה היחידה לזמן אמת שבה Visual Studio מריץ את קטעי הקוד המדובגים באותו זמן ביצוע כמו במוצר הסופי.
בנוסף למספר API אפשריים שמספקים פונקציונליות רבה ויחודית, יש ל-INtime גם API שקרוי iWin32 שמורכב לפי הסטנדרט של Microsoft עבור Windows CE. כך מתאפשר לקחת קוד מקור
ב-C או ++ C שרץ על Windows ולבנות קובץ פעולה ב-INtime ממש בפעולת
Cut & Paste.
ניתן לבחור קונפיגורציות שונות: על אותה הפלטפורמה להריץ INtime לצידה של Windows – כשחלוקת הליבות נקבעת לפי דרישות המתכנן. ניתן גם להקצות מחשב שלם ל-INtime ללא Windows. במקרה כזה ניתן לקבל שירותים ממחשב Windows חיצוני. החשוב הוא שניתן לבנות את התוכנה כך שאפשר להעביר את אותו הקוד הבינרי בין כל הקונפיגורציות. זה מקל מאד על התאמת התכנה לשינוי תצורה במוצר המפותח, ולשימוש חלקי קוד מהמוצר עצמו – לבנית הסימולטורים והמבדקים שעבורו.

I/O למע”ה INtime
ל-Windows ישנם שפע של פתרונות להתקני I/O. כמעט כל חברה המייצרת אלמנט
I/O – כרטיס או תת מערכת – מצרפת לחומרה את ה-driver שלה ל-Windows. מאידך, אופן הקצאת משאבי המחשב שונה במע”ה לזמן אמת, ולפיכך מרכיב התוכנה שפועל מעל INtime אינו יכול להשתמש בתוכנות driver של Windows.
כמו עבור כל מערכת, גם עבור INtime, יש לבחור התקן I/O לפי דרישות הממשק, אבל מתוך האפשרויות יש להתחשב גם באספקת ה-driver עבורו ואופן כתיבת
ה-תוכנה מעל ה-driver. לבחירות אלה יש השפעה על הסיבוכיות בפרויקט.
במאמר נתייחס לסוגי הפתרונות השונים המוצעים למענה לאתגר ה-I/O עבור INtime. מעל סקירת הפתרונות הברורים שניתן למצוא מעל כל מע”ה יוצגו שני פתרונות חדשניים שמתאימים לחלק מהפרויקטים. פתרונות אלה מאפשרים למתכנן לענות באופן מלא על צרכי ההתממשקות בחומרה ובמקביל להקטין סיכונים ולחסוך בעלויות בכל הקשור לבניית התוכנה מעליהם.

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

פתרון עבור ההתקנים האינטגרליים של ה-pc וחומרה יעודית בפיתוח
הפתרון המתבקש מאליו הוא שימוש בכרטיסים יעודיים. עבור כל ממשק נדרש driver. עבור ההתקנים שנמצאים בכל PC (ממשק רשת, ממשק טורי אינטגרלי וכו’) מספקת TenAsys את ה-driver. עבור כרטיסים מסוגים שונים מספקות יצרניות הכרטיס או גוף שלישי את ה-driver.
אולם קיימים מצבים שרק כרטיס יחיד עונה לדרישות ואין עבורו driver ל-INtime, או במקרה כשמפתחים עבור הפרויקט חומרה לממשק ייחודי צריך לפתח את ה-driver. משימה זו דורשת מומחיות מסוימת. ניתן לרכוש פיתוח driver מכמה חברות ישראליות שמתמחות בנושא או לפתח את ה-driver לבד. משימת כתיבת ה-driver ב-INtime הינה קלה בהרבה מאשר כתיבת driver למערכת הפעלה כמו Windows. המשימה ב-INtime היא בדיוק כמו כתיבת יישום רגיל שנכתב ומדובג באמצעות Visual Studio. ההבדל היחיד לעומת יישום רגיל, הוא הצורך לפנות לרכיב PCI, לפנות ישירות לזכרון שבו משתמש רכיב ה-PCI ולעיתים אף להשתמש ב-Interrupt עבור ההתקן. לצורך זה מקבל המפתח כלי אוטומטי – Wizard – שבאמצעותו מבצעים את ההגדרה המתאימה להתקן ה-PCI. באיור מספר 2 מוצג מסך הקונפיגורציה של ה-Wizard – שבאמצעותו מזינים את נתוני ה-PCI כמו PCI Vendor ID
ו-PCI Device ID וכן פרטים הקשורים ל-Interrupt. ה-Wizard מייצר את הקוד הבסיסי, ומעליו כותב המתכנת את תוכנת ה-driver באמצעות סדרה של פקודות מיוחדות של INtime לפניה למרחב ה-PCI ולמרחבי הזכרון השייכים לרכיב.

שני פתרונות I/O חדשניים
מעל הפתרונות הנ”ל התפתחו בשנים האחרונות שני פתרונות שמכסים מצבים שבהם הפתרון היה יקר ו\או מסובך מדי טכנית. הפתרונות האלה לא רק מספקים מענה לדרישות החומרה, אלא מגיעים גם עם תמיכה מובנית בתוכנה. המשתמש משוחרר מכתיבת drivers, ומקבל API לשימוש תוכנת האפליקציה שלו ובכך תורמים הפתרונות להקטנת הסיכונים והעלויות בפיתוח התוכנה לפרויקט.
אבני הבוחן לבדיקה באיזה פתרון מהשניים להשתמש הם:
כאשר ישנם ממשקים רבים לפרוטוקולים סטנדרטיים – מוצע הפתרון של חברת UEI.
כאשר נדרשים מספר ממשקים ונדרש גודל פיזי והספק קטנים ו\או קצבי העברה אל ומ-I/O הוא במהירויות גבוהות מאד – מוצע הפתרון של Cosonance-Tec מבוסס ה-FPGA.

1 – פתרון באמצעות Power DNA של חברת UEI
את ה-Host PC שמריץ INtime (עם או בלי Windows) מחברים באמצעות כבל Ethernet במהירות Giga Bit ליחידה חיצונית של UEI שכוללת CPU, ספק ומספר slots להכנסת כרטיסי I/O.
איור מספר 3 מראה את אפשרויות החיבור של היחידה החיצונית ל-Host PC.
המימשקים המסומנים כ-I/O בשרטוט לקוחים ממיגוון של כ – 40 סוגי כרטיסים שונים:
1. כרטיסי Analog In/out ,Digital In/out למתחים וקצבי דגימה שונים.
2. כרטיסי RS422/485/232 תקשורת טורית מהירה עד 4M.
3. כרטיסי SDLC/HDLC ,IRIG-B, ARINC 429, 1553 ,CAN-BUS.
4. כרטיסיCounter/ timer/PWM, LVDT/RVDT,Synchro/Resolver.
5. כרטיס quadrature encoder ועוד.
הפשטות בשימוש בצורת I/O כזו ומגוון האפשרויות, הופכים את הפתרון של UEI למקובל מאוד בקרב מתכנני מערכות שמריצות INtime. עיקרי התכונות של הפתרון מפורטות להלן:
כל המימשקים יוצאים מיחידה חיצונית.
ביחידה החיצונית ישנו מעבד מהיר שמריץ מה”ה לזמן אמת.
ניתן לבחור ביחידה חיצונית להיות קטנה מאד או גדולה לפי מספר הממשקים.
היחידה מחוברת ל-INtime Host באמצעות Gigabit LAN , ונתמכת
ב-INtime על ידי IP Stack מפותח ובעל ביצועים מצוינים.
אין צורך לפתח drivers – מסופק API עבור INtime Host לכל הממשקים.
אופן ההפעלה של הממשקים השונים דומה מאד, וישנן תכניות דוגמא בשפת C לכל אחד מהכרטיסים. זה מקל מאוד על כותב התוכנה.
קיימים כמה modes שבהם יכול
ה-INtime Host לגשת לממשקים הפיזיים. הם נבדלים ב-latency שלהם ובקצב הדגימה המקסימלי האפשרי עבורם ובוחרים אותם לפי השיקולים בפרויקט.
איור מספר 4 מראה את מארזי ה-Power DNA שבו מקום ל-3 ו-6 כרטיסי ממשק, וכרטיס לדוגמא שמוכנס למארז.

2 – פתרון של חברת Consonance Tec באמצעות FPGA
לעיתים קורה שישנה דרישה למספר רב של ממשקים – עשרות או מאות, והאופן לספק אותם באמצעות מספר רב של כרטיסי PCI או באמצעות מספר רב של כרטיסי Power DNA דורש שטח ונפח פיזי גדולים והספק רב.
מצב נוסף אפשרי הוא דרישה למספר רב של ממשקים מהירים מאד, וגם עבורם הפתרונות שהוצגו אינם נותנים מענה אופטימלי. לצורך מקרים אלה פותחה הרחבת I/O ל-INtime באמצעות יחידת FPGA חיצונית על ידי חברת Consonance Tec.
התכנון הבסיסי של יחידת ה-FPGA מומחש באיור מספר 5.
היחידה מתארת FPGA שדואג לפעולות ה-I/O המהירות מול התקני הוידאו. פרט להעברות התמונה מעביר ה-FPGA פעולות בקרה למצלמות באמצעות ממשקים רבים של תקשורת טורית.
המעבד ממשפחת X86 מבצע בתוכנה פעולות מורכבות כמו עיבוד תמונה שנדרש לעמוד בזמנים קשיחים, ולפיכך צריך להריץ מערכת הפעלה לזמן אמת כמו INtime.
הטכנולוגיה שבאמצעותה מחולקים המשאבים בכרטיס ה-FPGA מתוארת באיור מספר 6.
כרטיס ה-FPGA כזה במערכת מבוססת INtime יכול לספק את רוב או כל דרישות ה-I/O גם עבור מרכיבי המערכת שרצים מעל Windows וגם מעלINtime.
עיקרי התכונות של הפתרון באמצעות
ה-FPGA מפורטות להלן:
כל הממשקים יוצאים מהיחידה חיצונית שמכילה את ה-FPGA. יחידה זו יכולה לשבת ככרטיס בתוך המארז של ה-PC או רחוקה מה-PC באמצעות כבל מתאים.
ביחידה החיצונית ישנו FPGA והוא מריץ (Intellectual Property) סטנדרטי לממשקים ו-IP שמפותח על ידי Consonance Tec למטרות הפרויקט. ניתן גם להוסיף IP של הלקוח.
הגודל הפיזי של היחידה החיצונית נקבע לפי דרישות הלקוח.
היחידה מחוברת ל-INtime Host באמצעות PCI Express Bus עד מהירות של Giga Bits Per Second !!! .
אין צורך לפתח drivers – מסופק API לממשקים שממומשים. גם ב-Windows וגם ב-INtime.

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

אודות המחברים: אסף גליל הינו מהנדס יישומים של חברת TenAsys והחברה שבבעלותו היא הנציגה בארץ של החברה האמריקאית TenAsys – מפתחת תוכנת INtime.
ארז רם הינו מנהל מכירות בכיר בחברת Formtest – נציגתה של UEI בישראל. במהלך השנים התבססה UEI במתן פתרונות בתעשיה האזרחית והצבאית הישראלית. חלק מלקוחות UEI משתמשים ב-INtime כ-Host.
עידו אלפרוביץ הינו מנהל ובעלים של חברת Consonace Tec. החברה מתמחה במתן פתרונות מבוססי FPGA. חלק מלקוחותיו משתמשים ב-INtime
כ-Host.

אמבדד

תגובות סגורות