
Hi,
I'm working on u-boot-usb and I think I get along quite well so far for the Atmel g45, thanks to this list. Slowly I do like the u-boot structure although it has a steep learning curve (I guess one week is considered steep by me). I've got the my Atmel Sam9G45 working for most parts (it boots well) and I hope to contribute some code soon (after usb is working well).
I do however have some questions about the u-boot startup behaviour.
What I want to create is the following :
1) u-boot starts and checks if it can start my application (either CRC check or whatever). This is the first thing u-boot should do. 2) if it can't boot it will listen on USB or ethernet for someone to upload a valid image or boot via NFS or whatever has been configured. 3) If it can boot, it will boot immediately (there may be a GPIO pin to override this behaviour) 4) once within the application (linux or whatever) I must be able to set a flag that lets u-boot wait for uploading a new image file when I soft-reset my device. This is needed for firmware upgrading of course. I still need to check if this flag is supported by the CPU or needs other support (eeprom perhaps). 5) After uploading an image the soft-reset is cleared and the whole sequence start over again, so it should boot the new image.
In short I want the application to be in control and only if there's no application installed or it's corrupt or when the application let's u-boot know, u-boot is in control. I know at step 2 there are some complications for testing purposes, so there must be a way to change the behavior (change the order of doing things). Maybe a kind of boot sequence added to u-boot would be fine. But the boot sequence only needs two items than. Either boot the image or stay in u-boot.
I know it's possible to do this but I wonder if it has been done before and if there any examples of it ?
Since I'm working on USB device support for my G45 and I want the above behaviour (or something very similar) I'm very much interested in any work that implements this or comes close to this. If it hasn't been done before I'm interested to work on this of course and contribute the work. In that case I'd be interested in anyone's opinion on this topic (I mean the way to implement it and stay consistent with the current u-boot code).
Best regards, Marcel