uracoli Wireless Bootloader WiBo
Documentation

2010/07 dthiele

**Concept**
	- The wireless bootloader resides in bootloader section of AVR (512..4K Bytes)
	- it shall fit into 1kByte of code
	- it makes use of transceiver auto-modes
		- supported devices: AT86RF231 AT86RF212 ATmega128RFA1
	- The node address (64-bit Mac-address or 16-bit ShortAddr + 16-bit PanId) is hard coded into each bootloader (it resides in flash memory of bootloader section). This ensures remote operation if EEPROM is accidentely erased
	- The nodes are passive, that means they never send anything if not asked
	- It shall be possible to flash multiple nodes simultaneously by using broadcast network address, thus all nodes being in bootloader application will receive firmware image, no selection can be done within the received frames
	
**Enviroment**
The enviroment consist of three application parts:
	1 The bootloader itself, multiple devices per network
	2 The host application firmware, this is not necessarily the same hardware as the remote nodes. It has to carry a transceiver of the same frequency band. It must contain a unique address (MAC-address or PanId + ShortAddr)
	3 The python application (PC) connected to the host application board. It receives an Intel-hex file and controls the transmission to target nodes

**Requirements**
	1 Python
	2 pyserial http://pyserial.sourceforge.net

**Quick Start**
	1 Flash BootlApp to target node
	2 Jump into bootloader by
		- setting "BOOTRST" fuse + node reset
		- jump from application
	3 Prepare board with HostApp and connect to PC
	4 Connect PyHost to HostApp board
		- open python
		- >> import wibohost
		- >> wh = wibohost.WIBOHost(port='COM1', baudrate=38400)
	5 Check your connection to HostApp
		- >> wh.echo('Thequickbrownfox')
	6 Scan your network
		- wh.scan(scanrange=range(23,75))	# scan from node 23 to node 74 (decimal numbers)
	7 Flash your hex-file
		- wh.flashhex(fname='yourfile.hex')
	8 Check for success on each node
		- wh.checkcrc(nodeid=23)	# True on success

**BootlApp**
Available commands:

**HostApp**
API
	1 create a new WIBOHost instance
		- wh=wibohost.WIBOHost('COM2',baudrate=38400)
		- you can open the port later by creating wh=wibohost.WIBOHost() and later: wh.setPort(yourport), wh.setBaudrate(38400), wh.open()

**PyHost**
API
