embedded linux הכוונה

  • פותח הנושא d70
  • פורסם בתאריך

d70

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

אשמח לשמוע ממכם קצת רעיונות לאן לכוון,
באילו הפצות אמבדד לינוקס התעשייה/אתם משתמשים?
מעבדים/חומרה מומלצים?
 

vinney

Well-known member
מדובר בעולם ומלואו
קצת קשה להגדיר embedded linux בצורה פשטנית כמו שאתה שואל. זה יכול לנוע מהפצה כמעט סטדנרטית שרצה בתוך קופסה שהיא לא "מחשב" במובן הרגיל של המילה, להפצה שהיא אך ורק kernel שמופשט לחלוטין מכל מה שלא קשור וכל הדרייברים baked in בתוך הקובץ, וכל העזרים יושבים במקום אחד (busybox לדוגמא).
&nbsp
גם נושא תיזמון התהליכים חשוב - זה יכול להיות scheduler סטנרדטי לחלוטין (ז"א לא זמן אמת או זמן אמת "רך" - soft real time) ויכול להיות scheduler שמבטיח זמנים (למשל RTLinux).
&nbsp
גם חשוב על איזו חומרה אתה רץ - האם זה arm או mips, או אינטל, או משהו אחר? 32 או 64 ביט? יש נקודה צפה או אין? יש מעבד גרפי או אין? וכו' וכד'.
 

d70

Well-known member
זו הבעיה ,החומרה מאלצת הפצה ולהיפך
אין לי דרישות מיוחדות.אולי העדפה למעבדים בעלי ארכיטקטורת ARM.

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

דוגמא פשוטה, יש בכלל טעם לשקול שימוש במערכות הפעלה (לדוגמא uclinux) שרצות במעבדים ללא MMU ?
 

rj111

New member
מהניסיון המוגבל שלי בתחום
קח raspberry pi או beagleboard.
יש להם cpu של ARM, אבל סוג המעבד פחות משנה אלא אם אתה מתכוון להשתמש בפריפריאלס של המעבד.
תתחיל מהלינוקס שמותקן שם בדיפולט או שתשים דביאן.
תתחיל בכתיבה ביוזר מוד.
הקושי מתחיל כשצריך לכתוב בקרנל מוד - כתיבת מודולים/דרייברים, קימפול של הקרנל...
 

הפרבולה

New member
למה לא תכתוב "מערכת הפעלה" בעצמיך ?
במקום להיות כבול למערכת הפעלה מסוימת שלא בטוח שמתאימה לצרכיך וכנראה יש לשלם עליה תמלוגים, אולי תכתוב מערכת הפעלה מאפס לכרטיס חומרה שלך. כמו למשל שעושים עם כרטיסי ארדואינו ( האם לינוקס רץ על כרטיסים אלו ? ).
&nbsp
אלה אם כן מדובר בכרטיס שצריך לתמוך בהרבה קלט פלט סטנדרטיים כמו צג, דיסק , תקשורת TCP/UDP ..... שגם אז זה אפשרי לכתוב לבד אבל כנראה זמן ההשקעה גדול מידי.
&nbsp
מה אמור הכרטיס הזה לעשות ?
 

BravoMan

Active member
ארדואינו מכילים מיקרו בקר ולא מעבד
ולכן אינם מריצים מערכת הפעלה כלל.

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

לשואל המקורי:
מה הרקע שלך בלינוקס שאינו embedded?

כפי שכבר כתבו פה, הגבול בין ebedded ולא embedded די מתחיל להיטשטש היום.
יצא לי לשחק קצת עם האוכמניה (RP), ולמרות שמדובר בלוח מבוסס ARM שכולל גם GPIO, חיבור למצלמה באיזה תקן שבחיים לא שמעתי עליו קודם, וניזון מספק 5V, הוא מריץ הפצה שכמעת אינה שונה בכלום מ-debian שולחני רגיל.

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

אפשר יהיה לתת הצעות יותר קונקרטיות...
 

user32

Well-known member
מנהל
זה לא לגמרי מדוייק
ארדווינו הוא SoC והוא גם מיקרו בקר ובהחלט יש לו מעבד. המעבד שלו הוא ARM Cortex M0 ברוב הדגמים. הוא לא מריץ מערכת הפעלה כמו לינוקס אבל כמובן שיש לו מערכת הפעלה שמריצה את כל הפעולות שהוא יודע לעשות כולל IO ועוד הרבה דברים. זה מה שמכונה RTOS כמדומני. למיטב ידיעתי אפשר גם לצרוב לו מה שרוצים למי שמתעקש להחליף את הRTOS במימוש אחר או לשנות אותו.

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

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

BravoMan

Active member
קצת מוזר לי מה שאתה כותב:
בדקתי עוד פעם באתר של ארדואינו, ולמעט דגמי ה-Zero בהם מוצהר בבירור שכוללים ליבת ARM, עבור שאר הדגמים, כמו Uno ואפילו Mega מוזכר רק ה-ATmega2560 ואף מילה בשום מקום על ARM.
&nbsp
כנ"ל לגבי RTOS - מדברים שם על bootloader שמוריד את הצורך בצורב פיזי כדי לעלות קוד, אבל ממה שהבנתי טיפול בחומרה מגיע דווקא מספרייה שהקומפיילר מוסיף, לא מערכת קיימת שרצה על יחידה.
&nbsp
אבל לא יצא לי לעבוד עם אחד כזה, אז אולי אני מפספס משהו.
אם יש לך קישור מעניין אשמח לקרוא!
 

user32

Well-known member
מנהל
נראה שאתה צודק לגבי הARM אבל זה עדיין מעבד
מרוב לוחות שהשתמשתי בהם "Arduino like" בדמיון שלי זכרתי שלכל הארדווינו יש M0 בפנים (לחלקם אכן יש). כך או כך, זה לא משנה. למיקרו בקר רגיל יש מעבד מספיק חזק כדי להריץ קוד שקומפל משפה של בני אדם (C...) והתכנות עבורו הוא כמו לכל CPU.

כשכתבתי "לצרוב" לא התכוונתי למכשיר צורב פיזי אלא לכך שאפשר להחליף את הboot loader כמו שכתבת. בברירת המחדל התוכנה הרגילה שאתה כותב נכתב לאיזור המוקצה לה והRTOS או הBL נשאר במקומו אלא אם כן מחליפים אותו.
אני לא יודע איזה חלקים נמצאים בכרטיס ואיזה מוספים ע"י הקומפיילר. לחלק מההתקנים כמו GPIO וכו' יש קבצי H שמוסיפים לקוד וספריות שהוא מלנקג' אבל הדברים הבסיסיים כמו הקוד שטוען את האפליקציה ומריץ אותה, התאוששויות מאסונות (ריסטרטים אוטומטיים ודברים כאלה) ועוד פונקציות שמצילות את הכרטיס ממתכנתים חובבנים כמוני יושבים על הכרטיס לדעתי, כולל למשל האפשרות להטעין ולהריץ קוד דרך הUSB למשל.
זה די נוח כי כמתכנת אתה יכול להתרכז בuse case שלך, בעצם בתוך לולאת הreal time בלי להתעסק עם כל המסביב. זה כמו הuser space של האמבדד
 

andthisistheme

New member
It's completely possible to downspec the SoC WTR
It's been done before... the SoC is pretty generic. So would be the image pipeline. Why downspec? It could well be for power consumption or heat transfer, but as likely is - it enables you to sell the "premium SoC", with fully exposed pipeline, more expensively.

SoC video/image processing pipeline is heavily patented. It's basically a minefield.
 

d70

Well-known member
ככה
אין רקע בלינוקס אבל אם הגבול מיטשטש למה לא להתחיל על embedded ?
למה התכוונת ב"להתחיל ללא לוח"?
פרוייקט ספציפי? אני מאמין שקודם ראוי ללמוד את הבסיס (כלי פיתוח שילוב טעינת תוכנית בסיסית וכו') אח"כ כבר נחשוב על השלב הבא.
 

BravoMan

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

d70

Well-known member
לכתוב מערכת הפעלה? תמלוגים?
חלק ניכר מזמני פיתחתי על גבי מעבדים חסרי מערכת הפעלה ,כל נושא תזמון המשימות נוהל ע"י לולאה ראשית פלוס ISR.(יש אומרים שזו גם מעין מערכת הפעלה..)
לגבי תמלוגים.כמו שבעולם הדסקטופ חל מעבר ממערכות WINDOWS אל מערכות פתוחות חופשיות כמו Linux , כך גם בעולם האמבדד הפכה FreeRTOS לאלטרנטיבה למערכות הפעלה שדורשות תשלום עבור שימוש.
אגב,לכל כרטיס עם חיבור צריבה (JTAG וכו') ניתן למחוק ולכתוב לפלאש של המעבד קוד ללא שום מערכת הפעלה או bootloaders.

מטרת הכרטיס? היכרות עם לינוקס ואמבדד לינוקס.
 

הפרבולה

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

BravoMan

Active member
אם אתה עדיין צריך לעבור את השלב של
"הכרות עם לינוקס" היית ממליץ להתחיל דווקא עם הפצה שולחנית רגילה לגמרי על המחשב שלך ב-dual boot או לפחות VM.
&nbsp
הרבה יותר נוח להכיר קודם את סביבת העבודה, ורק אז לצלול לעבודה עצמה.
אם עד עכשיו פיתחת בסביבת Windows, יש לך eco system שלך ללמוד עליו לפני שבכלל תגיע לדבר עם כרטיס כלשהו.
&nbsp
בזמנו, כשעשיתי את המעבר ללינוקס (רגיל), הספר הזה עזר לי מאוד לעשות סדר בבלגן:
https://www.amazon.com/Beginning-Linux-Programming-Neil-Matthew/dp/0470147628
&nbsp
משם, כבר יכולתי להמשיך דרך האינטרנט אז עכשיו אני ממליץ עליו בחום לכל מי שמחפש להתחיל פיתוח ללינוקס (או על לינוקס למערכות אחרות).
&nbsp
אומנם לא מוזכר שם embedded, אבל אחד הדברים היפים בסביבת לינוקס הוא גינריות הכלים.
&nbsp
אני עובד לרוב עם מכשירים מבוססי Android ולמרות שמדובר במערכת מאוד שונה מכל הפצה שולחנית, עם user space ייחודי לגמרי ושינויים רבים ברמת ה-kernel, מבחינת הכלים יש חפיפה כמעת מוחלטת עם מה שמשמש בסביבת Desktop.
אם פספסתי ואתה בשלב מתקדם יותר וכבר מכיר מי נגד מי בעולם פיתוח לינוקסאי, אני מצטרף להמלצה של rj על עוגת אוכמניות. זול, חמוד, המון חומר וקוד זמין.
 

d70

Well-known member
OK נתחיל לקרוא פלוס התקנה של הפצה ל desktop ונתקדם משם
 

ipv6

Member
זה באמת ספר טוב אבל הוא מאד מאד ארוך
http://advancedlinuxprogramming.com/
הייתי ממליץ להתחיל מפה, זה יותר קצר, פחות מפורט ומדויק אבל עדיין לא רע למתחילים. תמיד אפשר להתעמק אם זה לא מספיק.

השם מטעה, אין שם שום דבר מתקדם - זה ספר בסיסי
 

יבגני34

New member
עולם הולך ונעלם, כמו תעשיית החומרה בישראל
תלמד אנדרואיד, פייתון, גאוה, nodejs
 
למעלה