פיתוח IoT במערכות אמבדד בסביבת לינוקס

פיתוח IoT במערכות אמבדד בסביבת לינוקס
07 ינו 2021

היתרונות הגלומים בפיתוח פתרון IoT במערכות אמבדד בסביבת לינוקס

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

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

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

1. מחשב דסקטופ המשמש כמערכת הניהול והסרבר שאוגר ומעבד את המידע

המרכיב הראשון הוא מחשב דסקטופ שמריץ את מערכת ההפעלה לינוקס. יש לו שלוש פונקציות:

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

מחשב זה מצויד במעבד 64 ביט של AMD או אינטל, בזיכרון RAM של 16 ג'יגה בייט ובמספר כניסות USB 3.0. מחשב זה נחשב לטיפוסי בסטנדרטים של היום.

 

2. שרת אמבדד המשמש כ- gateway בשדה

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

המרכיב השני הוא מערכת ARM 64 ביט בעלת שתי ליבות שמעלה את מערכת לינוקס מכרטיס זיכרון microSD ומצוידת בזיכרון eMMC בנפח 2 גי'גה בייט, 4 כניסות USB 2.0, כניסת HDMI, תמיכה ב-LoRa וכניסת את'רנט עם קצב תעבורה של 1 ג'יגה בייט. המערכת מתקשרת עם מחשב דסקטופ הנמצא במרחק 30 ק"מ באמצעות חיבור אינטרנט מבוסס כבלים.

 

3. ממשק החיישן והבקר

המרכיב השלישי הוא מערכת לינקוס אמבדד המצויידת בחיישני טמפרטורה ולחות. למערכת זיכרון eMMC בגודל של 1 ג'יגה בייט והיא עולה דרך כרטיס זיכרון microSD. התקן זה הוא מעבד ARM ליבה אחת עם כניסת USB אחת ותמיכה בLoRa.

להבדיל ממערכות הפעלה אחרות, ללינוקס יש יכולת מלאה לפריסה רחבה והמשמעות היא שהיא יכולה לרוץ על מחשבי מיינפריים IBM sx390 כמו גם על מחשבים זעירים בגודל של כרטיס אשראי כמו ASUS Tinkerboard או Raspberry Pi. לינוקס תומכת במגוון רחב של ארכיטקטורות מעבדים ותצורות. כפי שהוצג בדוגמה, רשת משובצת זו הורכבה ממעבדים בעלי מספר שונה של ליבות אינטל ושל ARM נוסף על מעבד בעל ליבה אחת לבקרת חיישנים ולאיסוף נתונים.

 

היתרונות של סביבות embedded linux לפיתוח יישומי IoT

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

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

שנית, הבה נחשוב על הבדיקות. כיצד נבדוק דרייברים ואפליקציות המתפרסים על פני שניים או שלושה מעבדים וארכיטקטורות ? יתרון נוסף של לינוקס הוא השימוש בכלים נפוצים לפיתוח ולניפוי שגיאות. לפי דוגמה זו, החברה שמספקת את פלטפורמות הפיתוח, המהדירים (compilers) העורכים (editors) מנפי השגיאות (debuggers) יכולה להשתמש באותם הכלים בכל ארכיטקטורה תומכת לינוקס. כל דבר שנעשה בו שימוש במחשב הדסקטופ יהיה זמין עבור השרת המשובץ, ממשק החיישן והבקר.

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

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

 

פיתוח וניפוי שגיאות עבור מגוון ארכיטקטורות

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

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

Eclipse הוא כלי לבנייה ולעריכה של מערכות ליבה (kernels) דרייברים ואפליקציות. המפתחים מתקינים את המהדירים ואת הכלים עבור כל פלטפורמה נתמכת, קובעים את דגלי המהדיר בסביבת Eclipse ואחר כך מבצעים את הההדרה.

כדי לנפות שגיאות התוכנות נטענות למדריך משותף (directory) עבור כל פלטפורמת יעד ומנפה ה-GNU מוכן להצמדה לכל התקן יעד לפני הרצת התוכנה. בשלב זה, כשהתוכנה רצה, ניתן לבצע ניפוי שגיאות של קוד מקור הכתוב ב-C או ב-C++ במהלך אחד, פשוט באמצעות קביעת נקודות שבירה בקוד, ממש כפי שהמפתח עושה בניפוי שגיאות מקומי של תוכנה.

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

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

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

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

 

רוצה לאתגר אותנו בפרויקט הבא שלך?

אנחנו ב- TandemG נשמח לשמוע, צור קשר

Share

OPEN POSITIONS