2015-12-01 1 views
1

Je compris mes rootfs (CONFIG_INITRAMFS_SOURCE) dans mon noyau, de sorte que le noyau a maintenant une taille de 17Mb:Linux Kernel - ERREUR: Impossible d'allouer octets de 0x6b3c ci-dessous 0x1000000

$ ls -la uImage 
-rw-r--r-- 1 kkr kkr 17669274 Dec 1 18:59 uImage 
$ d2h 17669274 
0x10D9C9A 

Comme il est compressé, il serait occupé 39MB non compressé:

$ dd if=uImage of=uImage-x.gz bs=64 skip=1 
$ file uImage-x.gz 
uImage-x.gz: gzip compressed data, max compression, from Unix 
$ gunzip uImage-x.gz 
$ ls -la uImage-x 
-rw-r--r-- 1 kkr kkr 39852288 Dec 1 19:18 uImage-x 
$ d2h 39852288 
0x2601900 

Pourquoi ne puis-je commencer mon noyau via uBoot avec cette commande?

=> setenv bootargs console=$consoledev,$baudrate $othbootargs 

=> tftp 0x3000000 $bootfile 
Speed: 100, half duplex 
Using eTSEC1 device 
TFTP from server 192.168.32.3; our IP address is 192.168.32.32 
Filename 'uImage-powerpc'. 
Load address: 0x3000000 
Loading: ##################################################### 
done 
Bytes transferred = 17669274 (10d9c9a hex) 

=> tftp 0x2700000 $fdtfile; 
Speed: 100, half duplex 
Using eTSEC1 device 
TFTP from server 192.168.32.3; our IP address is 192.168.32.32 
Filename 'sat_92107.100.00C_p2020.dtb'. 
Load address: 0x2700000 
Loading: ## 
done 
Bytes transferred = 15164 (3b3c hex) 

=> bootm 0x3000000 - 0x2700000 
## Booting kernel from Legacy Image at 03000000 ... 
    Image Name: Linux-4.0.0-AOA00.01-00662-g07ae 
    Created:  2015-12-01 17:59:21 UTC 
    Image Type: PowerPC Linux Kernel Image (gzip compressed) 
    Data Size: 17669210 Bytes = 16.9 MiB 
    Load Address: 00000000 
    Entry Point: 00000000 
    Verifying Checksum ... OK 
## Flattened Device Tree blob at 02700000 
    Booting using the fdt blob at 0x02700000 
    Uncompressing Kernel Image ... OK 
ERROR: Failed to allocate 0x6b3c bytes below 0x1000000. 
device tree - allocation error 

Depuis le noyau lui-même a besoin 0x10d9c9a octets (compressé) ou 0x2601900 octets (non compressé) il n'y a aucune chance de placer le devicetree ci-dessous 0x1000000. Cette valeur (16 Mo) est-elle configurable? Est-ce que mon noyau extrait a moins de 16Mo?

+0

De quel carton s'agit-il? – stdcall

+0

"Embedded Modul TQMP2020" avec 512 Mo de RAM - devrait suffire pour charger un Ramdisk de 40Mb: o) J'irai analyser uboot, peut-être que je trouverai quel est le problème ... – Charly

+0

Avez-vous validé vos méthodes en démarrant avec un fichier uImage plus petit , contenant un initramfs minimal? * "devrait être suffisant pour charger un Ramdisk de 40 Mo" * - Initramfs utilise des ramfs, ce qui n'est pas la même chose que le disque virtuel. – sawdust

Répondre

0

Oui, cette valeur est configurable dans U-Boot en définissant les variables d'environnement bootm_low et bootm_size en valeurs hexadécimales. Dans votre cas, c'est 0x0 et 0x20000000, respectivement.

Voir la section "Variables d'environnement" du grand fichier README dans l'arborescence source U-Boot.