The serial_transfer loader, as long as the target program voluntarily terminates itself at some point, is able to load multiple programs consecutively without requiring a physical power cycle to reload the transfer program from CD. The current example.mk juggles between two different "memory layouts", one for "burn to a physical CD" and another for "load via serial cable". Because the serial_transfer program now relocates itself to the end of system memory, this means the 0x8c010000 area is now usable by programs that are loaded by serial_transfer.
22 lines
674 B
Plaintext
22 lines
674 B
Plaintext
__p1ram_start = ORIGIN(p1ram);
|
|
/* reserve bytes for serial program loader */
|
|
__p1ram_end = ORIGIN(p1ram) + LENGTH(p1ram) - __stack_reservation;
|
|
|
|
__text_link_start = ADDR(.text);
|
|
__text_link_end = ADDR(.text) + SIZEOF(.text);
|
|
__text_load_start = LOADADDR(.text);
|
|
|
|
__data_link_start = ADDR(.data);
|
|
__data_link_end = ADDR(.data) + SIZEOF(.data);
|
|
__data_load_start = LOADADDR(.data);
|
|
|
|
__rodata_link_start = ADDR(.rodata);
|
|
__rodata_link_end = ADDR(.rodata) + SIZEOF(.rodata);
|
|
__rodata_load_start = LOADADDR(.rodata);
|
|
|
|
__ctors_link_start = ADDR(.ctors);
|
|
__ctors_link_end = ADDR(.ctors) + SIZEOF(.ctors);
|
|
|
|
__bss_link_start = ADDR(.bss);
|
|
__bss_link_end = ADDR(.bss) + SIZEOF(.bss);
|