שתי ליבות העתיד ברכיב אחד The First MultiCore Micro-Controller in the world –

CortexM0 & CortexM4 in one chip – LPC4000

מאת: אמיר שרמן, ארו ישראל

עולם המיקרו-בקרים מרובי הליבות
שוק המיקרו-בקרים מוצף מעבדים מבוססי ליבות ARM מסוג Cortex M3 ,Cortex M0 ואפילו כבר נמצאים בשוק מעבדים עם הליבה החדשה Cortex M4 בתצורות שונות ומגוונות ומנהלי הפרויקטים השונים הן בחומרה והן בתוכנה משקיעים מאמץ גדול בבחירה המתאימה לדרישות של הפרויקטים וכבר אנחנו עוברים לשלב הבא, שהוא ממש ייחודי ודורש הבהרות.
בשלב זה מתחילים להופיע בשוק מיקרו-בקרים מרובי ליבות! מיקרו-בקרים שרק לפני מספר שנים בדור הקודם של הפרויקט היה בקר 8bit והיום 2 ליבות שעובדים בצורה מקבילית ושונים אחד מהשני. זאת לא רק מהפכה בעולם המיקרו בקרים אלא שינוי תפיסה עקרוני בעולם התוכנה בעיקר ובחומרה בפרט ואת זה אנסה להסביר.
בעולם המיקרו בקרים בדרך כלל ישנה מטרה ברורה לתפקידי המעבד כגון עיבוד מידע, שימוש ב- PWM בעולם ה- Motion Control או חיבור המעבד להתקן חיצוני כגון USB או לרשת התקשורת דרך ה- Ethernet. אם ישנם מגוון רחב של מטרות כיוון שהאפליקציה דורשת זאת, כלומר ביצוע של מגוון רחב של מטרות או משימות יש צורך בשימוש של מערכת הפעלה RTOS – Real Time Operation System כדי ליצור משימות Tasks ולהגדיר עדיפויות לביצוע Priority ואנשי התוכנה בונים את ה- Firmware בתצורה חכמה של שכבות ניהול התוכנה.
היום התווסף עוד מימד לתיכנון הן של החומרה והן של התוכנה מכיוון שבקרי העתיד שכבר כאן הן מרובי ליבות כאשר הליבות יכולות לתקשר בינהם ולחלק את העבודה בהתאם לרצון המשתמש בצורה נבונה. NXP שיחררה לעולם משפחה חדשה בשם LPC4000 הכוללת שני ליבות , האחת מבוססת Cortex M0 הפשוטה יחסית והשנייה באותו אריזהרכיב כמובן מבוססת ליבת Cortex M4 החדשה בעלת יכולת מורחבת כגון:,  FPU – Floating Point Unit כל ליבת יכולה לעבוד בתדר של 150Mhz.
שניהם פעילים בצורה אסימטרית עם גישה ישירה לזיכרון ה- Flash המורחב עד 1Mbyte בתצורת בנק יחיד או שני בנקי זיכרון. בתוספת זיכרון Ram של עד  134Kbyte.
ישנם עוד חמישה בלוקים שונים המתווספים לליבות והם ה-   .

כל בלוק מכיל התקן פריפריאלי שכל ליבת יכולה לפנות אליו ולנהל אותו כאשר ה- Interfaces כולל שני High Speed USB מסוג Host/Device או OTG ,Ethernet MAC,  ארבעה Uarts שלושה SPI שני I2C ושני I2S. תמיכה ב- SDIO וניהול ממשק זיכרון חיצוני ה- External Memory Control כמו כן תמיכה בשני התקני Can Bus ומנהל בקרת מנועים מסוג Quad Encoder Interface. אפילו מנהל זיכרון Boot טורי מסוג SPI ו- בקר LCD לתצוגה גרפית.
בלוק ה- Timers מכיל Motor Control PWM גם כן לבקרת מנועים, RTC, ארבעה 32bit Timers וגם Alarm Timer.
בלוק ה- Configurable Interface מכיל  Serial GPIO שמאפשר תיכנות התקן תקשורת נוסף אם יש צורך בכך ( כלומר אם חסר עוד I2C  אזי הוא ניתן לתיכנות ). כמו כן  State Config Timer.
בלוק ה- Security מכיל התקני אבטחה כגון OTP Key Storage שזהו התקן הניתן לתוכנות חד פעמי ליצירת מפתח יחודי לרכיב ותמיכה בהצפנה מסוג AES.
בלוק ה-Analog כולל ממיר אנלוגי לדיגיטלי ADC של עד 16 ערוצים ב- 10bit וכמו כן ממיר דיגיטלי לאנלוגי DAC של עשרה סיביות 10bit גם כן.
NXP  מכוונת את המשפחה הזאת לעולם ה- DSC – Digital Signal Controller  מכיוון שה- CortexM4 מכיל פקודות מתמטיות ייחודיות לעולם זה ובנוסף תמיכה ב- Floating Point. השילוב הייחודי עם ה- Co-Processor מבוסס CortexM0 מייחד את המשפחה זאת כנגד רכיבי ה- CortexM4 הרגילים בשוק.
לאחר הסקירה החומרתית נעבור לצד התוכנתי שבמקרה זה ישנו שינוי מהותי של התכנון התוכנה הקיים מכיוון שישנם 2 ליבות שונות שכל אחת חזקה דיו לנהל מספר מערכות ולכן נפתחה בפנינו מספר אופציות של שימוש עם או בלי מערכות הפעלה בהתאם לאפליקציה הדרושה. ישנם מספר אופציות לתיכנון:
1. במצב הפשוט נפעיל את הבקר באף אחד מהליבות ללא מערכות הפעלה (בעיקר כשאין שימוש ב- Ethernet לצורך תקשורת).
2. במצב הנפוץ נריץ מערכת הפעלה RTOS  כלשהי עם ה- CortexM4 שתנהל את התקשורות השונות (Ethernet & USB) כולל TCP/IP Stack וה- CortexM0 ינהל את ההתקנים האנולוגים.
3. במצב המתוחכם ביותר ירוצו 2 מערכות הפעלה שונות או מקבילות על שני הליבות השונות והתכנת יבצע Debug מקבילי עליהם. דוגמא לכך נמצא בחברת ARM  על ידי סביבת העבודה של Keil שבו יתבצע Debug בו זמנית של 2 הליבות כולל תמיכה של הפעלת 2 מערכות הפעלה בו זמנית על הרכיב.
במצב JTAG מערכת LPC4000 מספקת גישה בו זמנית על שני מעבדי Cortex-M באמצעות CoreSight™ ARM שזוהי מערכת לבדיקה באגים ו- Debug. ה-  ULINKpro של Keil המבצע את הבדיקות (Debug)  ואת מתאם מעקב (Trace) יחד עם ARM-MDK Keil (ערכת פיתוח מיקרו) מאפשר שני מופעים עצמאיים שיופעלו בעת ובעונה אחת. מצב זה מאפשר למפתחים כלי לניתוח בתוכנת היישום של שני מעבדים לזהות ולתקן את השגיאות בעיקר בעיות תקשורת. כאשר אלה הושלמו, המעבד השני ניראה כיחידה אחרת היקפית שגם אותה ניתן לבדוק . פיתוח קוד נוסף ניתן לעשות שימוש רק מופע אחד של ה-IDE μVision / Debugger.
חברת ארו ישראל תהיה החברה הראשונה בעולם (World Wide) שבספטמבר תספק ערכות פיתוח זולות (Low Cost Boards) מבוססות על משפחת ה- LPC4000 בשיתוף פעולה עם חברת Diolan הישראלית כך שניתן להתחיל את הבדיקות  (Evaluation) של שימוש במיקרו בקרים מבוססי 2 ליבות העתיד מסוג CortexM0 ו- Cortex M4.

אמיר שרמן, ארו ישראל


תגובות סגורות