גמישות לעידכון קושחה חיונית להתקני IoT

מכשירי האינטרנט של הדברים (IoT) נכנסים לשוק בקצב מהיר, החל במכשירי חשמל לבית ועד למכשירים רפואיים ולמכוניות; יצרנים חייבים להקדים את מתחריהם בחידושים ובגמישות לאמץ או לשלב טכנולוגיות חדשות. על המתכננים לכלול במוצרים שלהם גמישות לעמוד בקצב ההתפתחות של המערכת האקולוגית של IoT ככל שהיא מאמצת פונקציות ותקנות חדשות. עדכוני קושחה מאפשרים לא רק התאמה אישית במהלך הפריסה הראשונית באתר הלקוח, אלא גם הוספת פונקציות ותכונות חדשות לאחר שהמוצר כבר נמצא בשטח ופתרון בעיות קושחה במהלך השימוש. התקני זיכרון בלתי נדיף כגון NOR Flash נמצאים בשימוש נרחב כאמצעי אחסון של קוד קושחה בזכות אמינותם והאפשרות לתכנת אותם מחדש. על ידי כתיבה מחדש של חלק מקוד הקושחה של המכשיר, השמור בזיכרון הבלתי נדיף במכשיר, יש באפשרותם של יצרנים לעדכן בקלות את היכולות של המכשיר. לפני עדכון הקושחה לתת את הדעת לשלושה דברים: איזה קוד וכמה ממנו יש לעדכן, באיזו תדירות יש לעדכנו, וכמה זמן ייקח ביצוע העדכון (מהירות).

איזה קוד קושחה וכמה ממנו לעדכן

יש לתת את הדעת לשאלות איזה קוד קושחה וכמה ממנו לעדכן בשלב התכנון הראשוני של מכשיר ה-IoT. את החלק הניתן לעדכון של הקושחה יש לאחסן במכשיר ה-NOR Flash באזור נפרד מן החלק שאינו ניתן לעדכון. את עדכון כל חלק מן ה-NOR Flash מתחילים במחיקת אותו חלק של הזיכרון ובעקבותיו בתכנות המידע החדש באותו חלק. ה-NOR Flash מאורגן בחלקים המכונים סקטורים ובלוקים בגדלים שונים. התקני NOR Flash, כגון טכנולוגיית ®SST’s SuperFlash מספר חלק SST26VF064B (64 מגה-ביט או 64 מגביט), מאורגנים בסקטורים אחידים בגודל 4 ק”ב כל אחד הניתנים למחיקה ולתכנות מחדש בנפרד (4 ק”ב = 4 כפול 1024 כפול 8-ביט = 32,762 ביט). הוא מאורגן גם בבלוקים גדולים יותר בני 8 ק”ב, 32 ק”ב ו-64 ק”ב שגם הם ניתנים למחיקה בנפרד. לפיכך, בלוק בן 8 ק”ב כולל שני סקטורים, בלוק בן 32 ק”ב כולל שמונה סקטורים, ובלוק בן 64 ק”ב כולל 16 סקטורים. איור מס’ 1 מראה את ארגון הזיכרון של SST26VF064B עם בלוקים של 8 ק”ב / 32 ק”ב / 64 ק”ב. ניתן גם להגן על כל בלוק בנפרד. לפני ביצוע עדכון של חלק כלשהו מן הפלאש, יש לשחרר את ההגנה על הבלוקים באותו חלק כדי לאפשר מחיקה ותכנות מחדש. לאחר השלמת העדכון כדאי לשוב ולהפעיל את הגנת הבלוקים הללו כדי למנוע מחיקה או כתיבה אקראית של האזורים האלה. החלק המעודכן של הקושחה חייב להיות מאורגן בסקטורים ובבלוקים באופן המאפשר גמישות מספקת כדי לאפשר עדכנים מזעריים ומרביים כאחד של תכונות ופונקציות. הואיל ומהירות ביצוע העדכונים נקבעת לפי מספר הסקטורים והבלוקים שיש למחוק ולתכנת מחדש, עדיף לחשוב על המהירות ועל הגמישות בעת ארגון החלק הניתן לעדכון של הקושחה. איור מס’ 2 מראה דוגמה של ארגון הזיכרון לפי חלקים הניתנים לעדכון ושאינם ניתנים לעדכון. חלקים שאינם ניתנים לעדכון, כגון קוד אתחול, מאוחסנים באזורים מוגנים. חלקים של הקושחה הניתנים לעדכון, כגון תכונות או פונקציות, מחולקים לבלוקים קטנים או גדולים בהתאם לדרישות הגמישות. קבצי תמונה הניתנים לעדכון מאוחסנים בבלוקים גדולים, ואילו משתנים/פרמטרים הניתנים לעדכון מאוחסנים בבלוקים קטנים.

איור מס’ 1 ארגון זיכרון (מפה) של SST26VF064B – כולל שמונה בלוקים בני 8 ק”ב, שני בלוקים בני 32 ק”ב ו-126 בלוקים בני 64 ק”ב

 

איור מס’ 2 ארגון הזיכרון בחלקים שאינם ניתנים לעדכון (לדוגמה: קוד אתחול) ובחלקים הניתנים לעדכון (לדוגמה: קוד פונקציות/תכונות, קובצי תמונה ומשתני פרמטר)

באיזו תדירות לעדכן

המגבלה העיקרית על התדירות בה רוצים לעדכן קושחה היא מגבלת הסיבולת של הזיכרון הנמצא בשימוש ביישום. לזיכרון בטכנולוגיית SuperFlash, כגון SST26VF064B, יש 100,000 מחזורי סיבולת, דהיינו ניתן לתכנת ולמחוק כל סקטור 100,000 פעמים. עדכון קושחה 100,000 פעמים נשמע כמו מספר רב, אך מכשירי IoT רבים אוספים נתונים ומאחסנים את המידע בפלאש ה-NOR במהלך השימוש, ולפיכך יש לתת את הדעת לכך בעת חישוב המגבלות המרביות של מחזורי הסיבולת. חשוב להקצות מספיק סקטורים בזיכרון לצרכי הסיבולת. אסביר זאת בעזרת דוגמה: נניח שמכשיר ה-IoT אוסף ומאחסן 16 בתים של מידע, והמידע אמור להיאסף ולהתאחסן 100 מיליון פעמים במהלך חיי המוצר. את מספר הסקטורים שיש להקצות אפשר לחשב כדלקמן:

1 סקטור = 4 ק”ב

נניח שכל כתובות הזיכרון בסקטור משמשות לאחסון מידע, 16 בתים של נתונים בכל פעם, ושהוא נכתב לכתובת זיכרון חדשה עד שמגיעים לסוף הסקטור (לדוגמה, 0x0000-0x000F אח”כ  0x0010-0x001F אח”כ  0x0020-0x002F, וכו’)

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

מגבלת הסיבולת של 1 סקטור = 100,000 מחזורים

לפיכך, אם 1 סקטור יכול להיכתב 256 פעמים במשך 100,000 מחזורים, הנתונים יכולים להיאסף ולהתאחסן 25,600,000 פעמים.

אם יישום דורש איסוף ואחסון נתונים 100 מיליון פעמים, מספר הסקטורים שיש להקצות מחושב כדלקמן: 100,000,000 חלקי 25,600,000 שווה 3.9. בדוגמה הזאת, לפיכך, יש להקצות 4 סקטורים כדי לאחסן 16 בתים של נתונים לתקופת חיי היישום.

על מהנדסים של מכשירי IoT לבצע חישובים דומים כדי להקצות מספר מספיק של סקטורים ובלוקים לפרמטרים של רישום נתונים כדי לא לעבור את מגבלות הסיבולת של התקן NOR Flash שלהם.

מהירות העדכונים

ניתן לחשב את מהירות העדכון על פי מספר הבלוקים והסקטורים שיש למחוק ולתכנת מחדש. נניח שיש צורך לתכנת מחדש 1 מגה-ביט, 2 מגה-ביט או 4 מגה-ביט של קוד או נתוני קושחה המאוחסנים במספר בלוקים בגודל 64 ק”ב ב-SST26VF064B. הקוד/הנתונים יכולים לכלול קוד קושחה, קבצי תמונה או קוד אחר הדורש עדכון. ביצוע העדכון כרוך בביצוע רצף של הוראות פקודה לפלאש. הרצף מתחיל בהסרת ההגנה מן הבלוקים של הזיכרון, מחיקת הבלוקים הללו, תכנותם עם נתונים/קוד מעודכנים והפעלה מחדש של ההגנה עליהם. רצף ההוראות הנדרש לעדכון 1 מגה-ביט / 2 מגה-ביט / 4 מגה-ביט של זיכרון עבור SST26VF064B מוצג בטבלה 1. מטבלה 1 עולה כי שני הזמנים המשמעותיים ביותר הם זמן המחיקה וזמן התכנות. SST26VF064B משתמש בטכנולוגית SuperFlash המספקת ביצועי מחיקה מעולים. השוואה בין ביצועי המחיקה והתכנות בטכנולוגיית SuperFlash לעומת פלאש קונבנציונאלי מוצגת בטבלה 2. ביצועי המחיקה הגבוהים ביותר שמספקת טכנולוגיית SuperFlash בהשוואה לפלאש קונבנציונאלי שימושיים מאוד להפחתת זמן העדכון. SST26VF064B תומך במהירות שעון מרבית של 104 מגה-הרץ, זמן מרבי למחיקת סקטור של 25 אלפיות השנייה, זמן מרבי למחיקת בלוק של 25 אלפיות השנייה וזמן מרבי לתכנות של 1.5 אלפיות השנייה. כמו כן נדרש עיכוב של 12 ננו-שניות (CE high time) בין כל שתי הוראות פקודה לזיכרון פלאש הפועל במהירות שעון של 104 MHz. חישוב הזמן הנדרש לעדכון 1 מגה-ביט / 2 מגה-ביט / 4 מגה-ביט של זיכרון בטכנולוגיית SuperFlash ובטכנולוגיית זיכרון פלאש קונבנציונאלי, תוך שימוש ברצף הפקודות המוצג בטבלה 1 ובידיעת זמני התכנות והמחיקה, מוצג בטבלאות 3 ו-4, בהתאמה. על מהנדסים של מכשירי IoT לבצע חישובים כאלה כדי להעריך את מהירות ביצוע העדכונים במטרה למזער את זמן ההשבתה של מכשיר ה-IoT במהלך עדכונים.

טבלה 1 רצף פקודות לפלאש לעדכון 1 מגה-ביט / 2 מגה-ביט / 4 מגה-ביט של זיכרון

 

טבלה 2 זמני תכנות ומחיקה עבור SST26VF064B ופלאש קונבציונאלי

טבלה 3 הזמן הנדרש לעדכון רצף פקודות לעדכון פלאש 1 מגה-ביט / 2 מגה-ביט / 4 מגה-ביט של זיכרון בטכנולוגיית SuperFlash

טבלה 4 הזמן הנדרש לעדכון רצף פקודות לעדכון פלאש 1 מגה-ביט / 2 מגה-ביט / 4 מגה-ביט של זיכרון פלאש קונבנציונאלי

סיכום

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

 

הרדיק פתאל, MICROCHIP

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