Passar grande quantidade de dados binários do u-boot para o kernel do linux

Tem alguns problemas com a passagem de grande quantidade de dados (3 MB) do uboot para o kernel do Linux 2.6.35.3 na placa ARM do imx50. Esses dados são necessários na função de teste do driver de dispositivo do kernel e, em seguida, devem ser liberados. Primeiro, carregue os dados do flash para a RAM e, em seguida, passe o endereço físico para o kernel do Linux usando bootargs. No kernel eu tento reservar certa quantidade de memória usando o arquivo reserve_resource () no arquivo arch / arm / kernel / setup.c:

--- 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++) {
        if (mi->bank[i].size == 0)
@@ -496,6 +502,8 @@
        if (kernel_data.start >= res->start &&
            kernel_data.end <= res->end)
            request_resource(res, &kernel_data);
+
+       request_resource(res, &my_mem_res);
    }

    if (mdesc->video_start) {

Por isso estou tentando dizer ao kernel que esta área de memória é reservada e que esses dados não devem ser modificados pelo kernel.

70000000-77ffffff : System RAM
  70027000-7056ffff : Kernel text
  70588000-7062094f : Kernel data
  77c00000-77ffffff : My_Region

No driverioremap(0x77c00000, AREA_SIZE) é usado para obter o endereço de memória do kernel. Mas quando eu despejo o conteúdo da memória, há apenas zeros. Se o kernel de inicialização commem=120M (total de 128MB de RAM está disponível), então meus dados estão acima da região de ram do sistema de kernel, então recebo os dados que espero.

Então, minhas perguntas:

Por que eu recebo zeros e como faço para passar uma grande quantidade de dados binários do uboot para o kernel do linux?

questionAnswers(1)

yourAnswerToTheQuestion