שְׁאֵלָה:
האם ניתן להריץ בינארי מ- EEPROM?
Zeb McCorkle
2014-08-18 06:19:17 UTC
view on stackexchange narkive permalink

נניח שכתבתי סקיצה מקובצת ל- EEPROM ואז קראתי אותה. האם אוכל להריץ את התוכנית מ- EEPROM? אני מניח שהשאלה היא: האם ארדואינו יכולה להריץ תוכנה שלא בזיכרון פלאש באמצע ביצוע התוכנה בפלאש?

שתיים תשובות:
BrettAM
2014-08-18 09:38:00 UTC
view on stackexchange narkive permalink

תשובה קצרה: לא; מדף הנתונים של atmega328 (אם כי הוא חל על כל מכשירי ה- AVR):

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

...

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

הארכיטקטורה שלה מונעת שימוש בזיכרון תוכנה חיצוני, אך תוכל לטעון כל דבר לזיכרון התוכנית בעת האתחול. באותה נקודה הייתי מעז לומר שאתה רק מתכנת AVR ולא arduino, מכיוון שתצטרך להחליף את ה- bootloader של arduino ולשבור את היכולת של arduino IDE להעלות תוכניות.

לחלופין תוכל גם להשתמש באמולטור או מתורגמן של שפת ביניים כלשהי; בעצם קוד שעובר דרכו ומריץ קוד אחר. ככלל אמולטור פועל פי 8 לאט יותר.

ישנם מיקרו-בקרים ממותגים אחרים שאכן תומכים בפונקציונליות זו. אני יודע שכמה PIC שונים עושים.

Ignacio Vazquez-Abrams
2014-08-18 09:26:46 UTC
view on stackexchange narkive permalink

לא היסוד של ארכיטקטורת הרווארד כמו AVR הוא לאפשר ביצוע קוד שקיים בשטח התוכנית בלבד, ו- EEPROM אינו נמצא בתוך שטח התוכנית. עם זאת, ניתן לכתוב מכונה וירטואלית שתפעל מ- flash. לאחר מכן ה- VM הזה יכול לקרוא את התוכנה ולהפוך לנתונים מכל מקום ולנקוט פעולה על סמך זה.

+1. שים לב שחלק מה- MCU משתמשים בארכיטקטורת הרווארד שונה, המאפשרת למעבד לקרוא / לכתוב נתונים במרחב התוכנית, כך שתוכל להעתיק את הקוד מ- RAM ל- ROM ולהריץ אותו כמו קוד עם שינוי עצמי.
לעניין ה- VM, כל שעליך לעשות הוא להשיג את C ++ המהודק, לבדוק את ה- EEPROM לאיזו הוראה יש להריץ ולהפעיל את ההוראה הזו. כמובן שהפעלת המולד שלו על השבב תהיה מהירה פי כמה וזו לא משימה קלה, אבל זה יהיה פרויקט מהנה ללמוד על דברים ברמה נמוכה יותר ב- 328P ...
כן, אבל אם אתה מתכוון לעשות זאת, אתה יכול גם להפעיל משהו מהנה כמו פורטה או פייתון.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...