תחום האמבדד

rontech

New member
תחום האמבדד

רציתי לשמוע מאנשים שעובדים או עבדו בפיתוח תוכנת אמבדד....
מה צריך לדעת?
כמה ידע צריך בחומרה?
האם מהנדס תוכנה / מתכנת יכול לעבור הסבה לתחום כזה?
 

Rשף

New member
1. תלוי בנישה הספציפית

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

ai21

New member
אבל זה כנראה הכיוון

ככל שהמחירים של החומרה יורדים, היתרונות של קוד גנרי בהיקף גדול עולים,
ואני מדבר בתור מי שרוב הפיתוח שלו היה ללא מערכת הפעלה.

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

בתור מי שהגיע לתחום בלי רקע חומרה רציני - אני שם לב כמה הידע הזה חשוב,
כשאין לי איש חומרה להתייעץ איתו אני "עיוור".
כמו שנאמר פה - הכי חשוב להבין דאטה-שיטס של רכיב החומרה צריך לפני שפונים לאיש חומרה מנוסה (אחרת אתה יוצא טמבל),
להכיר שיטות תקשורת בסיסיות עם רכיבי החומרה (PMW, IIC, SPI), ולהכיר איך עובדים סוגי החומרה הנפוצים (מה זה זיכרון DRAM,SRAM,FLASH), ואת המאפיינים השונים של מעבדים שונים.
לדעת לעבוד עם סקופ, וטיפה לעבוד בידים עם הלחמות (לנקודות דיבג שזיהית מהדאטה-שיטס).

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

rj111

New member
רוב האמבדד הוא עם מערכת הפעלה

בד"כ לינוקס או VxWorks.
תכנת אמבדד ממוצע עובד עם מערכת הפעלה (תהליכים/סמפורים) ולא רואה חומרה או סקופ או דטה שיט.
 

d70

Well-known member
אני לא בטוח
מי שרגיל לראות ולעבוד עם/בלי מערכות הפעלה -חושב שכולם עושים דבר.
בסבב חיפוש העבודה לפני כמה חודשים הראה לי שהתכנות ללא מערכות הפעלה נפוץ יותר ממה שנהוג לחשוב.

יתרה מכך,הרבה מערכות אמבדד מכילים כמה מעבדים שעובדים במקביל כשחלק ה low level רץ ללא מערכת הפעלה ומעליו מנהל אותו מעבד אחר שכן מריץ מערכת הפעלה.נתקלתי בחברה שמשרשרת 3 מעבדים,שהאחרון מדווח לדריבר של android שרץ על סמארטפון.
 

Rשף

New member
בדיוק

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

d70

Well-known member
דעתי
לדעתי אין בעייה הן למהנדס חומרה וגם למהנדסי תוכנה להכנס לעולם האמבדד.
זה תלוי איפה אתה על הסקאלה.פשוט תבחר.

כמו שאני רואה את הדברים אפשר לחלק את העולם האמבדד ככה:
1- low level או bare metal programing ,מערכת ההפעלה הינה לולאה אינסופית.
חסרונות :נדרש לקרוא דפי נתונים ולדעת חומרה.זמן בכתיבת דרייברים.
יתרונות: מעבדים רזים וזולים.גמישות חומרתית גדולה מבחינת החלפת רכיבים.למערכות low power ניתן להגיע לתוצאות אופטימליות.
ידע בחומרה הכרחי.

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

3- מערכות הפעלה linux ושות' .מערכת ההפעלה למעשה מחביאה את החומרה. יתרון:מאפשרת למתכנתים שמכירים לינוקס להכנס מהר לענינים ולחסוך זמן והתעסקות עם דרייברים.
חיסרון: נדרשים לעבוד רק עם כרטיסים וחומרה שנתמכת בדרייברים.

- תיקונים ,תוספות הערות יתקבלו בברכה
 
למעלה