在imx50 ARM板上将大量数据(3 MB)从uboot传递到linux内核2.6.35.3有一些问题.内核设备驱动程序探测功能需要此数据,然后才能释放.首先uboot将数据从闪存加载到RAM,然后使用bootargs传递linux内核的物理地址.在内核中,我尝试使用arch/arm/kernel/setup.c文件中的reserve_resource()来保留一定量的内存:
--- a/arch/arm/kernel/setup.c Tue Jul 17 11:22:39 2012 +0300
+++ b/arch/arm/kernel/setup.c Fri Jul 20 14:17:16 2012 +0300
struct resource my_mem_res = {
.name = "My_Region",
.start = 0x77c00000,
.end = 0x77ffffff,
.flags = IORESOURCE_MEM | IORESOURCE_BUSY,
};
@@ -477,6 +479,10 @@
kernel_code.end = virt_to_phys(_etext - 1);
kernel_data.start = virt_to_phys(_data);
kernel_data.end = virt_to_phys(_end - 1);
+ my_mem_res.start = mi->bank[i].start + mi->bank[i].size - 0x400000;
+ my_mem_res.end = mi->bank[i].start + mi->bank[i].size - 1;
for (i = 0; i < mi->nr_banks; i++) …Run Code Online (Sandbox Code Playgroud)