Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
bombasticbob opened this issue Dec 8, 2014 · 6 comments

Comments

@bombasticbob
Copy link
Contributor

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
Copy link
Contributor Author

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
Copy link
Contributor Author

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
Copy link
Contributor Author

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
Copy link
Contributor Author

bombasticbob commented Feb 2, 2017

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
Copy link

gsimard commented Jul 27, 2017

What is the status of this ?

@bombasticbob
Copy link
Contributor Author

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 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants