Skip to content

Commit

Permalink
Misc. dirty fixes
Browse files Browse the repository at this point in the history
- Fix for buserror#461

  Borrowed from https://stuvel.eu/post/2021-04-27-atmega328pb-on-gcc/

- Add easy to understand usage instructions

- Add `ArduinoUniqueID` example and binaries
  • Loading branch information
kholia committed Jan 14, 2022
1 parent ea4c450 commit 9e01f23
Show file tree
Hide file tree
Showing 5 changed files with 1,421 additions and 0 deletions.
Binary file added ArduinoUniqueID.ino.elf
Binary file not shown.
127 changes: 127 additions & 0 deletions ArduinoUniqueID.ino.hex
@@ -0,0 +1,127 @@
:100000000C9435000C945D000C945D000C945D0024
:100010000C945D000C945D000C945D000C945D00EC
:100020000C945D000C945D000C945D000C945D00DC
:100030000C945D000C945D000C945D000C945D00CC
:100040000C943A020C945D000C9408020C94E201AA
:100050000C945D000C945D000C945D000C945D00AC
:100060000C945D000C945D00800311241FBECFEF43
:10007000D8E0DEBFCDBF11E0A0E0B1E0EEEAF7E0EE
:1000800002C005900D92AA32B107D9F721E0AAE289
:10009000B1E001C01D92A03DB207E1F710E0C5E359
:1000A000D0E004C02197FE010E94CF03C433D107E2
:1000B000C9F70E9484020C94D5030C940000AF92FF
:1000C000BF92CF92DF92EF92FF920F931F93CF9345
:1000D000DF936C017B018B01040F151FEB015E01A7
:1000E000AE18BF08C017D10759F06991D601ED913C
:1000F000FC910190F081E02DC6010995892B79F7DB
:10010000C501DF91CF911F910F91FF90EF90DF908C
:10011000CF90BF90AF900895FC01538D448D252F53
:1001200030E0842F90E0821B930B541710F0CF9691
:10013000089501970895FC01918D828D981761F0C3
:10014000A28DAE0FBF2FB11D5D968C91928D9F5FDA
:100150009F73928F90E008958FEF9FEF0895FC01B9
:10016000918D828D981731F0828DE80FF11D858D6C
:1001700090E008958FEF9FEF0895FC01918D228DFF
:10018000892F90E0805C9F4F821B91098F73992784
:10019000089583E391E00E94BD0021E0892B09F4DA
:1001A00020E0822F089580E090E0892B29F00E94C2
:1001B000C90081110C9400000895FC01A48DA80FC2
:1001C000B92FB11DA35ABF4F2C91848D90E0019699
:1001D0008F739927848FA689B7892C93A089B189B9
:1001E0008C91837080648C93938D848D981306C05A
:1001F0000288F389E02D80818F7D80830895EF92BE
:10020000FF920F931F93CF93DF93EC0181E0888FD0
:100210009B8D8C8D98131AC0E889F989808185FFA0
:1002200015C09FB7F894EE89FF896083E889F98942
:1002300080818370806480839FBF81E090E0DF9144
:10024000CF911F910F91FF90EF900895F62E0B8D97
:1002500010E00F5F1F4F0F731127E02E8C8D8E1152
:100260000CC00FB607FCFACFE889F989808185FFB9
:10027000F5CFCE010E94DD00F1CFEB8DEC0FFD2F0D
:10028000F11DE35AFF4FF0829FB7F8940B8FEA8974
:10029000FB8980818062CFCFCF93DF93EC01888D83
:1002A0008823B9F0AA89BB89E889F9898C9185FDF1
:1002B00003C0808186FD0DC00FB607FCF7CF8C917F
:1002C00085FFF2CF808185FFEDCFCE010E94DD005A
:1002D000E9CFDF91CF9108953FB7F89480912F0136
:1002E00090913001A0913101B091320126B5A89BC7
:1002F00005C02F3F19F00196A11DB11D3FBFBA2FB8
:10030000A92F982F8827BC01CD01620F711D811D77
:10031000911D42E0660F771F881F991F4A95D1F7FC
:100320000895FC0101900020E9F73197AF01481BC7
:10033000590BBC0183E391E00C945F008F929F9274
:10034000AF92BF920F931F93CF93DF93CDB7DEB7DA
:10035000A1970FB6F894DEBF0FBECDBF19A24230F1
:1003600008F44AE08E010F5D1F4F842E912CB12CB2
:10037000A12CA50194010E94AD03E62FB901CA0189
:10038000EA30F4F4E05DD801EE938D01232B242BA9
:10039000252B79F790E080E0109719F0CD010E94AD
:1003A0009101A1960FB6F894DEBF0FBECDBFDF91CD
:1003B000CF911F910F91BF90AF909F908F90089514
:1003C000E95CE1CF1F920F920FB60F9211242F9389
:1003D0003F934F935F936F937F938F939F93AF93CD
:1003E000BF93EF93FF9383E391E00E94DD00FF91C1
:1003F000EF91BF91AF919F918F917F916F915F919D
:100400004F913F912F910F900FBE0F901F90189515
:100410001F920F920FB60F9211242F938F939F93D9
:10042000EF93FF93E0914301F09144018081E091CB
:100430004901F0914A0182FD1BC0908180914C01DD
:100440008F5F8F7320914D01821741F0E0914C0135
:10045000F0E0ED5CFE4F958F80934C01FF91EF91A2
:100460009F918F912F910F900FBE0F901F90189515
:100470008081F4CF1F920F920FB60F9211242F9309
:100480003F938F939F93AF93BF9380912B01909154
:100490002C01A0912D01B0912E0130912A0123E071
:1004A000230F2D3758F50196A11DB11D20932A0168
:1004B00080932B0190932C01A0932D01B0932E01DA
:1004C00080912F0190913001A0913101B0913201C2
:1004D0000196A11DB11D80932F0190933001A0932F
:1004E0003101B0933201BF91AF919F918F913F91B4
:1004F0002F910F900FBE0F901F90189526E8230F95
:100500000296A11DB11DD2CF789484B5826084BDBE
:1005100084B5816084BD85B5826085BD85B5816007
:1005200085BD80916E00816080936E001092810085
:100530008091810082608093810080918100816040
:100540008093810080918000816080938000809101
:10055000B10084608093B1008091B000816080938D
:10056000B00080917A00846080937A0080917A0054
:10057000826080937A0080917A00816080937A0013
:1005800080917A00806880937A001092C100E09197
:100590004301F091440182E08083E0913F01F091BA
:1005A00040011082E0914101F09142018FEC808383
:1005B00010924B01E0914701F091480186E0808361
:1005C000E0914501F0914601808180618083E09156
:1005D0004501F0914601808188608083E09145016A
:1005E000F0914601808180688083E0914501F0911F
:1005F000460180818F7D808382E191E00E9491019C
:100600008DE191E00E949101D0E0C0E011E2E1E0D3
:10061000F0E0C630D10510F4F0E0E0E0BE01625F2A
:100620007F4FE60FF71F10935700E4916E2F70E095
:1006300090E080E04AE00E949E012196C930D105F9
:1006400031F78DE191E00E94910191E2B92E00E035
:1006500010E00E946C016B017C0188EE482E83E063
:10066000582E612C712C0E946C016C197D098E0929
:100670009F09683E734081059105A8F321E0421A65
:1006800051086108710888EEC80E83E0D81EE11C8D
:10069000F11C411451046104710429F780E291E0D6
:1006A0000E9491018DE191E00E949101D0E0C0E0B3
:1006B000FE013E9661E070E0C630D10510F470E0B6
:1006C00060E0E60FF71FB0925700649170E090E091
:1006D00080E04AE00E949E012196C930D10541F791
:1006E0008DE191E00E9491010115110509F4B1CF4E
:1006F0000E94C900882309F4ACCF0E940000A9CF52
:10070000E3E3F1E01382128288EE93E0A0E0B0E030
:1007100084839583A683B78384E091E0918380836B
:1007200085EC90E09587848784EC90E097878687B6
:1007300080EC90E0918B808B81EC90E0938B828BAE
:1007400082EC90E0958B848B86EC90E0978B868B87
:10075000118E128E138E148E0895A1E21A2EAA1BEA
:10076000BB1BFD010DC0AA1FBB1FEE1FFF1FA21761
:10077000B307E407F50720F0A21BB30BE40BF50B5E
:10078000661F771F881F991F1A9469F760957095E7
:10079000809590959B01AC01BD01CF010895EE0FAE
:0E07A000FF1F0590F491E02D0994F894FFCF0F
:1007AE0000000000FF005F008C004C01BD009B00AC
:1007BE00AF00696E2073657475702829000D0A00EC
:0A07CE00696E206C6F6F702829001F
:00000001FF
29 changes: 29 additions & 0 deletions ArduinoUniqueID/ArduinoUniqueID.ino
@@ -0,0 +1,29 @@
// https://microchipsupport.force.com/s/article/Serial-number-in-AVR---Mega-Tiny-devices

#include <avr/boot.h>

void setup()
{
Serial.begin(9600);
Serial.println("in setup()");

unsigned int UniqueIDsize = 9;
for (size_t i = 0; i < UniqueIDsize; i++)
{
Serial.print(boot_signature_byte_get(0x0E + i + (UniqueIDsize == 9 && i > 5 ? 1 : 0)));
}
Serial.println();
}

void loop()
{
delay(1000);
Serial.println("in loop()");

unsigned int UniqueIDsize = 9;
for (size_t i = 0; i < UniqueIDsize; i++)
{
Serial.print(boot_signature_byte_get(0x0E + i + (UniqueIDsize == 9 && i > 5 ? 1 : 0)));
}
Serial.println();
}
45 changes: 45 additions & 0 deletions README.md
Expand Up @@ -149,3 +149,48 @@ And this is a gtkwave trace of what the firmware is doing. You can zoom in, meas
in gtkwave, select trades to see etc.

Quite a few other examples are available!

Usage
-----

Install build dependencies:

```
sudo apt-get install libelf-dev freeglut3 freeglut3-dev gcc-avr avr-libc gcc make
```

Clone and build the latest `simavr` code:

```
git clone https://github.com/buserror/simavr.git
cd simavr
make
```

Run sample programs:

```
./simavr/run_avr -f 16000000 -m atmega328p ArduinoUniqueID.ino.elf
./simavr/run_avr -f 16000000 -m atmega328p ArduinoUniqueID.ino.hex
```

Sample run:

```
./simavr/run_avr -f 16000000 -m atmega328p ArduinoUniqueID.ino.hex
Loaded 1966 .text at address 0x0
Loaded 42 .data
in setup()..
93012148930148930..
in loop()..
93012148930148930..
in loop()..
93012148930148930..
in loop()..
93012148930148930..
in loop()..
93012148930148930..
```

0 comments on commit 9e01f23

Please sign in to comment.