PHDRS
 {
-       fpgaimage PT_LOAD FLAGS(4);
-       text PT_LOAD;
+       text PT_LOAD FLAGS(5);
        data PT_LOAD;
        bss PT_LOAD;
 }
 ENTRY(Vector)
 SECTIONS
 {
-       .fpgaimage : {
-               *(fpga_bit.data)
-       } >fpgaimage :fpgaimage
-
        .start : {
                *(.startos)
        } >osimage :text
        .rodata : {
                *(.rodata)
                *(.rodata.*)
-               *(.version_information)
+               *(fpga_lf_bit.data)
+               *(fpga_hf_bit.data)
+               KEEP(*(.version_information))
        } >osimage :text
 
        . = ALIGN(4);
        .data : {
                *(.data)
                *(.data.*)
+               *(.ramfunc)
                . = ALIGN(4);
        } >ram AT>osimage :data
 
        __data_src_start__ = LOADADDR(.data);
        __data_start__ = ADDR(.data);
        __data_end__ = __data_start__ + SIZEOF(.data);
+       __os_size__ = SIZEOF(.text) + SIZEOF(.data) + SIZEOF(.rodata);
        
        .bss : {
                __bss_start__ = .; 
                *(.bss.*) 
                . = ALIGN(4);
                __bss_end__ = .;
-       } >ram :bss
+       } >ram AT>ram :bss
 
        .commonarea (NOLOAD) : {
                *(.commonarea)