我该如何保留SDRAM的一部分,例如4个字节,以便在U-Boot和Linux内核之间传递标志,使得这个保留的内存位置不会被链接器初始化,并且在热启动后保留值?我试图避免使用bootargs来减少嵌入式应用中使用的NAND闪存的磨损。我的问题可以看作是以下解决方案的扩展:
如何检测ARM处理器上的冷启动与热启动?
我已经使用以下链接器脚本构建了u-boot.lds,并使用-fno-zero-initialized-in-bss进行了构建,但没有成功。
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
.text :
{
cpu/arm926ejs/start.o (.text)
*(.text)
}
. = ALIGN(4);
.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
. = ALIGN(4);
.data : { *(.data) }
. = ALIGN(4);
.got : { *(.got) }
. = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
. = ALIGN(4);
__bss_start = .;
_U_BOOT_FLAG = .; . = . + 4;
.bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
_end = .;
}
有什么想法吗?