内存 – 保留一部分SDRAM以在U-Boot和Linux内核之间传递数据
发布时间:2020-12-13 16:58:21 所属栏目:Linux 来源:网络整理
导读:如何保留SDRAM的一部分,比如4个字节,在U-Boot和 Linux内核之间传递一个标志,以便链接器不会初始化这个保留的内存位置,并在热启动后保留该值?我试图避免使用bootargs来最小化嵌入式应用程序中使用的NAND闪存的磨损.我的问题可以被认为是对解决方案的扩展: H
如何保留SDRAM的一部分,比如4个字节,在U-Boot和
Linux内核之间传递一个标志,以便链接器不会初始化这个保留的内存位置,并在热启动后保留该值?我试图避免使用bootargs来最小化嵌入式应用程序中使用的NAND闪存的磨损.我的问题可以被认为是对解决方案的扩展:
How to detect cold boot versus warm boot on an ARM processor? 我用下面的链接器脚本构建了u-boot.lds并使用以下代码构建它: 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 = .; } 有任何想法吗? 解决方法
已经有一种在U-Boot和Linux ARM内核之间传递数据的方法.它被称为ATAG内存列表.使用此数据列表将可用内存区域和板信息等信息从U-Boot传递到Linux ARM内核.您可以为数据定义自定义ATAG.在U-Boot中,添加例程以在lib_arm / armlinux.c中构建ARM标记.然后在arch / arm / kernel / setup.c中处理ATAG.
有关文档,请参见this或this alt site的第8节. 附录 Russel King在ARM启动时的另一个或更早版本(?)(但似乎已经更新)是here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |