מערכת משובצת מחשב

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

מגוון מערכות משובצות

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

היסטוריה

אחת המערכות המשובצות הראשונות הייתה מחשב הניווט של האפולו שפותח ב MIT על ידי צ'ארלס סטארק דרפר. בעת ביצוע הפרויקט נחשב מחשב הניווט של האפולו כרכיב המסוכן ביותר להצלחת הפרויקט שכן הוא הכיל טכנולוגיה חדשה של מעגלים משולבים שמטרתם הייתה להפחית את הגודל והמשקל. עוד מערכת ידועה שיוצרה בהיקף רחב החל משנת 1961 הייתה מחשב הניווט,"אותנטיקס D-17", אשר שלט בטיל המינוטמן.
המחשב נבנה ממעגלים ספרתיים והכיל כונן קשיח עבור הזיכרון הראשי. בשנת 1966, הוחלט להחליף את מחשב הניווט בטיל החדש שכונה מינוטמן II. מחשב הניווט היה דוגמה ראשונה לשימוש משמעותי במעגלים משולבים.
מאז אותן מערכות מוקדמות של שנות ה-60 של המאה ה-20, השתפרה יכולתן של המערכות משובצות המחשב. מחירן ירד, כוח החישוב גדל והפונקציונאליות התרחבה. ירידת המחיר של מיקרו-מעבדים ומיקרו-בקרים האיצה את ההחלפה של רכיבים אנלוגיים מבוססי ידיות כגון נגדים משתנים וקבלים משתנים, בכפתורים מבוססי מיקרו-מעבדים. עד אמצע שנות ה-80 כונסו רוב הרכיבים ההיקפיים של המעבד אל תוך המעבד והמיקרו-בקר החדש שהתקבל שולב כמעט בכל מכשיר אלקטרוני.
ניתן לתכנת מיקרו-בקר בעל יעוד כללי, כך שיבצע מגוון מטלות, כתחליף לביצוען באמצעות בנית מעגלים אנלוגיים ייעודיים. רוב המורכבות ההנדסית טמונה במעבד עצמו אולם הוא מהווה קופסה שחורה כך שרוב המאמץ שיושקע בתכן ימוקד בבנית התוכנה. הגמישות של התוכנה מאפשרת מידול ובדיקות פשוטים, זולים וידידותיים לסביבה בניגוד לעיצוב ובניה של מעגלים חשמליים ייעודיים.

מאפיינים

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

ממשק משתמש

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

חומרה

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

זמן אמת

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

ארכיטקטורת תוכנה משובצת מחשב

מספר ארכיטקטורות תוכנה משמשות בתכן מערכות משובצות.

חוג בקרה פשוט

תכן שבו לולאה מרכזית אשר קוראת לשיטות, שכל אחת מהן מנהלת חלק מהחומרה או התוכנה.

מערכת הנשלטת על ידי פסיקות

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

ריבוי משימות שיתופי

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

ריבוי משימות מקדים

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