Come posso riservare una porzione di SDRAM, ad esempio 4 byte, per passare un flag tra U-Boot e il kernel Linux in modo che questa posizione di memoria riservata non è inizializzato dal linker e il valore mantenuto dopo un avvio a caldo? Sto cercando di evitare l'uso di bootarg per minimizzare l'usura del flash NAND utilizzato in un'applicazione incorporata. La mia domanda potrebbe essere considerata un'estensione alla soluzione fornita da: u-boot.lds How to detect cold boot versus warm boot on an ARM processor?Prenotazione di una porzione di SDRAM per passare i dati tra U-Boot e il kernel Linux
ho costruito con lo script del linker qui sotto e costruito con: -fno-zero-inizializzato-in-BSS senza successo .
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 = .;
}
Qualche idea?
Che scheda utilizzi? Una scheda versatile o una scheda personalizzata? Di quale SRAM stai parlando? –
La scheda è una at91sam9g45 ed è in realtà DDR2-SDRAM. – user1357493
Upvote solo per sapere come si scrive correttamente U-Boot. – sawdust