אני בספק שממשק ה- USB ב- Uno נותן לך מספר סידורי ייחודי. כל מספר יהיה חלק מהקוד שהועלה לשבב, ולכן יהיה זהה בקרב מספר רב של יחידות Uno.
גישה אחת היא שבב DS2401 "מספר סידורי הסיליקון" המשתמש בממשק חוט אחד. זה ידרוש רק סיכה אחת פנויה וקוד כלשהו (ייתכן שהקוד יהיה הבעיה).
השיטה הפחות פולשנית, וכנראה האמינה ביותר, תהיה פשוט לקרוא את הקוד ואת הסכום. -בדוק את זה. זה בדיוק מה שאני עושה עם גלאי חתימת השבבים שלי. עם זאת זה מגלה (כפי שנכתב כרגע) רק את חתימת האתחול. שינוי די קל וזה יכול לסכם MD5 את כל קוד השרטוט.
פלט לדוגמא:
גלאי חתימות. נכתב על ידי Nick Gammon. חתימה = 1E 95 0F FusesLow = FF High = D6 Ext = FF Lock = CFProcessor = ATmega328P גודל זיכרון פלאש = 32768 מטען אתחול בשימוש: כן EEPROM נשמר באמצעות מחיקה: כן טיימר כלב השעון תמיד פועל: לא Bootloader הוא 512 בתים החל מ- 7E00 מטען אתחול: 7E00: 02 01 02 03 0405 06 07 08 09 0A 0B 0C 0D 0E 0F 7E10: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 7E20: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 7E30: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ... 7FB0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 7FC0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 7FD0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 7FE0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 7FF0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F MD5 סכום האתחול = 56 72 75 2D 5D B5 0D BA 25 10 DF BE 87 D2 A1 27
סכום MD5 זה (השורה האחרונה) הוא אפק ectively החתימה של אותו מטען אתחול מסוים. למעשה הגרסה האחרונה מחפשת אותם בטבלה:
סכום MD5 של Bootloader = FB F4 9B 7B 59 73 7F 65 E8 D0 F8 A5 08 12 E7 9F שם Bootloader: optiboot_atmega328 קוד>
אז מה שאתה יכול לעשות זה, בעת העלאת סקיצה, ליצור סכום MD5 של קוד ה- hex. ישנן דרכים פשוטות למדי לעשות זאת. אז אתה יכול לבצע פעולת "git tag" על קוד המקור שלך, ואז (באמצעות תהליך אוטומטי או ידני כלשהו) לזכור שסכום מסוים של MD5 של קוד hex מייצג את קוד השרטוט ברגע מסוים.
סוג של מסד נתונים כמו:
שבב: סכום UnoMD5: D8 8C 70 6D FE 1F DC 38 82 1E CE AE 23 B2 E6 E7 סקיצה: My_robot_sketch_42.inoGit תג: version666
כעת כדי לאתר את המקור מהלוח, אתה קובע את סכום הקוד MD5 (על ידי קריאתו מהלוח) ואז מחפש אותו במסד הנתונים שלך.