כתבתי שפע קוד מתכת חשוף למעבדי PIC ו- x86. מישהו יכול להגיד לי כיצד ומתי עלי להזדקק למערכת הפעלה? לעומת זאת, באיזה יישום או סיטואציה ניתן להתמודד או גם ללא מערכת הפעלה?
כתבתי שפע קוד מתכת חשוף למעבדי PIC ו- x86. מישהו יכול להגיד לי כיצד ומתי עלי להזדקק למערכת הפעלה? לעומת זאת, באיזה יישום או סיטואציה ניתן להתמודד או גם ללא מערכת הפעלה?
כלל האצבע שלי הוא שעליך לשקול מערכת הפעלה אם המוצר דורש אחת או יותר מהפעולות הבאות: מחסנית TCP / IP (או מחסנית רשת מורכבת אחרת), ממשק משתמש מורכב (אולי אחד עם אובייקטים של ממשק משתמש כגון חלונות ואירועים), או מערכת קבצים.
אם ביצעת קידוד מתכת חשוף, כנראה שאתה מכיר את ארכיטקטורת התוכנית super-loop. אם דרישות הקושחה של המוצר פשוטות מספיק כדי להיות מיושמות עם לולאת-על הניתנת לתחזוקה (ובתקווה שאפשר להרחיב אותה מעט), ככל הנראה אינך זקוק למערכת הפעלה.
ככל שדרישות התוכנה גדלות, לולאת העל הופכת מורכבת יותר. כאשר דרישות התוכנה כה רבות עד כי לולאת העל הופכת מורכבת מדי או שאינה יכולה למלא את הדרישות בזמן אמת של המערכת, הגיע הזמן לשקול ארכיטקטורה אחרת.
ארכיטקטורת RTOS מאפשרת לך לחלק את דרישות תוכנה למשימות. אם נעשה כראוי, זה מפשט את היישום של כל משימה. ועם עדיפות משימות RTOS יכול להקל על מילוי הדרישות בזמן אמת. RTOS אינו תרופת פלא, עם זאת. RTOS מגדיל את מורכבות המערכת הכוללת ופותח בפניכם סוגים חדשים של באגים (כמו פסי נעילה). כחלופה ל- RTOS, תוכלו לשקול ולארכיטקטורת מכונות מדינה מבוססת אירועים (כגון QP).
אם למוצר שלכם יש רשת, ממשק משתמש מורכב וקובץ במערכת אז אתה יכול להיות בנקודה שבה אתה צריך לשקול מערכות הפעלה מלאות כגון VxWorks, Windows או Linux. מערכות הפעלה מובחרות כוללות מנהלי התקנים לפרטים ברמה נמוכה ומאפשרים לך להתמקד ביישום שלך.
זה באמת תלוי בהגדרתך 'מערכת משובצת'. יש כאלה שטוענים שאם זה לא תכנות חשוף למתכת, הוא לא מוטמע (מה שמונע את שאלתך), אבל אני לא מסכים עם זה - אני טוען שכל מערכת שתוכננה לבצע פונקציה אחת בלבד, כלומר, להריץ 'יישום' ספציפי אחד, אפשר לקרוא לו מערכת משובצת.
עם זאת, צריך להיות די קל לדמיין מצבים שייהנו מהשירותים של מערכת הפעלה מלאה. למשל, במקום בו אני עובד זה די נפוץ למצוא אנשים שבונים ציוד בדיקה על גבי חבילת עיצוב מכשור שעוברת על גבי חלונות. מערכות אלה מוגדרות לאתחל בתצורת תחנת הבדיקה ולנעול את השימוש הכללי (כדי למנוע השחתה של התחנה) וניתן לטעון שמדובר במערכות משובצות.
עם זאת, רק קניית קלט / פלט מדף מודולים, חיבורם למחשב המותאם להרכבה, והקצאת תצורה בממשק משתמש עשוי להיכשל בתור עיצוב של מערכת מסוימת. למצב קצת פחות מהמדף, שקול בקר תהליך מותאם אישית עם FPGA, שעבורו אתה רוצה לבצע רישום נתונים מהודר. אתה יכול להטמיע מערכת מעבד ליבה רכה (עם BSP קיים) ולהריץ לינוקס בזמן אמת על מנת להריץ מחסנית רשת (לצורך רישום ו- NTP שלך וכו ') ולעשות את כל השאר בלוגיקה.
כלל האצבע (המעורפל מאוד) שלי הוא שאם אתה זקוק ליותר מחוט שליטה אחד (נניח לפחות מכשיר אחד שכולל פרוטוקול או מכונת מדינה בתוספת משהו אחר לעשות) אז חלק מהתוכנות של OSish יהפכו את החיים קלים יותר
שאלה ישנה אבל אני אגיב בכל מקרה.
גם אם אין לך ערימות רשת וכדומה, בנקודה שבה אתה זקוק למתזמן משימות מכיוון שיש לך מספיק תהליכים ביישום המשובץ שלך, תוכל לשקול RTOS.כתיבת מתזמן ריבוי משימות שיתופי מבוסס טיימר פשוט היא לא כל כך קשה אך לוודא שתהליך תקוע לא יחסום את שאר היישום וכזה יכול לקחת זמן עד שהגיע נכון.אתה צריך ליישם מערכת עדיפות עם סוג כלשהו של הוראה כדי להיתקל בתהליכים בתור אם הם לא הושלמו.
RTOS גם נותן לך דברים כמו הגנה על זיכרון וכדומה, מה שמקל הרבה יותר על מעקב אחר כמה גאפים נפוצים בקוד C, אך מיקרו-בקרים פשוטים פשוט לא יוכלו להתמודד עם הגנת זיכרון מורכבת.לְמָשָׁל.MSP430 מאפשר לך להפריד בין קוד ונתונים ברמה גבוהה, אך אין בקרת גישה לזיכרון מגורען.
מערכת הפעלה למעשה מגשרת על הפער בין חומרה לתוכנת יישומים (דרך מנהל התקן). במילים אחרות, הוא מספק פלטפורמה ברמה גבוהה יחסית למתכנת, מה שבסופו של דבר מפחית את מורכבות הקוד. ובהמשך, מערכת ההפעלה מספקת פלטפורמה חזקה וגמישה לביצוע היישום.