diff --git a/configs/README.txt b/configs/README.txt index 5eee4786cf..d42c92fb8a 100644 --- a/configs/README.txt +++ b/configs/README.txt @@ -1052,6 +1052,8 @@ defconfig -- This is a configuration file similar to the Linux operation from FLASH but must copy initialized .data sections to RAM. CONFIG_BOOT_COPYTORAM - Some configurations boot in FLASH but copy themselves entirely into RAM for better performance. + CONFIG_BOOT_RAMFUNCS - Other configurations may copy just some functions + into RAM, either for better performance or for errata workarounds. CONFIG_STACK_POINTER - The initial stack pointer CONFIG_IDLETHREAD_STACKSIZE - The size of the initial stack. This is the thread that (1) performs the inital boot of the system up diff --git a/configs/kwikstik-k40/ostest/defconfig b/configs/kwikstik-k40/ostest/defconfig index c1b4500694..6e31c1f95f 100755 --- a/configs/kwikstik-k40/ostest/defconfig +++ b/configs/kwikstik-k40/ostest/defconfig @@ -822,6 +822,8 @@ CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n # (should also be =n for the KwikStik-K40 which always runs from flash) # CONFIG_BOOT_COPYTORAM - Some configurations boot in FLASH # but copy themselves entirely into RAM for better performance. +# CONFIG_BOOT_RAMFUNCS - Other configurations may copy just some functions +# into RAM, either for better performance or for errata workarounds. # CONFIG_CUSTOM_STACK - The up_ implementation will handle # all stack operations outside of the nuttx model. # CONFIG_STACK_POINTER - The initial stack pointer (arm7tdmi only) @@ -839,6 +841,7 @@ CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n # CONFIG_BOOT_RUNFROMFLASH=n CONFIG_BOOT_COPYTORAM=n +CONFIG_BOOT_RAMFUNCS=y CONFIG_CUSTOM_STACK=n CONFIG_STACK_POINTER= CONFIG_IDLETHREAD_STACKSIZE=1024 diff --git a/configs/kwikstik-k40/ostest/ld.script b/configs/kwikstik-k40/ostest/ld.script index b91f149968..21a3f11fd3 100755 --- a/configs/kwikstik-k40/ostest/ld.script +++ b/configs/kwikstik-k40/ostest/ld.script @@ -66,8 +66,6 @@ SECTIONS _etext = ABSOLUTE(.); } > flash - _eronly = ABSOLUTE(.); - .data : { _sdata = ABSOLUTE(.); *(.data .data.*) @@ -76,6 +74,16 @@ SECTIONS _edata = ABSOLUTE(.); } > sram AT > flash + _eronly = LOADADDR(.data); + + .ramfunc ALIGN(4): { + _sramfunc_begin = . ; + *(.ramfunc .ramfunc.*) + _eramfunc_end = . ; + } > sram AT > flash + + _framfunc = LOADADDR(.ramfunc); + .ARM.extab : { *(.ARM.extab*) } >sram