Skip to content

Commit

Permalink
Changes in the NetEEPROM library. Custom tftp data port setup support…
Browse files Browse the repository at this point in the history
…. Renamed to Ariadne. Fuck Yeah
  • Loading branch information
loathingKernel committed Jul 24, 2012
1 parent 79a37ea commit 6276f40
Show file tree
Hide file tree
Showing 61 changed files with 5,131 additions and 4,816 deletions.
75 changes: 67 additions & 8 deletions README.md
@@ -1,14 +1,73 @@
TFTP-Bootloader
===================
Ariadne-Bootloader for Arduino and WizNet W5100
===============================================

Bootloader for Arduino with Ethernet
------------------------------------
This is a beta stage bootloader for Arduino Ethernet board and the regular
Arduino with Ethernet Shield. It is based on previous unfinished work by the Arduino
developers. The bootloader implements a TFTP server on the Arduino board and flashing works
using any regular TFTP client.

This is a work-in-progress bootloader for Arduino Ethernet board and the regular
Arduino with Ethernet Shield.

It is based on previous unfinished work by the Arduino developers as the
developer that was hired to write it never finished it.
The files and folders in this repository
----------------------------------------
The structure of this repository is made to follow the standarts of the Arduino IDE.
This way you can simply copy the folders in your sketchbook and be ready

The bootloader implements a tftp server on the Arduino board and flashing works
using any regular tftp client.
* hardware: This is where the bootloader resides.
* java-client: Demo client for the bootloader. Inherited by the initial project. Untested and probably non-functional
* libraries: Helper libraries to support functions of the bootloader
* utilities: Various stuff used for development and debugging


Downloading and installing files
--------------------------------
First of all, you need to clone or download the repository. To clone the repository
you need to have git installed, then you can run
```git clone https://github.com/codebendercc/Ariadne-Bootloader.git```
in a directory.
This way you can later update your local repository by running
```git pull```
inside the **Ariadne-Bootloader** directory.

In case you want to avoid this hassle, you can use the **ZIP** button at the top of the page
to download the latest snapshot of the repository in a zip archive and extract it.

After that you have to copy the **hardware** and **libraries** folders inside your sketchbook folder.
Take extra care during coping not to overwrite any other files. Restart the Arduino IDE to load
the new boards and libraries.


Burning of the bootloader
-------------------------
To burn the bootloader, you will need an [AVR-ISP](http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2726)
(in-system programmer), [USBtinyISP](http://www.ladyada.net/make/usbtinyisp/) or you can build a
[ParallelProgrammer](http://arduino.cc/en/Hacking/ParallelProgrammer) or an
[ArduinoISP](http://arduino.cc/en/Tutorial/ArduinoISP).
The first three programmers should be connected to the ICSP pins (the 2 by 3 pin header) and make sure you plug
it in the right way. The board must be powered by an external power supply or the USB port. In the case of _ArduinoISP_
you should consult the above link for further instructions on how to build and use.

After you have connected the Arduino board and the programmer to your computer launch the Arduino IDE.
Navigate to the __Tools__ > __Board__ menu and select ```Arduino Duemilanove/Uno(ATmega328) w/ Ariadne Bootloader```
if you have an Arduino Duemilanove or Uno with an Ethernet Shield or ```Arduino Ethernet w/ Ariadne Bootloader```
for Arduino Ethernet. Then go to __Tools__ > __Programmer__ and select the programmer you are using.
In case you are using _ArduinoISP_, make sure that the selected port in the __Tools__ > __Serial Port__ menu refers to
the _ArduinoISP_ and not the board that you want to burn the bootloader on. Now, just launch the __Tools__ > __Burn Bootloader__
command and wait for about 15 seconds for the operation to complete.


Serial Flashing
---------------


Configuring Network Settings
----------------------------


TFTP Flashing
-------------


Configuring your Router for Remote Flashing
-------------------------------------------
43 changes: 43 additions & 0 deletions hardware/ariadne/boards.txt
@@ -0,0 +1,43 @@
##############################################################

ariadne328.name=Arduino Duemilanove/Uno(ATmega328) w/ Ariadne Bootloader

ariadne328.upload.protocol=arduino
ariadne328.upload.maximum_size=28672
ariadne328.upload.speed=115200

ariadne328.bootloader.low_fuses=0xFF
ariadne328.bootloader.high_fuses=0xD8
ariadne328.bootloader.extended_fuses=0x05
ariadne328.bootloader.path=ariadne
ariadne328.bootloader.file=ariadne_atmega328.hex
ariadne328.bootloader.unlock_bits=0x3F
ariadne328.bootloader.lock_bits=0x2F

ariadne328.build.mcu=atmega328p
ariadne328.build.f_cpu=16000000L
ariadne328.build.core=arduino:arduino
ariadne328.build.variant=arduino:standard

##############################################################

ariadne328eth.name=Arduino Ethernet w/ Ariadne Bootloader

ariadne328eth.upload.protocol=arduino
ariadne328eth.upload.maximum_size=28672
ariadne328eth.upload.speed=115200

ariadne328eth.bootloader.low_fuses=0xFF
ariadne328eth.bootloader.high_fuses=0xD8
ariadne328eth.bootloader.extended_fuses=0x05
ariadne328eth.bootloader.path=ariadne
ariadne328eth.bootloader.file=ariadne_atmega328_ethernet.hex
ariadne328eth.bootloader.unlock_bits=0x3F
ariadne328eth.bootloader.lock_bits=0x2F

ariadne328eth.build.mcu=atmega328p
ariadne328eth.build.f_cpu=16000000L
ariadne328eth.build.core=arduino:arduino
ariadne328eth.build.variant=arduino:standard

##############################################################
Expand Up @@ -21,7 +21,7 @@
# etc...

# program name should not be changed...
PROGRAM = tftpboot
PROGRAM = ariadne

# The default behavior is to build using tools that are in the users
# current path variables, but we can also build using an installed
Expand All @@ -35,8 +35,8 @@ PROGRAM = tftpboot

# enter the parameters for the avrdude isp tool
# for now they default to the arduinoISP on linux
ISPTOOL = stk500v1
ISPPORT = /dev/ttyACM0
ISPTOOL = usbtiny
ISPPORT = usb
ISPSPEED = -b19200

MCU_TARGET = atmega328p
Expand Down Expand Up @@ -194,7 +194,7 @@ SIZE = $(GCCROOT)avr-size
# # backward compatibility of makefile
# atmega168: TARGET = atmega168
# atmega168: MCU_TARGET = atmega168
# atmega168: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
# atmega168: CFLAGS += '-DBAUD_RATE=115200'
# atmega168: AVR_FREQ = 16000000L
# atmega168: $(PROGRAM)_atmega168.hex
# atmega168: $(PROGRAM)_atmega168.lst
Expand All @@ -210,7 +210,7 @@ SIZE = $(GCCROOT)avr-size
#
# diecimila: TARGET = diecimila
# diecimila: MCU_TARGET = atmega168
# diecimila: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
# diecimila: CFLAGS += '-DBAUD_RATE=115200'
# diecimila: AVR_FREQ = 16000000L
# diecimila: $(PROGRAM)_diecimila.hex
# diecimila: $(PROGRAM)_diecimila.lst
Expand All @@ -236,31 +236,31 @@ atmega328: $(PROGRAM)_atmega328.lst
atmega328_isp: atmega328
atmega328_isp: TARGET = atmega328
atmega328_isp: MCU_TARGET = atmega328p
# 512 byte boot, SPIEN
# 4096 byte boot, SPIEN
atmega328_isp: HFUSE = D8
# Low power xtal (16MHz) 16KCK/14CK+65ms
atmega328_isp: LFUSE = FF
# 2.7V brownout
atmega328_isp: EFUSE = 05
atmega328_isp: isp

atmega328_ether: TARGET = atmega328_ether
atmega328_ether: MCU_TARGET = atmega328p
atmega328_ether: CFLAGS += '-D_ARDUINO_ETHERNET' '-DBAUD_RATE=115200'
atmega328_ether: AVR_FREQ = 16000000L
atmega328_ether: LDSECTIONS = -Wl,--section-start=.text=0x7000 -Wl,--section-start=.version=0x7ffe
atmega328_ether: $(PROGRAM)_atmega328_ether.hex
atmega328_ether: $(PROGRAM)_atmega328_ether.lst
atmega328_ether_isp: atmega328_ether
atmega328_ether_isp: TARGET = atmega328_ether
atmega328_ether_isp: MCU_TARGET = atmega328p
# 512 byte boot, SPIEN
atmega328_ether_isp: HFUSE = D8
atmega328_ethernet: TARGET = atmega328_ethernet
atmega328_ethernet: MCU_TARGET = atmega328p
atmega328_ethernet: CFLAGS += '-D_ARDUINO_ETHERNET' '-DBAUD_RATE=115200'
atmega328_ethernet: AVR_FREQ = 16000000L
atmega328_ethernet: LDSECTIONS = -Wl,--section-start=.text=0x7000 -Wl,--section-start=.version=0x7ffe
atmega328_ethernet: $(PROGRAM)_atmega328_ethernet.hex
atmega328_ethernet: $(PROGRAM)_atmega328_ethernet.lst
atmega328_ethernet_isp: atmega328_ethernet
atmega328_ethernet_isp: TARGET = atmega328_ethernet
atmega328_ethernet_isp: MCU_TARGET = atmega328p
# 4096 byte boot, SPIEN
atmega328_ethernet_isp: HFUSE = D8
# Low power xtal (16MHz) 16KCK/14CK+65ms
atmega328_ether_isp: LFUSE = FF
atmega328_ethernet_isp: LFUSE = FF
# 2.7V brownout
atmega328_ether_isp: EFUSE = 05
atmega328_ether_isp: isp
atmega328_ethernet_isp: EFUSE = 05
atmega328_ethernet_isp: isp


# # Sanguino has a minimum boot size of 1024 bytes, so enable extra functions
Expand Down
Expand Up @@ -48,7 +48,7 @@ Uploading firmware manually:
1. Check the target board is powered, and connected to the computer ethernet.
2. Verify the computer network settings: Static IP of 192.168.1.1, Subnet of 255.255.255.0.
3. In a console window: tftp 192.168.1.250
4. At the tftp> prompt: Make sure the tftp client is in octet mode using the
4. At the tftp> prompt: Make sure the tftp client is in octet mode using the
mode octet" command. Here you can also put the "trace" and "verbose" commands
for some more output.
5. Push reset button to start the bootloader. The LED will blink rapidly.
Expand Down
File renamed without changes.
164 changes: 164 additions & 0 deletions hardware/ariadne/bootloaders/ariadne/ariadne_atmega328.hex
@@ -0,0 +1,164 @@
:1070000050C00000BEC00000BCC00000BAC00000FC
:10701000B8C00000B6C00000B4C00000B2C000009C
:10702000B0C00000AEC00000ACC00000AAC00000AC
:10703000A8C00000A6C00000A4C00000A2C00000BC
:10704000A0C000009EC000009CC000009AC00000CC
:1070500098C0000096C0000094C0000092C00000DC
:1070600090C000008EC000001300050000496E763D
:10707000616C696420696D6167652066696C650093
:1070800008000500004572726F72000900050003D8
:1070900046756C6C000A000500004F70636F6465F4
:1070A0003F0011241FBECFEFD8E0DEBFCDBF11E0FF
:1070B000A0E0B1E0E6EFF9E702C005900D92AC3137
:1070C000B107D9F711E0ACE1B1E001C01D92AB32DC
:1070D000B107E1F701D08DC405D32FEF85EA9EE01B
:1070E000215080409040E1F700C00000112485E06D
:1070F00080938100FDD39ED095D2EFEFF5EA2EE08C
:10710000E150F0402040E1F700C00000109226015D
:1071100010922701C3E0E12CF12C809126018823F5
:1071200029F080912701882349F004C097D281116A
:10713000F8CF20C02FD4811105C01AC0CFD3811140
:10714000F9CF18C080912701813069F4109227018E
:1071500007B600FCFDCFF999FECFF701C7BFE89550
:1071600014D460D205C082E090E02DD48B3B11F0A6
:10717000EAD3D3CFE0911C01F0911D01099580E085
:1071800090E03ECF20E52CBD2A9820EF2EBD0DB417
:1071900007FEFDCF292F33272EBD0DB407FEFDCFEF
:1071A0008EBD0DB407FEFDCF6EBD0DB407FEFDCF45
:1071B0002A9A1CBC089520E52CBD2A982FE02EBDEC
:1071C0000DB407FEFDCF292F33272EBD0DB407FECA
:1071D000FDCF8EBD0DB407FEFDCF1EBC0DB407FE66
:1071E000FDCF2A9A8EB51CBC0895EF92FF92CF93E3
:1071F0007C01E1DFC82FC7010196DDDF2C2F30E0D5
:10720000322F2227A901482BCA01CF91FF90EF907E
:107210000895CF92DF92EF92FF927C016B01672F6E
:107220007727B0DF6C2DC7010196FF90EF90DF90BC
:10723000CF90A8CFCF92DF92EF92FF928CE284B9E9
:107240008CE385B981E08DBD89E797EB90932501AB
:107250008093240180E090E0B6D3853549F581E044
:1072600090E0B1D38A3A21F5E1E0CE2EE1E0DE2EC6
:10727000F3E0EF2EF12CC701A6D3F60181936F0145
:10728000FFEFEF1AFF0A85E1E816F104A1F786E1A6
:1072900090E099D3F82E85E190E095D32F2D30E042
:1072A000322F2227280F311D3093250120932401EE
:1072B00060E0C62E61E0D62EE12CF12CF601619142
:1072C0006F01C7015FDFFFEFEF1AFF0A8CE1E816DD
:1072D000F104A1F7FF90EF90DF90CF900895AF9267
:1072E000BF92CF92DF92EF92FF92CF93DF93CDB711
:1072F000DEB7CC50D240DEBFCDBF88E297E075DF6D
:10730000009711F480E098E7EE24E394F12CEC0E62
:10731000FD1E5E0123EFA21A2DEFB20A6C01EFEF02
:10732000CE1ADE0A48DFF70181937F01C114F0E82D
:10733000DF0611F0C60102C080E098E7EA14FB0402
:1073400069F7BC0188E297E064DF60E481E097E0E0
:1073500019DF81E097E02FDF8111FBCFCC24C394AC
:10736000D12CCC0EDD1E6CE0E62E67E0F62EF60189
:1073700061916F01C70106DFFFEFEF1AFF0A22E1FB
:10738000E21627E0F20699F7EF802885CB843C854A
:10739000898590E0982F88274A85840F911D833036
:1073A0009105D9F138F48130910539F0029709F04F
:1073B000A3C005C0069708F09FC080E0A4C06FEF8F
:1073C00082E090E008D360E481E097E0DBDE60E1FA
:1073D00081E097E0D7DE62E080E097E0D3DE61E015
:1073E00081E097E0CFDE609124017091250184E077
:1073F00097E00FDF83E097E0DEDE823221F060E18C
:1074000081E097E0BFDE83E097E0D5DE823219F7B6
:1074100010921F0110921E0175C0D12CDC2CCC24BF
:10742000C30ED11CF12CFE2CEE24E20EF11C84E0E4
:10743000E81AF108D0921F01C0921E01E1E0CE1AB5
:10744000D108DC2CCC24DD0CC6018E0D9F1D8130B3
:10745000904708F053C003C02FEFE21AF20AC701A9
:107460008F779927892BC1F7C114D10431F4CE014C
:107470000D9624D1882309F443C0DE011D9680E0D7
:1074800090E041E053E065E071E129C0E1E0F0E027
:10749000EC0FFD1FE80FF91F258530E0322F222762
:1074A000EC912E2BF601090147BFE89511240296B5
:1074B0009C012F773327232B71F4EE57F10957BF27
:1074C000E89507B600FCFDCF67BFE89507B600FC5E
:1074D000FDCF77BFE8951296F2E0CF0ED11C8E1546
:1074E0009F05A0F2E11422E0F20660F46BEB82E06B
:1074F00090E071D284E007C081E005C083E003C062
:1075000085E001C082E0C45FDD4FDEBFCDBFDF910B
:10751000CF91FF90EF90DF90CF90BF90AF90089504
:10752000AF92BF92CF92DF92EF92FF921F93CF93D1
:10753000DF93CDB7DEB7C456D109DEBFCDBF7C0126
:1075400084E297E052DE985A6C0182E0E816F1047A
:1075500079F120F4EA94EF2849F418C083E0E816A2
:10756000F104E9F0E4E0EE16F10411F14AE050E034
:1075700060E870E7CE0101961DD28AE0EE24E39424
:10758000F12CEC0EFD1E182F1E0D2EC04CE050E00D
:1075900065E970E7CE0101960DD28CE0EFCF49E0AE
:1075A00050E06BE870E7CE01019604D289E0E6CFA7
:1075B000198284E08A8380911E0190911F019B8330
:1075C0008C8384E0DBCFF70161917F015601FFEFEF
:1075D000AF1ABF0AC601D6DDA11480E6B80619F4B9
:1075E000A12CE8E5BE2E65011E11EDCFB601785540
:1075F00084E297E00EDE60E281E097E0C3DD81E0A7
:1076000097E0D9DD8111FBCFCC59DF4FDEBFCDBF75
:10761000DF91CF911F91FF90EF90DF90CF90BF90BF
:10762000AF90089565E470E084E097E0F2DD62E0F9
:1076300080E097E0A7DD61E081E097E0A3DD83E0F3
:1076400097E0B9DD823221F060E181E097E09ADDD8
:1076500083E097E0B0DD823229F70895CF9386E288
:1076600097E0C3DD892B11F481E026C080912701CA
:10767000811101C08AD181E08093270182E097E0E7
:107680009ADD82FF0EC064E082E097E07BDD2FEFA1
:1076900087E893E1215080409040E1F700C000006E
:1076A000EDCF1DDEC82F90E03BDFC430E9F660E18E
:1076B00081E097E067DD80E0CF91089520E030E041
:1076C000FC01E20FF31F40814C3051F441814439F9
:1076D00039F42C5F3F4F2433310591F781E0089551
:1076E00080E0089584B714BE98E10FB6F8949093A3
:1076F0006000109260000FBE0895A8950895E0E61E
:10770000F0E098E190838083089512D1803219F0DF
:1077100088E0F5DFFFCF84E1F8C0CF93C82F08D110
:10772000C150E9F7CF91F1CFEF92FF92CF93DF9362
:10773000CDB7DEB7C150D140DEBFCDBFF9D0813467
:10774000A9F4F6D0CF5FDE4F8883C150D140DDDF92
:10775000CF5FDE4F8881C150D140823811F483E081
:1077600003C08138E1F780E0D0D0ACC0823411F49E
:1077700084E103C0853419F484E0CFDFA3C08535EC
:1077800069F4D6D0F82ED4D02F2D30E0382B220F2C
:10779000331F309321012093200193C0863519F4C3
:1077A00084E0BBDFE0CF843609F05BC0C1D0C0D03D
:1077B00080932801BDD0E0912001F0912101E115D5
:1077C00080E7F80718F483E087BFE895EE24E39498
:1077D000F12CEC0EFD1EACD0F70181937F0180915E
:1077E00028018150809328018111F5CFE09120017B
:1077F000F0912101E11580E7F80718F083E087BFD9
:10780000E89583DF07B600FCFDCF40912001509141
:107810002101298180E090E061E0A1E0B0E0AC0FBF
:10782000BD1FA80FB91FFC01E40FF51F11967C9135
:10783000119730E0372B090167BFE89511248E3787
:10784000910521F012962C910296E7CF85E0FA017E
:1078500087BFE89507B600FCFDCF81E187BFE895BB
:1078600031C08437D1F464D063D08093280160D0D4
:107870004CDFE0912001F0912101CF01019690931E
:10788000210180932001849140D080912801815072
:10789000809328018111EDCF15C0853739F435DF8C
:1078A0008EE133D085E931D08FE05ECF813549F468
:1078B0002CDF6BEB82E090E08ED080E126D080E080
:1078C00004C023DF80E121D081E0CF5FDE4FDEBF47
:1078D000CDBFDF91CF91FF90EF9008958091C000D0
:1078E00087FF04C081E0809326011ECF81E00895C8
:1078F00082E08093C00088E18093C10086E080939D
:10790000C20080E18093C40008959091C00095FF6B
:10791000FCCF8093C60008958F708A3008F0895F8D
:107920009091C00095FFFCCF805D8093C6000895C4
:107930008091C00087FFFCCF8091C00084FFDDDE16
:107940008091C6000895809184009091850092FFF7
:1079500005C025B130E2232725B901C02D9820911B
:10796000290130912A018217930750F420912201B6
:10797000309123012F5F3F4F309323012093220149
:1079800090932A0180932901089510922301109267
:1079900022010895E0E0F0E085919491019641F094
:1079A00081E020912201309123012430310508F437
:1079B00080E00895FB01DC0102C005900D9241506A
:1079C0005040D8F70895F999FECF92BD81BDF89A3D
:1079D000992780B50895262FF999FECF1FBA92BD39
:1079E00081BD20BD0FB6F894FA9AF99A0FBE0196A0
:0679F0000895F894FFCF9A
:1079F60080C0A80101FFFFFF00DEADBEEFFEEDC0B7
:0C7A0600A801800000000007D08055554A
:040000030000700089
:00000001FF

0 comments on commit 6276f40

Please sign in to comment.