27 août 2007

OpenWrt Kamikaze 7.07 et La Fonera : Can’t locate c0000(786432) bytes free in FLASH

Tags : ,

posté dans Embarqué |

En voulant mettre à jour mon routeur La Fonera avec la version 7.07 d'OpenWrt Kamikaze, j'ai rencontré un problème lors du flashage via RedBoot :

 Can't locate c0000(786432) bytes free in FLASH

En d'autres termes : impossible d'allouer 786432 octets en mémoire flash. Le problème vient de la taille du noyau Linux, le fichier openwrt-atheros-2.6-vmlinux.lzma. Jusqu'à présent sa taille était de 720896 octets (0xB0000) mais, à présent, il fait 786432 (0xC0000). Il faut donc revoir les valeurs de la table des images de RedBoot.

Voici ce que nous avions jusqu'à présent :

RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0xA8000000  0xA8000000  0x00030000  0x00000000
rootfs            0xA8030000  0xA8030000  0x00700000  0x00000000
vmlinux.bin.l7    0xA8730000  0x80041000  0x000B0000  0x80041000
FIS directory     0xA87E0000  0xA87E0000  0x0000F000  0x00000000
RedBoot config    0xA87EF000  0xA87EF000  0x00001000  0x00000000

Pour gagner de la place pour le noyau, nous devons allouer moins d'espace pour le rootfs et arriver à :

RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0xA8000000  0xA8000000  0x00030000  0x00000000
rootfs            0xA8030000  0xA8030000  0x006F0000  0x00000000
vmlinux.bin.l7    0xA8720000  0x80041000  0x000C0000  0x80041000
FIS directory     0xA87E0000  0xA87E0000  0x0000F000  0x00000000
RedBoot config    0xA87EF000  0xA87EF000  0x00001000  0x00000000

Le jeu de commandes à utiliser devient donc :

load -r -b 0x80041000 openwrt-atheros-2.6-root.jffs2-64k
fis create -b 0x80041000 -f 0xA8030000 -l 0x006F0000 -e 0x00000000 rootfs

puis

load -r -b 0x80041000 openwrt-atheros-2.6-vmlinux.lzma
fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7

0x006F0000 et non plus 0x00700000 ! Vous pouvez, avant cela supprimer les images existantes avec fis delete ou, plus simplement, réinitialiser le tout avec fis init -f. Ceci ne supprimera pas le bootloader et recréera un répertoire système (System directory). Notez qu'il est important de flasher l'image rootfs avant celle du noyau. En effet, on précise avec l'option -f l'emplacement de l'image en 0xA8030000. Si vous flashez le noyau en premier, cet emplacement sera déjà (dynamiquement) utilisé.

Article posté on Lundi, 27 août 2007 à 12:41 dans Embarqué. Vous pouvez suivre les commentaires sur cet article via un feed RSS 2.0. Commentaires et pings fermés.

Il y a actuellement une résponse pour “OpenWrt Kamikaze 7.07 et La Fonera : Can’t locate c0000(786432) bytes free in FLASH”

  1. 1 Le 8 mars 2008, Le Dan à écrit :

    Merci pour l’information.
    Je suis tombé sur cette page juste avant de commencer l’install. OpenWrt 7.09.

    Cela marche sans problème.