חברת Microchip מתכננת (שוב) לקנות את Atmel, אחרי שהדיל המתוקשר עם Dialog נכשל (כנראה), ושוב הפורומים רוחשים משמועות וספקולציות. האם הרכישה תצא הפעם לפועל? האם הבעלים החדשים ישמרו ויפתחו את ארכיטקטורת AVR של Atmel, או יסלקו אותה מהשוק? ואולי כל זה אינו אלא פרפורי הגסיסה של עולם ה-8-ביט? ובהקשר זה, מה צופן העתיד ל-PIC32? שאלות אלה מדגישות התלבטות נפוצה: איזו ארכיטקטורה כדאי למתחילים ללמוד לעומק?
מי שלומד(ת) מיקרו-בקרים במסגרת פורמלית לא מתלבט, בדרך כלל, בשאלה איזו ארכיטקטורה לבחור: מוסד הלימודים בוחר בשבילו. גם בשוק העבודה המסורתי אין הרבה אפשרויות – ברוב המקרים, העובד החדש והזוטר חייב לעבוד לפי הבחירות של הוותיקים, וממשיך את המסורת. על הבחירות האלה אפשר כמובן להתרגז ולקטר, אבל לפחות יש מאחוריהן תוכנית לימודים, או פרנסה, מובטחת.
התמונה מסובכת יותר עבורנו, המפתחים העצמאיים שלומדים את החומר על חשבונם ובלי שום ערבון לעתיד. למשל, מה יקרה אם אשקיע כעת את כל האנרגיה שלי בהתמחות ב-Xmega של Atmel, ובעוד שנה Microchip יעלימו את הפלטפורמה הזו? האם אני עושה טעות בכך שאני עדיין עובד עם מעבדי 8-ביט, לנוכח הצמיחה המהירה של שוק ה-ARM? וגם שם, ההבדלים בין מיקרו-בקר מבוסס ARM של ST לכזה של TI, למשל, הם מספיק משמעותיים כדי שהתמקדות בדגם ואפילו ביצרן ספציפי תרגיש כמו הימור מסוכן. וכאילו שכל זה לא מספיק, היצרנים לא מחכים לנו עד שנלמד את המוצרים הישנים, וכל הזמן מוציאים לשוק מוצרים חדשים. מה לעשות?
ברור שחייבים להתמקד ולהתמקצע במשהו. יש גבול – והוא מאד נמוך – למה שאפשר להשיג עם צעצועים כמו ספריות הליבה של ארדואינו, ועם טעימות אקראיות ממיקרו-בקרים מזדמנים. ברור גם שהתמקדות ראויה לשמה היא תהליך שדורש השקעה רבה. אז על איזו פלטפורמה כדאי להמר, ומאילו פלטפורמות וארכיטקטורות כדאי להתרחק, או לפחות להניח בצד עד שעתידן יתבהר?
אין לי תשובה ברורה לשאלה הזו, ואני בספק אם למישהו אחר יש. בדיונים הסוערים שמתקיימים בפורומים שונים אפשר למצוא תשובות כמספר המשתתפים, אם לא יותר, וניכר שרובם מדברים מתוך הנישה הספציפית שבה הם עובדים ושאותה הם מכירים. מה שעוד יותר גרוע, כשיורדים לפרטים הקטנים העניינים רק מסתבכים: חברה X אולי ותיקה ויציבה אבל התיעוד של המיקרו-בקרים שלה על הפנים, או שהתמיכה גרועה, ולהיפך.
מה שכן יש לי הם קווים מנחים כלליים, שאני מציע אותם גם לכם בלי שום אחריות. הם פשוט נראים לי הגיוניים…
- ככל שמכירים (היטב!) יותר כלים, כך קל יותר ללמוד כלים נוספים. אם הצלחתי להריץ דוגמת Blink מוכנה על שבב X זה לא יקדם אותי בהבנת מערכת הפסיקות של שבב Y – אבל אם הבנתי לעומק את X, זה ייתן לי רקע שיעזור להבין את Y, אפילו אם הם לא עובדים באותה שיטה. המסקנה: להתחיל ללמוד כמה שיותר מהר את X, לא משנה באיזה X תבחרו.
- עד שמגיעים לרמה גבוהה, כדאי להתרחק מהמוצרים החדשים והנוצצים ביותר, אם הם לא מבוססים על ארכיטקטורה וותיקה ובדוקה. פשוט אין לנו דרך לדעת אם הם טובים ואם יש להם עתיד; כרגע, מה שיש לנו לגביהם זה רק יחסי ציבור, ומסמכים טכניים שעוד לא עברו אפילו סבב תיקונים אחד.
- להתחיל בקטן. מיקרו-בקרים מודרניים, ובמיוחד 32-ביט, הם יצורים מורכבים מאד, ולהתחיל את הלמידה איתם זה כמו לקפוץ למים העמוקים לפני שלומדים לשחות. אולי נצליח איכשהו להחזיק את הראש מעל למים, אבל…
- לא להתרגש משמועות. הרבה מאד פרסומים ודעות מקורם, כאמור, באנשים בלי פרספקטיבה רחבה מספיק – וזה עוד במקרה הטוב, כשאין מאחורי הדברים אינטרס מסחרי כזה או אחר. עולם ה-8-ביט "עומד להיכחד לגמרי" כבר שנים – הוא לא באמת ייעלם כל כך מהר, שום רכישה לא תסגור את הברז באופן מיידי על פלטפורמה נפוצה, יש המון מיקרו-בקרים בני עשר ויותר שעדיין שנמכרים בשוק בכמויות – בקיצור, יש זמן. גם במקרה הכי גרוע, עד שהפלטפורמה שבחרנו תיעלם כבר נהיה מספיק חכמים כדי שזה לא ישנה, ונוכל ללמוד במהירות משהו אחר.
- ובכל זאת, ליתר ביטחון, לא לשים את כל הביצים בסל אחד. שתהיה לנו תמיד לפחות "תוכנית גיבוי" אחת, ארכיטקטורה אחרת של יצרן אחר, שגם תיתן לנו פרספקטיבה רחבה יותר (תמיד טוב ללמידה), וגם תציל אותנו אם שמועה מבהילה כזו או אחרת כן תתממש בסופו של דבר.
לסיכום, אם מיציתם את הארדואינו, קחו איזה מיקרו-בקר קטן (למשל מארכיטקטורת PIC, AVR, STM או MSP430) והתחילו ללמוד אותו ברצינות בלי לדאוג יותר מדי מהעתיד. במקביל, שימו עין על מעבד 32-ביט כזה או אחר ושחקו איתו קצת. מעבר לכך, אין טעם לקנות כל לוח חדש שיוצא ואז לאחסן אותו במגירה. למעשה, לרוב המתחילים יש אפילו יותר לוחות ארדואינו ממה שהם באמת צריכים. הפיתוי גדול, אבל חייבים לעצור מדי פעם ולשאול את עצמנו האם הקניות האלה מוצדקות, והאם מיצינו את הפוטנציאל של מה שכבר יש לנו.
בעבר היתה נפוצה מאד האימרה (השגויה) שאנחנו, בני האדם, משתמשים רק בעשרה אחוזים מהמוח שלנו. בכמה אחוזים מהמיקרו-בקרים שקניתם אתם משתמשים?
נראה לי שיש שני מקרים קיצוניים שבהם מעבדי 8 ביט הם שימושיים: 1) כשרוצים ללמוד – כי הם פשוטים 2) כשרוצים ליצר יותר מ 10K יחידות שדורשות בקר – כי הם זולים. אם אתה מיצר רק מאה יחידות ומטה, אז חבל על הזמן שאתה מבזבז באופטימיזציות על בקר חלש כי היית יכול לקנות בקר יותר טוב (32 ביט אולי) תמורת עוד כמה עשרות סנטים. הזמן שלך יותר יקר מעוד 100X$0.5 בעלויות חומרה. יש חסם ידע לעבור לבקר חדש, ברור שפיתוח על בקר חדש יהיה איטי יותר בפרוייקטים הראשונים, ובהם לא תראה שום "רווח" מלעבור לבקר חדש. אבל חישובי העלות\תועלת שציינתי… לקרוא עוד »
אני לא בטוח שהשיקול הכלכלי עדיין תקף – כבר כיום יש מיקרו-בקרים קטנים בארכיטקטורת ARM במחיר של חצי דולר (כשקונים בכמויות).
אבל יש גם פרוייקטים קטנים, שאפשר לממש עם 8-ביט בלי צורך באופטימיזציות. מיקרו-בקרים 8-ביט מודרניים כוללים גם מודולים פריפראליים משוכללים שמורידים עומס מהקוד הראשי, כך שאם היישום הוא לא תובעני מאד מבחינה חישובית, הם יוכלו להחזיק אותו בקלות – ואולי יהיו טיפה יותר חסכוניים בחשמל?
אפרופו אורך חיים צפוי של מיקרו-בקרים: חברת ST, למשל, מתחייבת ל-10 שנים לסדרות המיקרו-בקרים שלה ( http://www.st.com/web/support/product_longevity.html )