ARM v7 (AML-8726) - debian

Merci, j’ai installé tftp. tftpd écoute sur le port 69 sur mon PC (debian squeeze).
Je ne sais pas pourquoi je ne le vois pas avec la commande netstat -ltaupen (options par exemple). mais la commande ps ax |grep tftpd montre /usr/sbin/in.tftpd --listen --user tftp --address 192.168.1.2:69 --secure /chemin/tftp
Je ferai des essais avec uboot aussitôt que j’aurai un câble série et du temps.

Tu n’as pas un autre PC sur ton LAN pour tester ?
as tu un firewall d’activé ?

j’ai bricolé enfin un câble serie à partir de câbles de récup.
J’ai fait un petit essai et ça fonctionne. Après quelques initialisations avec setenv, j’ai chargé une image en ram par tftpboot puis booter dessus avec la commande bootm. putty affiche booting bla bla bla, puis starting kernel … ça voudrait dire que ça marche.

J’ai récupéré sur le net le fichier “debian-wheezy-DI-b4-armhf-CD-1.iso” et j’aimerai l’installer sur la micro SD (16GO). comment faire ? commencer certainement par le décompresser…

Tu as effectivement bien avancé. Ca doit se terminer par une erreur de chargement de rootfs.
Je ne sais pas si tu peux te créer un file system à partir du CD d’install.
Le plus simple est d’en trouver un tout fait.(comme par ex celui là, mais peut étre trop complet avec mythtv forum.doozan.com/read.php?6,8530).
D’autres exemples:
eewiki.net/display/linuxonar … FileSystem

Il te faudra y ajouter les modules de ton kernel pour les périphériques externes.

Merci pour les liens. Il y a pas mal de “404 Not Found” sur le premier lien. Mais des informations intéressantes
Je n’arrive déjà pas à démarrer sur un kernel+rootfs (build) de chez Amlogic.

je rentre les commandes suivantes sur le prompt de u-boot
setenv bootcmd 'mmc init;mmcinfo;fatload mmc 0:1 82000000 /uImage;bootm 82000000;'
setenv bootargs 'console=tty0 console=ttyS0,115200n8 root=/dev/cardblksd2 rw rootfstype=ext2 init=/init mac=xx:xx:xx:xx:xx:xx rootwait’
saveenv
boot

et j’obtiens:
.
.
.
Partition Map for UNKNOWN device 0 – Partition Type: DOS

Partition Start Sector Num Sectors Type
1 63 481887 b
2 481950 7132860 83
reading /uImage

2075792 bytes read

Booting kernel from Legacy Image at 82000000 …

Image Name: Linux-2.6.34
Image Type: ARM Linux Kernel Image (lzma compressed)
Data Size: 2075728 Bytes = 2 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum … OK
Uncompressing Kernel Image … OK
Using machid 0xb8d from environment

Starting kernel …

ça s’arrête là sur le terminal minicom et rien sur la VGA du “device” (pas de signal)

Ton kernel ne boote pas, ou alors il envoie les enfos sur la mauvaise console.
As tu vu ceci: ridgerun.com/developer/wiki … oesnt_boot

ou alors un problème de machine ID. Si j’ai bien compris, pour ton SOC ce devrait être

vérifie quand même dans la doc.

Pour commencer, je vous souhaite à tous mes meilleurs voeux pour l’année 2013, santé, bonheur et surtout linux.
Merci pour la petite lecture. Je ne connaissait pas.
Le machid devrait être juste car le device boot bien sur le kernel “Android system recovery” alors que lorsque je fais un setenv machid (d’un autre chiffre) il ne boot plus. En bootant sur le kernel recovery, l’affichage est routé vers la VGA. Plus rien n’est affiché sur la console.

Le machid obtenu par printenv est 2957 en décimal ou b8d en hexa.
.
.
boardname=m1_dvbc
chipname=8726m
machid=2957
bootargs=console=ttyS0,115200n8
outputmode=720p
.
.
J’ai essayé plusieurs kernel compilés mais aucun resultat. j’ai essayé d’en compiler un à partir de sources disponibles mais cela génère pleins d’erreurs, je corrige une mais une aurte apparait alors j’ai du m’arrêter au bout d’environ la cinquième erreur.

Bonne année à toi aussi.
Même si la sortie VGA s’active, la console doit continuer à afficher les infos du kernel.
Tu doit avoir un pb de config de Uboot, mais je ne connais pas cette partie (je n’ai jamais eu ce problème).
Au pire, branche un écran sur la sortie VGA.

Même lorsque android livré d’origine avec le device fonctionnait encore, la console n’affichait rien après le Starting kernel …la suite s’affiche sur VGA.
Cela me laisse supposer que le kernel livré de base redirige tout exclusivement sur la VGA.
D’après le lien que tu m’a donné, “The last data sent to the console by u-boot is the string Starting kernel … The next output is generated by Linux”. J’en conclue qu’aucun des kernel que j’ai essayés n’a pu booter car ils ne renvoient la sortie ni sur la console ni sur la VGA. Il reste le machid à pister. (je part pour l’instant sur l’hypothèse que tous les kernel que j’ai essayés n’ont pas le même machid que u-boot).

c’est u-boot qui passe au kernel la console sur laquelle les messages seront affichés lors du boot du kernel

[quote]Wrong kernel console configuration

It is possible that Linux is booting just fine, but sending the boot output to a different UART. Reboot the hardware and interrupt auto-boot so that u-boot is active. Run the following u-boot command.

echo ${bootargs}

If you are using a DM365 or DM368, you should have

console=ttyS0,115200n8

in the bootargs string. [/quote]

Tu ne dois pas lui passer la bonne valeur.
Il y a peu d’info sur le net concernant ton matériel.
ça ne va pas étre facile.

J’ai aussi lu que le kernel linux fourni par amlogic est basé sur le kernel android, pas sur le kernel linux de base. c’est un peu étrange comme approche.
http://ao2.it/en/blog/2012/08/10/amlogic-aml8726-mx-linux-kernel-code-released
cnx-software.com/2012/08/25/ … -by-ainol/
Pour compiler ce kernel, j’ai trouvé ça (inclu la compilation des modules):http://www.cnx-software.com/2012/08/18/amlogic-releases-aml8726-mx-linux-3-0-8-source-code/

Pour obtenir les sources de ce kernel modifié, ce n’est pas évident! il faut commander 500 pièces … http://www.cnx-software.com/2012/10/31/crowfunding-initiative-to-open-amlogic-aml8726-m3-stb-source-code/

Merci pour toutes ces recherches.

Ces liens sont intéressants vu toutes les infos qu’on y trouve. Mais il concernent le soc AML8726-MX qui est version double coeurs. On trouve cette version sur des cartes plus récentes comme les meson6. Celle que j’ai est une meson1.
En ce qui concerne uboot, il est possible que les paramètres ne passent pas. je lirai la doc u-boot pour en savoir plus.
J’ai téléchargé hier le source arm-src-kernel-m3-2012-04-23-15.19-git-ec9b327098. ce source supporte aussi la version précise de ma carte cpu (carte soc :wink:).
ls ./arch/arm/configs/meson* renvoie plusieurs fichiers de configuration dont “meson_refc03_defconfig”

make menuconfig, (.config - Linux Kernel v2.6.34 Configuration) affiche toute une liste de cartes supportées dont “Support M1 8726(DVBC_8726M1_V1.0) platform(machid=2957)”. Le fait de faire make meson_refc03_defconfig sélectionne tout ce qui va bien et l’écrit dans le fichier .config.

make génère l’erreur suivante :

arch/arm/kernel/process.c: In function ‘arm_machine_restart’:
arch/arm/kernel/process.c:91: error: ‘REBOOT_MODE_OFFSET’ undeclared (first use in this function)
arch/arm/kernel/process.c:91: error: (Each undeclared identifier is reported only once
arch/arm/kernel/process.c:91: error: for each function it appears in.)
make[1]: *** [arch/arm/kernel/process.o] Erreur 1
make: *** [arch/arm/kernel] Erreur 2

une idée ?

Sur la compilation kernel, je ne pourrais pas t’aider. Si quelqu’un peut prendre le relais sur ce sujet …

Il n’y a qu’un seul kernel que j’ai réussi à compiler pour essai et c’est le meson6smp. Bien évidemment, il ne correspond pas à ma carte.
.
.
.
WARNING: modpost: Found 3 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y’
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
KSYM .tmp_kallsyms1.S
AS .tmp_kallsyms1.o
LD .tmp_vmlinux2
KSYM .tmp_kallsyms2.S
AS .tmp_kallsyms2.o
LD vmlinux
SYSMAP System.map
SYSMAP .tmp_System.map
OBJCOPY arch/arm/boot/ccImage
Kernel: arch/arm/boot/ccImage is ready
Image arch/arm/boot/ccImage.lzma is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-3.0.8-g42697c8
Created: Sat Jan 5 14:07:28 2013
Image Type: ARM Linux Kernel Image (lzma compressed)
Data Size: 2967387 Bytes = 2897.84 kB = 2.83 MB
Load Address: 80008000
Entry Point: 80008000
Image arch/arm/boot/uImage is ready

La compilation pour les autres cartes génère des erreurs.

Je ne trouve pas de kernel compilé pour ma carte. ceux que j’ai trouvés et essayés concernent des versions antérieures, donc ont un != machid.

Enfin, une étape presque franchie. en essayant quelques différentes versions de chaines de compilations croisées et sources de noyaux, j’ai pu aller un peu plus loin que le message “Starting kernel”.

TFTP from server 192.168.1.2; our IP address is 192.168.1.5
Filename ‘uImage’.
Load address: 0x82000000
Loading: #################################################################
#################################################################
#################################################################
###############################################
done
Bytes transferred = 3539277 (36014d hex)
8726M_DVBC # bootm

Booting kernel from Legacy Image at 82000000 …

Image Name: Linux-2.6.34
Image Type: ARM Linux Kernel Image (lzma compressed)
Data Size: 3539213 Bytes = 3.4 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum … OK
Uncompressing Kernel Image … OK

Using machid 0xb8d from environment

Starting kernel …

[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 2.6.34 (root@serveur) (gcc version 4.7.1 20120402 (prerelease) (crosstool-NG linaro-1.13.1-2012.04-20120426 - Linaro GCC 23
[ 0.000000] CPU: ARMv7 Processor [411fc091] revision 1 (ARMv7), cr=10c53c7f
[ 0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[ 0.000000] Machine: AMLOGIC MESON-M1 8726M DVBC
[ 0.000000] Ignoring unrecognised tag 0x00000000
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] BUG: mapping for 0x84000000 at 0xc4000000 overlaps vmalloc space
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 30720
[ 0.000000] Kernel command line: console=ttyS0,115200n8 clk81=200000000 a9_clk=600M
.
.(dizaines de lignes)
.
[ 1.423000] eth0: mixed no checksumming and other settings.
[ 1.430000] ethernet_pm_driver init
[ 1.432000] ethernet_pm_driver probe!
[ 1.436000] dwc_ahci: version 3.0
[ 1.439000] dwc_ahci lm2: base address: 0xF9400000
[ 1.444000] dwc_ahci lm2: irq no: 62

Il ne va pas plus loin, pas d’affichage sur la VGA, pas de message autres après environ 10 minutes depuis le boot.
Il est planté! il ne trouve pas les modules ou rootfs ? il n’aime pas le driver suivant ?
.
.
plustard
.
.
Apres quelques modifs, il est allé plus loin et a fini par kernel panic.

3.794000] Code: e1a01000 e59f000c eb192b82 e3a03000 (e5833000)
[ 3.800000] —[ end trace 3f8d1f4cd5dfb95d ]—
[ 3.805000] Kernel panic - not syncing: Attempted to kill init!
[ 3.811000] Backtrace:
[ 3.813000] [] (panic+0x4c/0xd8) from [] (0xcfc25d4f)
[ 3.820000] Backtrace aborted due to bad frame pointer

Tu n’as pas d’autre message d"erreur, avant la trace ?:

[quote]So, what does this actually mean? Well, in this case it really doesn’t mean that someone tried to kill the magical init process (process #1…), but simply that it tried to die. This process is not allowed to die or to be killed.

When you see this message, it’s almost always at boot-time, and the real messages … the cause of the actual failure … will be found in the startup messages immediately preceding this one. This is often the case with kernel-panics. init encountered something “really bad,” and it didn’t know what to do, so it died, so the kernel died too.[/quote]

J’ai trouvé une erreur un peu plus haut :
Netfilter messages via NETLINK v0.30.
[ 2.945000] nf_conntrack version 0.5.0 (1782 buckets, 7128 max)
[ 2.951000] CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use
[ 2.958000] nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or
[ 2.966000] sysctl net.netfilter.nf_conntrack_acct=1 to enable it.
[ 2.973000] ctnetlink v0.93: registering with nfnetlink.
[ 2.978000] kernel BUG at net/netfilter/nf_conntrack_helper.c:187!
[ 2.984000] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 2.992000] pgd = c0004000
[ 2.994000] [00000000] *pgd=00000000
[ 2.998000] Internal error: Oops: 805 [#1] PREEMPT

J’ai temporairement désactivé le firewall dans la config du noyau. Je reviendrai dessus plus tard, car sans iptables ça ne le fait pas.(l’une des fonction de cette machine sera DNAT)

maintenant le kernel va jusqu’au bout et cherche le rootsfs mais ne le trouve pas.

[ 3.049000] Waiting for root device /dev/cardblksd2…
[ 3.072000] hub 2-1:1.0: USB hub found
[ 3.072000] hub 2-1:1.0: 4 ports detected
[ 3.350000] usb 2-1.2: new high speed USB device using dwc_otg and address 3
[ 3.461000] Actual delay time in sd_voltage_validation() = 30 ms
[ 3.525000] #SD_ERROR_SWITCH_FUNCTION_COMUNICATION error occured in sd_switch_funtion()
[ 3.527000] sd_mmc_init() is completed successfully!
[ 3.532000] This SDHC card is working in Wide Bus and normal speed mode!
[ 3.532000]
[ 3.541000] cardblksd: cardblksd1 cardblksd2
[ 3.600000] VFS: Cannot open root device “cardblksd2” or unknown-block(253,2)
[ 3.602000] Please append a correct “root=” boot option; here are the available partitions:
[ 3.610000] 1f00 8192 mtdblock0 (driver?)
[ 3.615000] 1f01 8192 mtdblock1 (driver?)
[ 3.620000] 1f02 8192 mtdblock2 (driver?)
[ 3.625000] 1f03 204800 mtdblock3 (driver?)
[ 3.630000] 1f04 16384 mtdblock4 (driver?)
[ 3.635000] 1f05 270336 mtdblock5 (driver?)
[ 3.640000] 1f06 8 mtdblock6 (driver?)
[ 3.645000] 1f07 2048 mtdblock7 (driver?)
[ 3.650000] fd00 3813376 cardblksd driver: cardblk
[ 3.655000] fd01 1054000 cardblksd1
[ 3.659000] fd02 2756985 cardblksd2
[ 3.664000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,2)
[ 3.672000] Backtrace:
[ 3.675000] [] (panic+0x4c/0xd8) from [] (rfkill_ids+0xa22ec/0x1198c0)
[ 3.683000] Backtrace aborted due to bad frame pointer <00008000>

La prochaine étape est de mettre un rootfs dans laseconde partition de la microSD ou directement sur la flash.

c’est rare de dire qu’un kernel panic est une bonne nouvelle !
mais arriver jusqu’au chargement du rootfs est déja bien sur une machine qui n’est pas prévue pour gnu/linux d’origine.
Concernant l’erreur sur conntrack_helper, il faudrait que Pascal se penche dessus.

Par avance Merci à Pascal si parfois il aura le temps de jeter un coup d’oeil. Je joins le fichier source nf_conntrack_helper.c mais bien entendu, je peux retrouver le lien ou j’ai téléchargé le source du kernel complet.
Je ne sais pas comment ça fonctionne au juste le chargement du rootfs. Je peux toujours chercher sur le net et comprendre, mais plustard. Il cherche init ? une petite explication trés sommaire serait la bienvenue.
J’ai copié un ou deux rootfs sur la seconde partition de la microSD pour essayer mais le kernel dit toujours cardblksd: cardblksd1 cardblksd2
VFS: Cannot open root device “cardblksd2” or unknown-block(253,2)
Please append a correct “root=” boot option; here are the available partitions:

Je ne suis pas sure de la commande :
setenv bootargs 'console=tty0 console=ttyS0,115200n8 root=/dev/cardblksd2 rw rootfstype=ext2 init=/init mac=XX:XX:XX:XX:XX:XX rootwait’
saveenv

En ce moment je compile un buildroot téléchargé sur le site openlinux.Amplogic. Il s’arrête de temps en temps sur une erreur et repart après correction du problème…(Je n’ai presque jamais vu une compilation se dérouler sans complications :wink:
nf_conntrack_helper.c (7.25 KB)

Pour charger le rootfs, c’est cet argument qui ne doit pas étre bon:

Ta carte ne dois pas être identifiée sous ce nom. Mais sans rootfs, je ne sais pas comment trouver le nom d’un device.
Sur mes appareils , c’est du genre: /dev/mmcblk0.
Essaie de regarder dans les messages qui défilent au boot si tu vois un device de monté qui ressemble à ça.
Pour l’explication de la séquence de boot, cet article est assez bien fait:
ibm.com/developerworks/linux … index.html

J’ai regardé l’ensemble du debug du kernel, il n’y a pas d’autre appellation que cardblksd. Avec cardblksd 1 lorsque je formate la microSD avec une seule partition et cardblksd1 cardblksd2 lorsque je la formate avec deux partitions. ça a l’air d’être bon.

J’ai trouvé sur le net un debug d’une carte Amlogic de version précédente à la mienne. Il donne aussi la même appellation, cardblksd. Le problème est peut être le rootfs lui même ou les modules ?

6.348000] sd_mmc_init() is completed successfully!
[ 6.353000] This SD card is working in Wide Bus and normal speed mode!
[ 6.353000]
[ 6.361000] cardblksd: cardblksd1
[ 6.365000]
[ 6.365000] SD/MMC initialization started…
[ 7.151000] Actual delay time in sdio_voltage_validation() = 20 ms
[ 7.212000] #this sdio card could not support read after write
[ 7.213000] set sd_mmc config_reg->cmd_clk_divide 5, CLK 15M
[ 7.218000] sd_mmc_init() is completed successfully!
[ 7.223000] This SDIO card is working in Wide Bus and high speed mode!
[ 7.223000]
[ 7.233000] F1 signature read @0x18000000=0x9934329
[ 7.237000] DHD: dongle ram size is set to 294912(orig 294912)
[ 7.243000] (null): firmware: using built-in firmware broadcm_4329/sdio-g-cdc-full11n-reclaim-roml-wme-idsup.bin
[ 7.307000] (null): firmware: using built-in firmware broadcm_4329/nvram.txt
[ 7.309000] dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.
[ 7.430000] Firmware version = wl0: May 20 2010 17:05:31 version 4.218.237.0
[ 7.831000] eth0: Broadcom Dongle Host Driver mac=cc:52:af:25:29:7e
[ 7.832000] amlogic rfkill init
[ 8.040000] BT_RADIO going: on
[ 8.040000] BCM_BT: going ON
[ 8.250000] aml_hw_crypto initialization.
[ 8.250000] alg: No test for ecb(tdes) (ecb-tdes-aml)
[ 8.254000] alg: No test for cbc(tdes) (cbc-tdes-aml)
[ 8.259000] alg: No test for ecb-aes-aml (ecb-aes-aml)uve pas les fichiers d
[ 8.264000] HCI UART driver ver 2.2
[ 8.267000] Bluetooth: HCI H4 protocol initialized
[ 8.272000] android init

Le kernel charge les modules avant de monter le rootfs. Je n’ai pas vu d’instructions particulières à ce sujet sur le site d’Amlogic, dans les tutos…
J’ai le sentiment que le kernel ne trouve pas les fichiers dont il a besoin sur la microSD.