Another tiny step:
I was able to jump from the loader to the core, and blink the led from function boot() in ./platform/a580/sub/100c/boot.c.
This however required some strange hack that may indicate a problem in my build process:
From my understanding, code in 'platform' and 'core' is compiled into ./core/main.elf,
converted to ./core/main.bin,
inserted into ./loader/a580/main.elf (as binary blob),
which is then converted into ./loader/a580/main.bin, and encoded into ./bin/DISKBOOT.bin.
During boot, the loader calls 'copy_and_restart()' to copy the core's binary blob into the 'right' memory address (which is MEMISOSTART), and then jumps to that position.
So far - am I right?
The above process assumes that the start of the core's main.bin (i.e. offset 0x0000) is the entry point.
Meaning - ./core/entry.S should reside at offset 0x0000 in ./core/main.bin.
This doesn't happen in my build - ./core/entry.S goes into offset MEMISOSTART+0x6B8.
So jump to MEMISOSTART in copy_and_restart() doesn't work.
I had to change copy_and_restart() and add the following line:
dst_void = (void*) (MEMISOSTART + 0x6B8) ;
To jump into the correct location.
Inside ./core/main.dump I see that functions such as "__vid_get_bitmap_buffer_width_from_thumb" and "__get_zoom_x_from_thumb" got inserted before the entry point.
Does somebody have an Idea how to fix this?
Thanks for all your help so far.