XMegaForArduino / arduino

required (and optional) source files for the Arduino development environment, specifically the hardware/arduino sub-directory, to support xmega processors
19 stars 17 forks source link

port caterina bootloader (and necessary core support) for USB on xmega #23

Open bombasticbob opened 9 years ago

bombasticbob commented 9 years ago

work in progress, getting the USB code working. 'caterina' bootloader is apparently used by the Leonardo. To support identical functionality, port the caterina bootloader. need to determine if it can handle flash sizes > 64k

bombasticbob commented 9 years ago

need to complete USB support first. See CDC.cpp, 'CDC_Setup()' for how the boot sequence is detected. need to implement this properly for XMega or you won't be able to flash without manual reset.

bombasticbob commented 9 years ago

The 128A1U has a large enough 'bootloader' area (8k) in NVRAM to accomodate the additional code that might be necessary to support this; however, other devices may not have enough bootloader space. Biggest problems are that the xmega devices have much larger register maps and interrupt vector tables, as compared to the ATMega devices. So the code is bigger, because the instructions are longer, and the IVT size affects the overall code size.

bombasticbob commented 7 years ago

xmega should be able to use reset flags (soft boot or watchdog, whichever) to determine whether or not it should invoke the catarina bootloader's USB or not. this will avoid using a magic memory spot with some kind of magic value in it, which is what the ATMega implementation is doing.

bombasticbob commented 7 years ago

information about the A4U series:

16A4U has 2k RAM 32A4U and 64A4U have 4K RAM 128A4U has 8K RAM

128A4U has 8K boot. others have 4K boot 128A4U has 512 byte pages; others have 256 byte

information about the A1U series

64A1U has 4K boot; 128A1U has 8K boot 64A1U has 4K RAM; 128A1U has 8K RAM

gsimard commented 7 years ago

What is the status of this ?

bombasticbob commented 7 years ago

still as it's been for a while, unfortunately. I need time+money+hardware all at the same time before I can work on this. But thanks for the reminder, as I have a board design I want to get built using the xmegaA4U .