comment intégrer le Linux avec mon app dans mini2440

120 views
Skip to first unread message

XIE Enming

unread,
Sep 22, 2012, 7:45:54 AM9/22/12
to concours-li...@googlegroups.com
Bonjour
            Le système par défaut dans mini2440 neuve est le Qtopia, comment je dois faire pour que le nand.bin (généré depuis trois images : u-boot.bin, rootfs.jffs2 et uImage) que j'ai créé pour Qemu puisse marcher dans mini2440.
           Il faut utiliser la commande  dd  ?
           Est-ce qu'il y a quelques modifications pour que les trucs qui marchent dans Qemu peuvent marcher dans mini2440 ?
           Merci beaucoup!
 
Bien cordialement

yargil

unread,
Sep 22, 2012, 8:59:02 AM9/22/12
to concours-li...@googlegroups.com
Salut
Surtout ne copie pas le fichier nand.img dans la flash car il ne
convient pas. Le format de fichier NAND généré par flashimg est une
représentation physique du contenu de la flash NAND avec les zones OOB
(out of band) qui sont géré soit par le hardware soit par le driver
d’accès à la flash. C'est pour cela qu'il sont présent pour que Qemu
puisse voir le fichier comme une vrai flash NAND.

Je conseil de commencer par booter en NFS. C'est plus souple et plus
pratique que de copier dans la flash à chaque fois que tu fais une
modification de ton code. Pour cela regarde à cette page :
http://billforums.station51.net/viewtopic.php?f=1&t=17

Voilà comment j'ai fait :

Pour commencer installe u-boot sur ta carte :
http://bill.station51.net/index.php?post/2010/01/16/U-Boot-on-Mini2440
Pour ma part j'ai utilisé la méthode d'écrite à la fin de l'article
(UPDATE MAY 31st, 2010 ...). En voici un résumé de mémoire :
- mettre le switch en position boot en NOR
- relier la mini2440 au PC avec le cable USB
- allumer la carte. Le bootloader Supervivi démarre.
- appuie sur v pour le choix : "[v] Download vivi"
- lancer la commande suivante sur le PC pour lancer le transfert de
données : sudo s3c2410_boot_usb u-boot-nand2k.bin
- mettre le switch sur boot en NAND
- rebooter la carte

L'outil de transfert par USB ce trouve là :
http://mini2440.googlecode.com/files/s3c2410_boot_usb-20060807.tar.bz2
Source de u-boot pour la mini2440 :
http://repo.or.cz/w/u-boot-openmoko/mini2440.git

Dans le répertoire NFS (par exemple /export/nfs), copie y le fichier
buildroot/output/images/uImage. Crée un répertoire rootfs où tu untar le
fichier buildroot/output/images/rootfs.tar (pense à activer la création
de ce fichier dans buildroot).
Résultat :
$ ls /export/nfs
rootfs uImage
$ ls /export/nfs/rootfs
bin etc lib media opt root sbin tmp var
dev home linuxrc mnt proc run sys usr


La configuration du serveur NFS se fait dans le fichier /etc/exports
(voir la dernière ligne) :
$ cat /etc/exports
# /etc/exports: the access control list for filesystems which may be
exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check)
hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/export/nfs/ 192.168.0.0/24(rw,fsid=0,insecure,no_subtree_check,async)

À chaque fois que le fichier de config est modifié il faut relancer le
serveur. Pour cela :
$ sudo /etc/init.d/nfs-kernel-server restart


Configuration de u-boot (192.168.0.42 adresse IP de la mini2440,
192.168.0.11 adresse IP du PC) :

# dynpart192.168.0.42
# dynenv set u-boot_env
# setenv ipaddr 192.168.0.42
# setenv serverip 192.168.0.11
# setenv bootargs console=ttySAC0,115200 root=/dev/nfs
nfsroot=192.168.0.11:/export/nfs/rootfs rw ip=192.168.0.42 mini2440=3tb
# setenv bootcmd nfs 0x31000000 192.168.0.11:/export/nfs/uImage \; bootm
# env save

Après cela à chaque fois que la mini2440 reboot elle va démarrer en
téléchargeant le kernel présent sur le PC qui sert de serveur NFS.

Amuse toi bien avec ta mini2440 :)

--
Yargil http://yargil.free.fr

XIE Enming

unread,
Sep 22, 2012, 12:01:38 PM9/22/12
to concours-li...@googlegroups.com
Merci beaucoup!
C'est très détailé.
Je vais essayer.

Bien cordialement

在 2012年9月22日星期六UTC+2下午3时01分00秒,Yargil写道:

XIE Enming

unread,
Sep 23, 2012, 4:57:29 AM9/23/12
to concours-li...@googlegroups.com
sudo s3c2410_boot_usb u-boot-nand2k.bin

le fichier u-boot-nand2k.bin ici signifie ce que je dois télécharger depuis ce lien
http://www.friendlyarm.net/forum/topic/1103
ou je dois générer moi même (avec Builroot par exemple) ?
est-ce que je peux utiliser le u-boot.bin généré par Buildroot pour la Phase 1 que j'avais utilisé ?

Merci beaucoup!

在 2012年9月22日星期六UTC+2下午3时01分00秒,Yargil写道:

yargil

unread,
Sep 23, 2012, 5:05:52 AM9/23/12
to concours-li...@googlegroups.com
On 23/09/2012 10:57, XIE Enming wrote:
sudo s3c2410_boot_usb u-boot-nand2k.bin

le fichier u-boot-nand2k.bin ici signifie ce que je dois télécharger depuis ce lien
http://www.friendlyarm.net/forum/topic/1103
ou je dois générer moi même (avec Builroot par exemple) ?
est-ce que je peux utiliser le u-boot.bin généré par Buildroot pour la Phase 1 que j'avais utilisé ?
Le fichier généré par buildroot convient trés bien.
buildroot/output/build/uboot-custom/u-boot-nand2k.bin




Configuration de u-boot (192.168.0.42 adresse IP de la mini2440,
192.168.0.11 adresse IP du PC) :

# dynpart192.168.0.42
# dynenv set u-boot_env
# setenv ipaddr 192.168.0.42
# setenv serverip 192.168.0.11
# setenv bootargs console=ttySAC0,115200 root=/dev/nfs
nfsroot=192.168.0.11:/export/nfs/rootfs rw ip=192.168.0.42 mini2440=3tb
# setenv bootcmd nfs 0x31000000 192.168.0.11:/export/nfs/uImage \; bootm
# env save
Ici il fallait naturellement lire saveenv à la place de save env



Après cela à chaque fois que la mini2440 reboot elle va démarrer en
téléchargeant le kernel présent sur le PC qui sert de serveur NFS.

AleaJactaEst

unread,
Sep 23, 2012, 5:13:18 AM9/23/12
to concours-li...@googlegroups.com
Bonjour,

Utilise le u-boot.bin que tu as généré dans la phase1.
Cela devrait fonctionner.

regarder aussi les liens suivant :
http://www.domodom.fr/spip/Generer-et-installer-u-boot-dans.html
http://wiki.linuxmce.org/index.php/Mini2440
https://code.google.com/p/mini2440/wiki/MiniBringup

@+
AleaJactaEst

XIE Enming

unread,
Sep 23, 2012, 5:21:16 AM9/23/12
to concours-li...@googlegroups.com
J'ai essayé de compiler le s3c2410_boot_usb avec
make
mais il sort une erreur : usb.h : no such file or directory
Je recherche sur internet, il y a des liens qui disent que usb.h se trouve à /usr/include/usb.h
mais dans mon Ubuntu, je ne peux que le trouver à /usr/src/linux-headers-2.6.32-33/include/linux/usb.h
pourquoi ?
Je peux lier un usb avec mon ordinateur et le Ubuntu peut le distinguer.
Je dois faire quoi pour installer ou mettre à jour le usb.h dans /usr/include/  ?
(car je juste essayer moi même de copier le fichier /usr/src/linux-headers-2.6.32-33/include/linux/usb.h à /usr/include/usb.h, mais il sort une autre erreur: linux/mod_devicetable.h: No such file or directory, et si je copier le fichier /usr/src/linux-headers-2.6.32-33/include/linux/mod_devicetable.h à /usr/include/linux/mod_devicetable.h, il sort encore plusieurs erreurs........................)
Merci.

在 2012年9月23日星期日UTC+2上午11时07分50秒,Yargil写道:

yargil

unread,
Sep 23, 2012, 5:28:27 AM9/23/12
to concours-li...@googlegroups.com
On 23/09/2012 11:21, XIE Enming wrote:
> J'ai essayé de compiler le s3c2410_boot_usb avec
> make
> mais il sort une erreur : usb.h : no such file or directory
> Je recherche sur internet, il y a des liens qui disent que usb.h se
> trouve à /usr/include/usb.h
> mais dans mon Ubuntu, je ne peux que le trouver à
> /usr/src/linux-headers-2.6.32-33/include/linux/usb.h
> pourquoi ?
> Je peux lier un usb avec mon ordinateur et le Ubuntu peut le distinguer.
> Je dois faire quoi pour installer ou mettre à jour le usb.h dans
> /usr/include/ ?
> (car je juste essayer moi même de copier le fichier
> /usr/src/linux-headers-2.6.32-33/include/linux/usb.h à
> /usr/include/usb.h, mais il sort une autre erreur:
> linux/mod_devicetable.h: No such file or directory, et si je copier le
> fichier
> /usr/src/linux-headers-2.6.32-33/include/linux/mod_devicetable.h à
> /usr/include/linux/mod_devicetable.h, il sort encore plusieurs
> erreurs........................)
> Merci.
Je pense qu'il manque le paquet libusb-dev sur ton ubuntu. Installe le
avec la commande suivante et relance la compilation de s3c2410_boot_usb.
$ sudo apt-get install libusb-dev

--
Yargil
http://yargil.free.fr

XIE Enming

unread,
Sep 23, 2012, 6:39:33 AM9/23/12
to concours-li...@googlegroups.com
ah, c'est bien ça.
Quand je fais
sudo apt-get install libusb-dev
Maintenant je peux make, et il génère bien le binaire
s3c2410_boot_usb

merci beaucoup!

在 2012年9月23日星期日UTC+2上午11时30分24秒,Yargil写道:

XIE Enming

unread,
Sep 23, 2012, 6:41:53 AM9/23/12
to concours-li...@googlegroups.com
Oui, j'ai trouvé le fichier
buildroot-2012.05/output/build/uboot-custom/u-boot-nand2k.bin

j'ai jamais su qu'il y a un fichier comme ça.
Quelle est la différence entre les deux fichiers : u-boot-nand2k.bin et u-boot-nand16k.bin  ?
Merci

在 2012年9月23日星期日UTC+2上午11时07分50秒,Yargil写道:

XIE Enming

unread,
Sep 23, 2012, 6:51:39 AM9/23/12
to concours-li...@googlegroups.com
J'ai vu dans le lien:
http://bill.station51.net/index.php?post/2010/01/16/U-Boot-on-Mini2440
il utilise DNW, j'avais utilisé DNW (coopére avec SecureCRT) dans mon win7 et windows xp auparavant et il marche très bien. mais il est un  .exe
Où je peux télécharger la version de DNW pour Ubuntu (Linux) ?

Le système par défaut dans mini2440 neuf est Qtopia, est-ce que je dois le supprimer avant faire des tests avec NFS ?

Vous mentionnez supervivi, est-ce qu'il est le bootloader par défaut se trouvant déjà dans mini2440 ou je dois le flasher dans mini2440 ?

Excusez-moi pour si beaucoup de questions...... :p

Merci beaucoup!


在 2012年9月22日星期六UTC+2下午3时01分00秒,Yargil写道:
Salut

yargil

unread,
Sep 23, 2012, 7:34:33 AM9/23/12
to concours-li...@googlegroups.com
On 23/09/2012 12:51, XIE Enming wrote:
> J'ai vu dans le lien:
> http://bill.station51.net/index.php?post/2010/01/16/U-Boot-on-Mini2440
> il utilise DNW, j'avais utilisé DNW (coopére avec SecureCRT) dans mon
> win7 et windows xp auparavant et il marche très bien. mais il est un .exe
> Où je peux télécharger la version de DNW pour Ubuntu (Linux) ?
Je ne sais pas ce qu'est DNW. Il semble que cela remplace
s3c2410_boot_usb sous Windows.
Sous Linux tu peux utiliser la procédure que j'ai décrit dans mon
message précédent cela marche très bien.
>
> Le système par défaut dans mini2440 neuf est Qtopia, est-ce que je
> dois le supprimer avant faire des tests avec NFS ?
Tu dois juste installer u-boot. Par contre après cela je ne sais pas
s'il est encore possible de booter Qtopia.
>
> Vous mentionnez supervivi, est-ce qu'il est le bootloader par défaut
> se trouvant déjà dans mini2440 ou je dois le flasher dans mini2440 ?
Sur la mini2440 il y a deux bootloaders. Un sur la flash NAND qui doit
être fastboot. Et Supervivi est le bootloader installé dans la flash NOR.
>
> Excusez-moi pour si beaucoup de questions...... :p
> Merci beaucoup!

--
Yargil
http://yargil.free.fr

yargil

unread,
Sep 23, 2012, 7:39:16 AM9/23/12
to concours-li...@googlegroups.com
On 23/09/2012 12:41, XIE Enming wrote:
> Oui, j'ai trouvé le fichier
> buildroot-2012.05/output/build/uboot-custom/u-boot-nand2k.bin
>
> j'ai jamais su qu'il y a un fichier comme ça.
> Quelle est la différence entre les deux fichiers : u-boot-nand2k.bin
> et u-boot-nand16k.bin ?
> Merci
Il s'agit juste de la taille des fichiers qui est aligné sur la taille
des secteurs de la flash NAND. nand2k pour les flash qui on des secteurs
de 2048 octets ce qui est la cas de la flash NAND de la mini2440 que
l'on utilise. L'executable dans les fichiers est le même. Certain des
fichiers sont juste complété à la fin avec des 0 afin de s'aligner avec
la taille de secteur de la flash.

--
Yargil
http://yargil.free.fr

AleaJactaEst

unread,
Sep 23, 2012, 9:35:59 AM9/23/12
to concours-li...@googlegroups.com
Bonjour,

L'utilitaire DNW [qui fonctionne sur windows] permet de manipuler ta mini2440 (envoyer et recevoir des données).
Utile pour faire une sauvegarde complète de la NAND.

@+
AleaJactaEst

XIE Enming

unread,
Sep 23, 2012, 1:31:46 PM9/23/12
to concours-li...@googlegroups.com
Oui, je pense que s3c2410_boot_usb va faire le boulot ce que DNW fait sous Windows.
Je ne veux plus Qtopia, pas grave.
vous mentionnez fastboot, je recherche sur Google, il semble que cela est un mode ? ou un bootloader ?
Merci beaucoup!

在 2012年9月23日星期日UTC+2下午1时36分30秒,Yargil写道:

yargil

unread,
Sep 23, 2012, 2:20:44 PM9/23/12
to concours-li...@googlegroups.com
On 23/09/2012 19:31, XIE Enming wrote:
> Oui, je pense que s3c2410_boot_usb va faire le boulot ce que DNW fait
> sous Windows.
> Je ne veux plus Qtopia, pas grave.
> vous mentionnez fastboot, je recherche sur Google, il semble que cela
> est un mode ? ou un bootloader ?
> Merci beaucoup!
Oups, je me suis trompé. Ce n'est pas fastboot mais vboot qui est le
bootloader utilisé dans les mini2440 livrées.
Les sources de vboot sont dispo sur la page de download de
friendlyarm.net : http://www.friendlyarm.net/downloads
vboot est un bootloader minimaliste. Il n'y a pas de ligne de commande.

--
Yargil
http://yargil.free.fr

Antonio LUNA-ARRIAGA

unread,
Oct 4, 2012, 12:57:40 PM10/4/12
to concours-li...@googlegroups.com
Salut a tous,
Je reprends ce thread pour poser mon problème: Comment implémenter tout sur la NAND sans passer par NFS?

a) J'ai réussi à écrire u-boot dans la NAND comme décrit ici (supervivi + s3c2410_boot_usb u-boot_nand2k.bin)

b) J’essaie de faire pareil pour le kernel et le rootfs, mais j'ai un problème de CRC... voici ma procédure:

************ sur ma PC *************
debian@debian:~/s3c2410_boot_usb$ sudo ./s3c2410_boot_usb ../buildroot-2012.05/output/images/uImage csum = 0x5c46
send_file: addr = 0x33f80000, len = 0x0024b398
Error downloading program 

************ sur minicom, dans supervivi ***********
Enter your selection: k
USB host is connected. Waiting a download.

Now, Downloading [ADDRESS:30000000h,TOTAL:2405282]
RECEIVED FILE SIZE: 2405282 (23KB/S, 99S)
Downloaded file at 0x30000000, size = 2405272 bytes
Write to flash ok: skipped size = 0x60000, size = 0x24b398

*************** switch vers la NAND *************
U-Boot 1.3.2-mini2440 (Oct  3 2012 - 18:53:29)

I2C:   ready
DRAM:  64 MB
NOR Flash not found. Use hardware switch and 'flinit'
Flash:  0 kB
NAND:  Bad block table not found for chip 0
Bad block table not found for chip 0
128 MiB
Found Environment offset in OOB..
USB:   S3C2410 USB Deviced
In:    serial
Out:   serial
Err:   serial
MAC: 08:08:11:18:12:27
Hit any key to stop autoboot:  0 

Loading from NAND 128MiB 3,3V 8-bit, offset 0x60000
** Read error
## Booting kernel from Legacy Image at 32000000 ...
   Image Name:   Linux-3.3.7
   Created:      2012-10-03  17:13:26 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2405208 Bytes =  2.3 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... Bad Data CRC
ERROR: can't get kernel image!
****************************************************

PS.1. J'ai reçu une mini à 128 MB et pour l'instant je n'ai pas modifié mes binaires de la phase 1 sur 64 MB. (je pense que mon kernel devrait au moins fonctionner jusqu'à #nboot kernel)
PS.2. J'ai fait le nand scrub + createbbt sur la NAND avant d'écrire u-boot.
PS.3. J'ai mon debian squeeze dans VirtualBox, et mon PC tourne win7.. bref j'ai eu de soucis avec le NFS à cause de cette combinaison donc je vais faire mes tests directement sur la NAND.

Merci pour l'aide,
Cordialement,
-Antonio
--
Antonio LUNA-ARRIAGA

Antonio LUNA-ARRIAGA

unread,
Oct 4, 2012, 1:01:06 PM10/4/12
to concours-li...@googlegroups.com
J'ai oublié de dire que le message d'erreur au moment de télécharger uImage apparement est normal, non?
a+
-Antonio
--
Antonio LUNA-ARRIAGA

AleaJactaEst

unread,
Oct 4, 2012, 3:30:06 PM10/4/12
to concours-li...@googlegroups.com
Bonjour,

Je ne vois pas dans tes logs l'envoie de l'image rootfs.jffs2. Ce fichier contient tout le filesystem.


Autre possibilité TFTP.
---------------------------------
nand erase clean
nand scrub
nand createbbt
dynpart

## copie du kernel
nand erase 60000 500000
tftp 0x32000000 uImage

### Pour le dernier argument (ici 249000) mettre la taille du fichier en hexa (modulo 512)
nand write 32000000 60000 249000

## copie du root
nand erase 560000 1364000
tftp 0x32000000 rootfs.jffs2

### Pour le dernier argument (ici 1364000) mettre la taille du fichier en hexa (modulo 512)
nand write 32000000 560000 1364000

@+
AleaJactaEst

Antonio LUNA-ARRIAGA

unread,
Oct 4, 2012, 3:47:36 PM10/4/12
to concours-li...@googlegroups.com
Bonsoir,
Merci Jean, je vais faire un test avec TFTP pour voir si j'ai des meilleurs résultats que par NFS... ça ne marche pas mon win7 + Virtualbox.
a+,
-Antonio

Le 4 octobre 2012 21:30, AleaJactaEst <jean.so...@laposte.net> a écrit :
Bonjour,

Je ne vois pas dans tes logs l'envoie de l'image rootfs.jffs2. Ce fichier contient tout le filesystem.
Oui, je vois que l'erreur était le même avec ou sans le rootfs.jffs2 donc pour l'instant je veux pouvoir faire un 'iminfo' sans le CRC problème... mais tu'as raison ca serait mieux de tout mettre dans mes tests pour éviter des erreurs supplémentaires.


Autre possibilité TFTP.
---------------------------------
nand erase clean
nand scrub
nand createbbt
dynpart

## copie du kernel
nand erase 60000 500000
tftp 0x32000000 uImage

### Pour le dernier argument (ici 249000) mettre la taille du fichier en hexa (modulo 512)
nand write 32000000 60000 249000

## copie du root
nand erase 560000 1364000
tftp 0x32000000 rootfs.jffs2

### Pour le dernier argument (ici 1364000) mettre la taille du fichier en hexa (modulo 512)
nand write 32000000 560000 1364000

@+
AleaJactaEst



--
Antonio LUNA-ARRIAGA

AleaJactaEst

unread,
Oct 4, 2012, 4:27:26 PM10/4/12
to concours-li...@googlegroups.com
Bonjour,

Une petite remarque sur NFS.

J'ai eu un souci avec NFS avec le fonctionnement suivant (il se bloqué à la fin du téléchargement)
  mini2440 en IP fixe
  serveur en DHCP

J'ai corrigé en mettant dans le fichier host l'adresse de la mini2440 sur le serveur.

@+
AleaJactaEst

Antonio LUNA-ARRIAGA

unread,
Oct 5, 2012, 5:34:29 PM10/5/12
to concours-li...@googlegroups.com
Bonsoir,
Finalement j'ai mis le kernel + rootfs dans la NAND a l'aide d'une SD card.. par contre le demarrage de mon systeme n'aboutit toujours pas... j'ouvre un nouveau post a ce propos.
merci,
-Antonio
--
Antonio LUNA-ARRIAGA

Antonio LUNA-ARRIAGA

unread,
Oct 5, 2012, 7:32:39 PM10/5/12
to concours-li...@googlegroups.com
Bonjour Jean,
Est-ce que tu peux detailler avec les bootargs la manip s'il te plait... je n'arrive pas a passer de "Starting network..." (je fais tout sur NAND mais je pense que le souci es le même sur NFS).
Merci, 
cordialement,
-Antonio

Le 4 octobre 2012 22:27, AleaJactaEst <jean.so...@laposte.net> a écrit :



--
Antonio LUNA-ARRIAGA
Reply all
Reply to author
Forward
0 new messages