[ECOS] How to write a complicated bootloader?

Stanislav Meduna stano@meduna.org
Sat Jul 11 09:18:00 GMT 2009


I have a hardware with a complicated ethernet device that
is not usable in a polled mode (or at least I don't have enough
documentation to be able to use it in such a way). There
is an OEM driver needing all kind of stuff (including eCos
kernel) to run, that works fine in a regular application.

The hardware has a serial port, which is enough for debugging,
but pain in the you know where for downloading our 2+ MB large
binary over max. 115200 bps. In the field this serial port
won't be available at all, so the only way to upgrade the device
is via ethernet.

What I'd like to have is some kind of bootloader, that
is able to
- load the application via ethernet
- manipulate the flash (application upgrade and at least
  initialize the jffs, even better to access it filewise)
- start the loaded application
- support debugging the application at least over serial
  line including the asynchronous ctrl-c support
  (ethernet in a way of gdbserver would be nice, but
  I imagine this can't be achieved in the eCos architecture
  where the application and OS can't be really separated)

Is there any special magic in loading an application somewhere
into memory and transfer control to it, while leaving the
GDB stubs in the bootloader? For the development cycle
I imagine something like:

- connect with the gdb over serial
- connect with a telnet-like interface over ethernet
- initiate a tftp load
- run the application
- the application loads, runs and breaks into the gdb
  as soon as the basic initialization is done (everything
  else in the bootloader is now dead, only the vectors
  needed for serial comm remain)

Is there information (and examples) available on how to approach

Many thanks for hints

Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

More information about the Ecos-discuss mailing list