שְׁאֵלָה:
כמה קוד יכול להפעיל לוח ארדואינו?
Listen
2016-04-22 17:48:46 UTC
view on stackexchange narkive permalink

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

כמה גדול של פרויקט ניתן לבנות באמצעות ארדואינו? האם יש חששות בזיכרון? האם ארדואינו יכול להריץ אלפי ואלפי שורות קוד מהקופסה, ואם לא, האם יש דרך להוסיף זיכרון נוסף לפרויקטים גדולים ומורכבים יותר?

שְׁלוֹשָׁה תשובות:
WestfW
2016-04-23 11:10:27 UTC
view on stackexchange narkive permalink

ישנם מספר "Arduinos" עם יכולות זיכרון הנעות בין מעט פחות מ 32k / 2k / 16MHz (Flash / RAM / CPUClock) ("Uno") ועד 512k / 96k / 84MHz ("Due".) בנוסף, יש הם לוחות "תואמים בעיקר" המרחיבים את הטווח עד פחות מ- 8k / 512 / 8MHz ("Gemma", "Digistump") ועד לכ -1M / 256k / 120MHz (TI "EK-TM4C1294XL Launchpad"), ו"משהו לוחות "תואמים עם 4G / 1G / 400MHz (אינטל" אדיסון ")

אם אלה מספיקים ל"רובוטיקה מלאה" תלוי במה שאתה חושב שזה אומר. אדיסון הוא כנראה המתמודד היחיד אם אתה רוצה לכלול ראיית מחשב, למשל, וזה כנראה לא עושה את זה טוב מאוד. ("למה ציפית בליבה אחת בלבד ב -400 מגה-הרץ ?!")

גם Arduinos הקטנים כנראה לא תומכים ב"ספריות הגדולות מאוד "שלך. לדוגמא, בעוד ש"שפת Arduino "היא טכנית C ++, התמיכה ב- C ++ STL אינה כלולה בגלל מגבלות של המעבדים הקטנים המשמשים וסביבת זמן הריצה שלהם.

32k של זיכרון התוכנית (על Uno פופולרי מספיק ל"אלפי שורות קוד ", אבל אני חושב שרובוטיקה נוטה לרוץ לעבר הרבה יותר מכך. הכמות הקטנה של זיכרון RAM הזמין ברוב המיקרו-בקרים מבוססי-פלאש נוטה להוות מגבלה רצינית כשמתחילים לבחון אלגוריתמים סטנדרטיים עתירי נתונים. 32k / 2k נעלמים די מהר אם מתחילים ליישם ממשק משתמש נרחב, רשתות או גרפיקה. הייתי אומר שארדואינו של Uno-class מתאים להטמעת רכיבי מערכות רובוטיקה (נהגי מנוע, ניהול חיישנים וכו '), אך כנראה לא רובוט שלם.

דוגמה טובה לתוכנות גדולות דמויות רובוטיקה. שפועל על חומרה מסוג Arduino ניתן למצוא כנראה במדפסת התלת מימד. קושחת "מרלין" פועלת על ארדואינו מגה או שווה ערך (256k / 8k / 16MHz) (עם מגן RAMPS), וישנן חבילות דרייבר חלופיות הפועלות על חומרה קטנה וגדולה יותר כמו ארדואינו. מרלין הוא כ -280,000 שורות קוד, על פי cloc.

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

(אהם) אינטל אדיסון הוא כפול ליבה @ 500 מגה הרץ ...
אה; זה הגלילאו שהוא 400 מגה-הרץ ...
בימינו ה- ESP8266 ו- ESP32 תואמים פחות או יותר לארדואינו ויש להם כמויות אדירות של זיכרון RAM ואחסון. שקול גם את אלה.
Nick Gammon
2016-06-22 12:17:27 UTC
view on stackexchange narkive permalink

אין תשובות מקובלות או שקיבלו הצבעה, אה? אני אנסה את היד שלי. :)

כמה גדול של פרויקט ניתן לבנות באמצעות Arduino?

תלוי במודל. אתה יכול לעבור מסביבות 4 KB של זיכרון לתכנות ל- 256 KB, ואז להיכנס לדגמים הגדולים יותר כמו ה- Due (512 KB).

האם יש חששות בזיכרון?

יש תמיד דאגות זיכרון, אולם כאשר יש לך ג'יגה זיכרון RAM (כמו במחשב האישי שלך) אתה נוטה להתעלם מהם.

אלה מיקרו-בקרים, המיועדים ל יישומים משובצים. אתה תמצא את עצמך בטח מייחל שיהיה לך יותר מכל (RAM, PROGMEM ו- EEPROM). עם זאת עבור יישומים רבים מה שיש להם הוא בסדר גמור.

האם ארדואינו יכול להריץ אלפי ואלפי שורות קוד מהקופסה

כנראה שלא. שקול את ה- Uno עם זיכרון תוכנית של 32 KB. בין שניים לארבעה בתים לכל הוראות מכונה (רובם שני בתים), כנראה שתתאים לכל היותר:

  32768/2 = 16384  

... הוראות מכונה. אז לא, לא מאות אלפים. הדגמים הגדולים יותר, אולי.

ואם לא, האם יש דרך להוסיף זיכרון נוסף לפרויקטים גדולים ומורכבים יותר?

Atmega2560 ניתנת להרחבה. זיכרון RAM, למשל כאן שמוסיף 512 KB של זיכרון RAM.

כמה גדול של פרויקט ניתן לבנות באמצעות Arduino?

יש לי כאן לא מעט דברים שעושים את הדברים שלהם. אחד מודיע לי אם השארתי את דלת המוסך פתוחה בטעות. אני רואה בהם שימושיים עבור יישומים "עוזרים". לא הייתי מנסה לשים את מסד הנתונים של SQL על אחד.

הוראות מכונת ה- AVR ארוכות בת שני בתים, למעט 'jmp', 'call', 'lds' ו- 'sts', שהם 4 בתים כל אחד.
אה, חשבתי על מחזורי שעון, שהם המתועדים בגיליון הנתונים הראשי. תודה על התיקון, שיניתי את תשובתי.
@NickGammon "ישנן תמיד חששות זיכרון, אולם כאשר יש לך ג'יגה זיכרון RAM (כמו במחשב האישי שלך) אתה נוטה להתעלם מהם." ואבוי, המתכנתים של ימינו (מצליפים לחטט את המון אותם!) איבדו את ההכרה הזאת ... אם הם היו יכולים להשקיע מעט יותר מאמץ באופטימיזציה, הם היו _מצמצמים_ את הגודל של תוכניות רבות - אם לא יותר!
ובכן, לא ספרתי את עצמי בקבוצה ההיא \ * חיוך \ * - במחשב הראשון שלי היו 512 * בתים * של זיכרון RAM (ששימש גם לקוד) אז הייתי צריך לתכנת בצורה שמרנית. אני מסכים עם זאת, שלחשוב שיש לך זיכרון ללא הגבלה ומהירות בלתי מוגבלת פנויה, יכול להוביל לתכנות רשלני.
dinotom
2016-04-22 18:05:56 UTC
view on stackexchange narkive permalink

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

שבב ה- ATmega328 שנמצא ב- Uno מכיל את כמויות הזיכרון הבאות: פלאש 32k בתים (מתוכם .5k משמש למאתחל) SRAM 2k בתים EEPROM 1k בתים

ל- ATmega2560 ב- Mega2560 יש שטח זיכרון גדול יותר: פלאש 256k בתים (מתוכם 8k משמש לטעינת האתחול) SRAM 8k בתים EEPROM 4k בתים



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