פיתוח תוכנה בדרך כלל קשה אך עבור מערכת משובצת, מדובר ברמת קושי חדשה לגמרי. מפתחי קושחה צריכים להיות בעלי ידע טוב אודות פיתוח חומרה ולהבין את פעולתו הפנימית של מעבד משובץ. למאמר של היום, אשתף כלים וטיפים שניתן להשתמש בהם בכדי להשיג יעילות גבוהה ולבטל חלק מהדברים שהופכים את פיתוח הקושחה למייגע.
פיתוח תוכנה משובץ עובר תהליך פיתוח דומה עם פיתוח תוכנה "רגיל". ללא קשר למודל הפיתוח / ניהול שאומץ, פיתוח תוכנה משובצת כולל בדרך כלל את השלבים הבאים:
- פיתוח דרישת המוצר
- תכנון מערכות ופיתוח אלגוריתמים
- סִמוּל
- בדיקה
נבחן כמה מהקשיים הנובעים משלבים אלה וחלק מהכלים העלולים להגביר את היעילות והפרודוקטיביות.
1. פיתוח דרישת מוצרים
מפרטי מוצרים נעשים לעיתים קרובות תוך מחשבה על מעצבי הלוחות. בדרך כלל הוא מכיל מעט מידע שיכול לסייע בפיתוח קושחה ובכך, מפתח התוכנה המשובץ מסיים עם מסמך פגום של 250 עמודים (ממוצע) שאינו יכול לשמש להפניות, ואם לא נשקול בקפידה יכול להוביל בקלות לפיקוח בעיצוב אשר, בתורו., הוביל להארכת מסגרת הזמן של הפרויקט אם לא כישלון כולל של הפרויקט. המסמכים מכילים לעתים רחוקות מידע על רושמים או על שדות הסיביות שלהםבין היתר וזה עולה למפתחי הקושחה מספר שעות עבודה בזמן שהם מחפשים במסמך כדי לזהות דברים כמו איזה רישום שייך לאיזו קבוצה ואיזה שדה סיביות שייך לאיזה רישום. להלן כמה טיפים שיכולים לשקול כדי להבטיח פיתוח מסמכים יעילים יותר למפרט הפרויקט.
שימוש בתיאורי הרישום
כפי שנדון לעיל, מפתחי קושחה צריכים להבין את המורכבויות של כל הרישומים, הזיכרונות וכו 'של כל רכיבי הבקרה (CPU, MCU וכו') בפרויקט כדי להיות מסוגלים לשלוט ביעילות בכל חלקי המערכת. כדי למקם זאת, מפתחי הקושחה יכולים להבטיח שמסמך המפרט נושא תיאור נכון של הרשמים יחד עם מפות זיכרון. לכל הרשמים באלמנט הבקרה ניתן להקצות שם ייחודי שמקל עליהם בזיהוי ברחבי המסמך וכולם יכולים להיות מקושרים באופן חם כך שהם יובילו לרשימה בתוך המסמך המציינת את השם, המיקום, החסימה והכתובת של כל רשום.
תיאורי משימות
דרך נוספת באמצעותה ניתן לעשות שימוש במסמכי מפרט למפתחי תוכנה משובצים היא על ידי תיאור מה כל בלוק אמור לעשות וכיצד עליו לעשות זאת. גם בשלב זה, צריך להיות תוכניות לטיפול בשגיאות תחת כל בלוק. בעיקרון זה נראה כמו מפתח הקושחה שאומר; "כשאני מגיע לכאן, אני צריך לעשות את זה, את זה ואת זה, ולהבטיח שזה, זה וזה לא יקרה". זה עוזר להנחות את עבודתו של המפתח ומסייע בהערכת הפרויקט עוד לפני שמתחיל התכנון לזהות שגיאות ותקלות אפשריות, וחוסך זמן יקר וכסף.
ישנם גורמים נוספים, כולל מבנה מסמכים, שימוש בגופנים קלים לקריאה (משהו שהמפתחים יכולים לעבוד איתו גם כשהם עייפים), תרשימים ותמונות במידת האפשר, מה שיכול להגביר את היעילות של צוות הקושחה לאחר שלב זה.
2. תכנון מערכת ופיתוח אלגוריתמים
שלב זה כולל פיתוח פסאודוקודים, תרשימי זרימה, מכונות מדינה וכל מה שקשור בתכנון מה הקושחה. בשלב זה, ניתן להשתמש במספר לא מבוטל של כלים כדי לסייע בארגון מחשבות, לחקור תוכנות מדור קודם / שנכתבו בעבר סביב הפרויקט ולפתח תרשים זרימה משלך, מכונת מדינה וכו '. חלק מהכלים הללו נדון להלן.
PIMs
בשלב זה של פיתוח המוצר, מפתחים נוטים לשרבט הרבה מכיוון שהם אוספים משאבים על הפרויקט מקישורי אינטרנט לנוסחאות וכו '. אחת הדרכים הטובות ביותר לעקוב אחר מידע זה כדי שיהיו שימושיות בהמשך היא באמצעות PIM. (ניהול מידע על מוצרים) כלים. ישנם מספר לא מבוטל של PIMs שם אבל אזכיר כמה עם כמה תכונות יוצאות מן הכלל.
1. Evernote
Evernote עוזר לך לרשום הערות הזמינות בכל פלטפורמה, כך שתוכל לבדוק את ההערה שעשית במחשב שלך בזמן שאתה נמצא באוטובוס הביתה. ההערות מסודרות היטב וניתנות לחיפוש לחלוטין כך שתמיד תמצאו את מה שאתם צריכים.
2. TrunkNote
פתק תא מטען הוא יישום לקבלת פתקים דמויי וויקי. זה מביא את כל הכוח הארגוני של הוויקים לרישום הערות. זהו יישום מבוסס טלפון נייד אך ניתן לסנכרן אותו בקלות עם מחשב באמצעות WIFI.
סוגים אחרים של PIM כמו Tiddlywiki וכו '. כל אחד מהם כולל תכונות שעשויות להפוך אותו לאטרקטיבי יותר עבור אנשים ספציפיים ועלול לקחת דגימה לפני שתשלים לבסוף על אחד כזה.
הבנת קוד מורשת
קבוצה נוספת של כלים אשר שימושיים מאוד בשלב התכנון הם כלים להבנת קודים מדור קודם. במצבים שבהם המוצר המתוכנן הוא גרסה משופרת של מוצר קודם, היזם עשוי למצוא את זה שימושי לבחון את העבודה שבוצעה כבר כדי לקבל כמה רעיונות ואולי פיסות קוד לפרויקט חדש זה. זו עשויה להיות דרך ארוכה למדי, במיוחד אם לא היית חלק מהצוות שבנה את התוכנה הקודמת. ישנן מספר לא קטן של תוכנות המסייעות בבניית עצים, יצירת תיעוד ותרשימי זרימה מקוד שנכתב כבר.
1. דו חמצן
Doxygen הוא כלי חזק למדי המסייע ביצירת תיעוד מקודי מקור. זה תוכנן בעיקר לעבוד עם C ++ אך עובד גם עם C, Python וכמה שפות אחרות. יש לו את היכולת לחלץ את מבנה הקוד של כל קוד, המספק גרפי תלות שנוצרו אוטומטית ודיאגרמות ירושה שיעזרו להמחיש את הקוד.
2. Graphviz
על פי אתר האינטרנט שלהם, graphviz מסייע בהצגת מידע מבני כתרשימים של גרפים ורשתות מופשטות. ניתן להשתמש בו לצד Doxygen כדי להבין טוב יותר את הגרפיקה המופקת על ידיו.
3. סיקורד
Srecord הוא כלי רב עוצמה לתמרון תמונות קושחה ולהמרה בין פורמטים שונים של קבצים. בעזרתו ניתן לחשב ולעשות CRCs ובדיקות על בלוקי בתים, לתקן קבצי שגיאה שנוצרו עקב שרשראות כלים, ולסנן או להעביר קטעי קבצים בין היתר. מידע נוסף על השימוש בו ניתן למצוא בדף SourceForge שלו.
כמה כלים אחרים שנופלים תחת קטגוריה זו הם CrystalRev ו Hexplorer בין היתר.
פיתוח אלגוריתמים
כל אגרגטי המחקר ורישום הערות לפיתוח אלגוריתמים המסתובבים לפסאודוקודים ותרשימי זרימה עבור הפרויקט. קיימים מספר כלים לפיתוח תרשימי זרימה ולמרות שרובם אינם בלעדיים לפיתוח קושחה, הם מספקים תכונות שימושיות וחשובות שפשוט מסיימות את העבודה ומסייעות בשמירת התרשימים לאורך מחזור פיתוח המוצר. להלן כמה מהכלים הטובים ביותר שיש לתרשימי זרימה.
1. QFSM
QFSM הוא כלי גרפי לעיצוב והדמיה של מכונות מצב סופיות. היכולת שלה לדמות את העיצובים הופכת אותה להרבה יותר טובה מרוב התוכנות האחרות בקבוצה זו. זה שימושי במיוחד כאשר אתה מתכנן מכונות מדינה עבור FPGA וחומרת יעד דומה.
2. תרשים לוסיד
ניתן לטעון כי תרשים Lucid הוא התוכנה הטובה ביותר והגמישה ביותר לשרטוט זרימות שיש שם. זה מבוסס אינטרנט ויש לו תכונות צוות המאפשרות לך לעבוד בין מספר מכשירים ולשתף פעולה בזמן אמת עם חברי הצוות.
3. Microsoft Visio
Visio הוא אחד הכלים הגרפיים הטובים ביותר כיום. יש בו מגוון של אובייקטים מתחומים שונים שמקל על התיאור של כל דבר. עם זאת, הוא אינו מגיע עם תכונות המשפרות את שיתוף הפעולה בין הצוותים וניתן להשתמש בו רק במכונת חלונות שעליה הוא מותקן.
4. שקופיות של גוגל
אחד הדברים המרכזיים בפיתוח מוצרים בעולם של היום הוא השימוש בכלים שמאפשרים לצוותים לשתף פעולה בצורה יעילה מכל מקום שהם נמצאים וזה דבר אחד שקפיצות Google מביאה לסיפון. בעזרתו ניתן לפתח כל מיני תרשימים מתרשימי זרימת תוכנה ועד תרשימים ארגוניים ומפות חשיבה. הוא מבוסס ענן ועובד כמעט בכל הדפדפנים הפופולריים.
קיימים כמה כלים נוספים ליצירת תרשימי זרימה ופיתוח אלגוריתמים כללי, כרגיל, כל אחד עם היתרונות והחסרונות שלו.
3. קידוד לקושחה משובצת
כל מה שהוזכר עד לנקודה זו מוביל לכאן. עולם ה- SDKs וה- IDEs, בחירת הכלים בשלב זה תלויה במכשיר היעד ובתכונות שייבנו במכשיר, מסיבה זו, אני לא אמנע מהדיון SDDs ו- IDEs פופולריים כמו MPLAB וכו 'ופשוט להישאר לכלים שהם יותר משלימים באופיים.
1. QT (פיתוח GUI)
תצוגות (אינטראקטיביות או לא) הן המדיום הפופולרי ביותר למתן משוב למשתמשים בימינו, ו- SDK של QT הוא אחד הטובים שיש וכנראה לא זר לאף אחד במעגל המוטבע. הוא מספק תכונות של "גרור ושחרר" שמאפשרות לפתח יישומים מורכבים ומבוססים GUI למכשירים משובצים, ללא קשר לפלטפורמת היעד או לשפת התכנות המשמשת לפיתוח הפרויקט הכללי. זה בעצם מבטל את הלחץ הקשורים לשימוש בקוד ליצירת ממשקי משתמש.
2. (אב טיפוס מהיר)
אחד מצווארי הבקבוק הגדולים בפיתוח תוכנות משובצות הוא העובדה שלרוב החומרה אינה זמינה לבדיקת דברים תוך כדי תנועה בזמן פיתוח התוכנה. פעמים רבות כאשר הוא זמין, מפתחי הקושחה היו אמורים לחכות כל הזמן שנדרש לחומרה כדי להיות מוכן לעשות מעט או כלום. זה מגדיל את זמן ההובלה ולא יוצר מקום לסינכרון בין מהנדסי החומרה למפתחי הקושחה שהיה מגדיל את איכות המוצר. כדי לעזור בפתרון הבעיה, החבר'ה ב- VaST יצרו פלטפורמת פרוטוטייפ וירטואלית ברמת מערכות אלקטרונית, שניתן להשתמש בה כדי ליצור אב טיפוס של חומרה וירטואלית. שעליו ניתן לבצע תוכנה משובצת לקביעת ביצועי מערכות לפני שהחומרה מוכנה.
3. דו חמצן (תיעוד)
אחד החלקים החשובים ביותר בכתיבת קוד כלשהו הוא תיעוד ואחד הכלים הפופולריים ביותר לכך הוא Doxygen. מלבד השימוש בו להבנת תוכנות מדור קודם, ל- Doxygen יש את היכולת לחלץ תגובות באופן אוטומטי מקוד וליצור תיעוד שכולל אותו. מבני Doxygen כוללים קבצים בצורה גרפית ויוצרים הפניות לכל פונקציה, משתנה ומקרו המשמשים בקוד שלך. תרשימי זרימה ודיאגרמות זרימת נתונים יכולים גם להיות מוטמעים בתיעוד על ידי שילוב של Doxygen עם graphviz.
4. GIT (מערכות בקרת גרסאות)
קשה להאמין שמישהו מפתח תוכנות מכל סוג שהוא ללא מערכת בקרת גרסאות כלשהי בימינו, אך למקרה שתעשה זאת, זה רעיון די רע שיכול להוביל לטעויות שיעלו לך זמן וכסף. גיט בולטת בין כל כלי בקרת הגרסאות שם מכמה סיבות. זהו קוד פתוח, מהיר, יעיל ובעיקר מקומי. מלבד Git, כדאי להזכיר גם כלים כמו חתרנות.
בדיקת קושחה משובצת
בדיקה היא חלק חשוב בתהליך הפיתוח לכל דבר. חברות מאבדות אלפי דולרים כשמכשירים נזכרים עקב שגיאות קושחה, ולכן יש להתייחס אליו ברצינות רבה. זה נעשה לעתים קרובות, יד ביד, עם קידוד ומערכת הכלים הראשונה לבדיקת קוד, הם ככל הנראה הבאגים בתוך IDE או SDK המשמשים לפרויקט. הבדיקה באה בצורות שונות ומבוצעת בשלבים שונים, ככזו, היא כוללת כלים מגוונים. כלי בדיקה יוצרים פיתוח קושחה חוצה אימות עיצוב לכלי ניתוח סטטי וכלי בדיקה בזמן ריצה. להלן כמה כלים שאני באמת מועילים.
1. קריסטל REV
Revs קריסטל הוא כלי ללימוד קוד. בעזרתו ניתן ליצור תרשים זרימה מקוד C / C ++ מה שהופך אותו לכלי נהדר לסקור את הקוד שלך ולראות אם התכנון המקדים הוא זה שיושם. בעזרת מהפך קריסטל תוכלו לראות במהירות את ההבדל בין העיצוב וההטמעה. יכולתו ליצור תרשימי זרימה, נתונים וזרימת שיחות מקודים הופכת אותו גם לכלי, שימושי לניתוח קוד מדור קודם.
2. PC- מוך
PC-lint הוא אחד מכלי בדיקת הקושחה הוותיקים ביותר בסביבה. הוא מסוגל לנתח תוכנות לזיהוי באגים, פגיעות אבטחה, ולהבטיח שקוד נכתב בהתאם לתקני התעשייה. כלים דומים כוללים polyspace ו- LRDA, חצילים וטסי בין היתר.
3. Wireshark
זה שימושי בעת בניית התקני רשת. זה למעשה מרחרח מנות ויכול לעזור להציג את הנתונים שהמכשיר שלך משדר. זה יכול לעזור באבטחת המכשיר.
4. מנהל התקן יציאה טורית וירטואלית
תוכנת VSPD על ידי eltima היא כלי שקיבלתי לאחרונה גם ידיד. זה מאוד שימושי כשעובדים על מנהלי התקנים ופיתוחים אחרים הקשורים ליציאה. יציאת ה- com הווירטואלית הווירטואלית מעניקה לך את היכולת לבדוק התנהגות של יציאות com ללא מכשיר היעד. אתה יכול ליצור מספר בלתי מוגבל של יציאות המסוגל לחקות את כל ההגדרות של יציאות קומיות אמיתיות. התוכנה מגיעה גם עם תכונות כמו פיצול יציאות טוריות, מיזוג יציאות Com, שימוש בחיבורי יציאת com חבילות בין תכונות מגניבות אחרות.
זה המאמר הזה, תודה שהקדשת זמן לקריאה. אמנם זה בלתי אפשרי כנראה לרשום את כל הכלים שם בחוץ, אבל אני מקווה שתמצא כמה מהכלים האלה שימושיים.