בימים אלה קשה ויקר להשיג צורב סטנדרטי עבור דגמי AVR החדשים. אם מוכנים להתפשר קצת על קלות השימוש, הנה פתרון חלופי וזמין הרבה יותר.
מרגע שאנחנו יוצאים מאזור הנוחות של ארדואינו ומתחילים להשתמש במיקרו-בקרים "גולמיים", ישירות מהמפעל, אנחנו זקוקים לצורב חיצוני. בעבר, עבור שבבים כמו ATmega328P המפורסם, יכולנו להעלות ללוח ארדואינו קוד מסוים שהופץ ברשת, שהפך אותו למעין צורב ICSP מאולתר. אך ממשק ICSP הוא היסטוריה עתיקה: כבר חמש שנים לפחות, כל דגמי AVR שיוצאים לשוק מצוידים בממשק אחר שנקרא UPDI.
הצורבים הרשמיים שתומכים ב-UPDI, כגון PICKIT 5 החדש-מאוד, PICKIT 4 או Snap, הם יקרים יחסית ונכון להיום גם חסרים במלאי בהרבה מקומות. כמו כן, לפעמים אנחנו רוצים לתת ללקוח אפשרות פשוטה וזולה לצרוב לבד קוד חדש על חומרה שכבר מסרנו לו.
ברמת החומרה, UPDI הוא לא יותר מאשר Half-duplex UART, כלומר שידור UART על גבי חוט יחיד שמשמש TX ו-RX לסירוגין (לא לשכוח חוט נוסף לאדמה משותפת). זה אומר שצריך להוסיף רק רכיבים בודדים להתקן UART רגיל, כגון מתאם USB-to-UART, כדי לקבל את תווך התקשורת הדרוש. החלק היותר-מסובך הוא התוכנה שמנהלת את התקשורת.
פתרון עם פייתון
הפתרון הטוב ביותר שאני מכיר הוא ספריית פייתון בשם pymcuprog. זהו פרויקט רציני (מבית Microchip עצמה!) עם הרבה יכולות, ואחת מהן היא היכולת לתקשר בפרוטוקול UPDI דרך UART. בהנחה שיש לנו Windows עם התקנה קיימת של פייתון, נתקין את הספרייה הרלוונטית באמצעות הפקודה הבאה:
pip install pymcuprog
בעזרת נגד 1K בערך, וקצת הלחמות, נהפוך מתאם USB-to-UART זול למתאם צריבת UPDI (בתמונה למטה יש גם נגד 0, במקום חוט פשוט). חשוב לזכור, אם המעגל שבו נמצא המיקרו-בקר פועל במתח שונה מזה של המתאם, חייבים לדאוג גם להמרת רמות מתאימה.
נניח שקימפלנו קוד, שמיועד למיקרו-בקר ATtiny202, לקובץ HEX שנקרא mycode.hex, ונניח שהמתאם שבתמונה זוהה במחשב כ-COM9 וחובר נכון למעגל המטרה. הפקודה לצריבת הקוד תיראה פחות או יותר כך:
pymcuprog write -f mycode.hex --erase --verify -d attiny202 -t uart -u com9
נריץ אותה בחלון ה-command וכעבור שנייה או שתיים נקבל משהו כזה:
זה עבד לי "ישר מהקופסה", על הניסיון הראשון ובלי שום התעסקות נוספת, ולכן אני סבור שזהו פתרון מצוין למייקרים מנוסים ולאנשים שמרגישים בנוח עם ממשקי שורת פקודה (CLI). את הפרטים המלאים ניתן למצוא בדף הפרויקט, שם מוסברים גם הפרמטרים השונים (f זה file, הפרמטר d הוא device וכן הלאה).
פתרונות נוספים
pymcuprog לא לבד, אבל הדרכים האחרות לצריבה דרך UPDI הן מסובכות או מוגבלות יותר, ולכן לא בדקתי ולא איכנס כאן לפרטים, רק אזכיר כמה מילות מפתח למי שרוצה לחפש ולהתעמק בנושא.
דרך אחת היא באמצעות הפרויקט נקרא jtag2updi, שהוא מין עיסקה סיבובית מפותלת: לוח ארדואינו + קבל ונגד, עם קוד שממיר מפרוטוקול JTAG לפרוטוקול UPDI. התוכנה שיכולה לעבוד איתו היא AVRDude הוותיקה, אם מחליפים אחד מקובצי הקונפיגורציה שלה, ומי שממש רוצה יכול להתקין את ATtinycore בסביבת הפיתוח של ארדואינו ולכתוב ולהעלות קוד למיקרו-בקרים נבחרים ישר משם דרך הארדואינו-הצורב.
דרך נוספת היא MicroUPDI, שכרוכה בצריבת קושחה של mEDBG על לוח ארדואינו מיקרו. בתיאוריה, אם זה מצליח, הלוח יזוהה בתור צורב mEDGB על ידי סביבות פיתוח או צריבה מקצועיות (כגון MPLAB X IPE). מה זה בכלל mEDBG, אתם שואלים? ובכן, לוחות הערכה של Microchip למיקרו-בקרים כוללים את הדבר הזה, שמאפשר לעבוד איתם בלי צורב חיצוני. ראשי התיבות הם Mini Embedded Debugger, וגיליתי שיש גם nEDBG (שבו זה Nano במקום Mini).
אם הפרויקט שלכם כולל כתיבת קוד בסביבת הפיתוח של ארדואינו עבור ATmega4809, אפשר להשתמש גם בשיטה הפשוטה שתיארתי כאן.
מה יהיה עם הצורבים המקצועיים?
המחיר של צורבים רשמיים של Microchip עלה בשנים האחרונות פי שניים בערך, והחיקויים הסיניים הזולים של צורבים מהדור הקודם לא תומכים בשבבים החדשים. צורב PICKIT 4, שהוא פחות או יותר הסטנדרט הנוכחי לעבודות בקנה מידה קטן, עולה כיום כ-90 דולר, לא כולל משלוח ומיסים. צורב SNAP (לוח חשוף ועם פחות יכולות) עולה $40 בלבד – גם כן פי שניים ממה שעלה כשיצא לשוק – אבל נדיר עוד יותר במלאים. אצל יצרני מיקרו-בקרים אחרים שבדקתי המצב דומה או גרוע יותר, אך ייתכן שעם ההתאוששות וההתרחבות הצפויה של שוק המוליכים-למחצה, התחרות ביניהם תחזור לממדים של פעם והמחירים יירדו.
כל זה פחות רלוונטי למייקר הממוצע, שממשיך ממילא לעבוד רק עם לוחות מוכנים של ארדואינו, Espressif וכדומה. אף על פי כן, נחמד שיש אופציות לצרוב שבבים גם בתקציב של חובבים.
פוסט שימושי. רציתי להוסיף שיש גם אפשרות מאוד זולה לתכנת דרך updi בעזרת סדרת לוחות curiosity של חברת microchip (שמייצרת ומוכרת את כל בקרי ה avr). הלוחות עולים בין 20-40 דולר והם מעין כרטיס פיתוח שכוללים בקר avr (כל לוח כולל בקר ממשפחה אחרת בסדרת avr) ומאפשרים לתכנת גם בקרים שלא נמצאים על הלוח עצמו באמצעות חיבור עם ג'אמפרים לבקר avr שלא נמצא על הכרטיס (נניח על כרטיס אחר שהמהנדס מפתח). כרטיסים מסדרת curiosity עבור avr כוללים רגולטור למתח וחיבור מיקרו usb ככה שזה מאוד נגיש לתכנת (ולעשות debug) בלי קניה של הכרטיסי תכנות היקרים יותר אבל עדיין במחיר זול… לקרוא עוד »
תודה, אכן גם זו אופציה – אבל אם אני זוכר נכון, הלוח ייתן לך לתכנת רק מיקרו-בקר מאותו דגם כמו זה שעל הלוח, לא? השתמשתי כמה פעמים בלוחות מהסדרה הזו (לפיתוח ישיר, לא כצורבים) והם נחמדים מאוד. קצת פחות נגישים למייקרים מתחילים, כי הם לא נפוצים כמו ארדואינו וחיקוייו.