I see something like this: Code: UDOO board => run loadfdt Failed to mount ext2 filesystem... ** Unrecognized filesystem type ** UDOO board => run loaduimage reading uImage 4367032 bytes read in 239 ms (17.4 MiB/s) UDOO board => bootm ${loadaddr} - ${fdt_addr}; ## Booting kernel from Legacy Image at 10800000 ... Image Name: Linux-4.2.0-gec528f1 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4366968 Bytes = 4.2 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ## Flattened Device Tree from Legacy Image at 12000000 Image Name: Linux-4.2.0-gec528f1 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4366968 Bytes = 4.2 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ERROR: uImage is not a fdt - must RESET the board to recover. Could not find a valid device tree
How did you created SD card? What type of partitions are there and where are the files (kernel, device tree, ...).
I used this script to build my SD card (this works perfecly with the Kernel_Unico): Code: #!/bin/bash # Make sure only root runs this script if [[ $EUID -ne 0 ]]; then echo "This script must be run as root or with sudo!" exit 1 fi CARD_DEV=$1 umount ${CARD_DEV}* >& /dev/null if [ -b "$CARD_DEV" ] ; then echo "************ Formatting SD card... ************" dd if=/dev/zero of=$CARD_DEV bs=1024 count=1024 SIZE=`fdisk -l $CARD_DEV | grep Disk | awk '{print $5}'` echo DISK SIZE - $SIZE bytes CYLINDERS=`echo $SIZE/255/63/512 | bc` echo CYLINDERS - $CYLINDERS { echo 1,9,0x0C,* echo 10,,,- } | sfdisk -D -H 255 -S 63 -C $CYLINDERS $CARD_DEV mkfs.vfat -F 32 -n "boot" ${CARD_DEV}1 mke2fs -j -L "filesystem" ${CARD_DEV}2 tune2fs -c0 -i0 ${CARD_DEV}2 fi mkdir tmp_boot mkdir tmp_fs mount ${CARD_DEV}1 tmp_boot mount ${CARD_DEV}2 tmp_fs # Copy bootloader dd if=dist/u-boot-q.imx of=${CARD_DEV} bs=512 seek=2 # Copy boot screen echo "************ Making Vesta OS image... ************" mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Vesta OS v1.0" -d ../tools/boot.txt tmp_boot/boot.scr # Copy kernel image cp dist/uImage tmp_boot # Copy DTB file cp dist/imx6q-udoo.dtb tmp_boot # Extract root file system tar -xf dist/rootfs.tar.gz -C tmp_fs # Copy firmware cp dist/sdma-imx6q.bin tmp_fs/lib/firmware/imx/sdma/ echo "************ Synchronizing I/O operations on SD card... ************" sync umount tmp_boot umount tmp_fs rm -rf tmp_boot tmp_fs echo "************ SD card successfully created ! ************" I use it like this: Code: sudo ./mksdcard.sh /dev/sdd
Then this will work: Code: fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage} fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file} bootm ${loadaddr} - ${fdt_addr} You have both files on first fat partition that's why you need to use fatload and not ext2load. You need to fix your bootscript (boot.txt).
My boot.txt looks like that: Code: setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=${mmcroot} ${hdmi_patch} fbmem=24M video=mxcfb0:dev=ldb,LDB-WVGA,if=RGB666,bpp=32' setenv uimage uImage setenv loaduimage 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}' setenv mmcroot '/dev/mmcblk0p2 rootwait rw' setenv mmcboot 'run mmcargs; bootm ${loadaddr}' setenv bootcmd 'mmc dev ${mmcdev};if mmc rescan; then if run loaduimage; then run mmcboot;else run netboot;fi;else run netboot; fi' saveenv I didn't change it for the new kernel. I tried your lines but it still blocks at starting step.
I think your script should like something like this: Code: setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=${mmcroot} ${hdmi_patch} fbmem=24M video=mxcfb0:dev=ldb,LDB-WVGA,if=RGB666,bpp=32' setenv uimage uImage setenv loadfdt 'fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}' setenv loaduimage 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}' setenv mmcroot '/dev/mmcblk0p2 rootwait rw' setenv mmcboot 'run mmcargs; bootm ${loadaddr} - ${fdt_addr}' setenv bootcmd 'mmc dev ${mmcdev};if mmc rescan; then if run loaduimage; then if run loadfdt; then run mmcboot; else run netboot; fi; else run netboot; fi; run netboot; fi' saveenv This from u-boot prompt should work: Code: setenv loadfdt 'fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}' run loaduimage run loadfdt run mmcargs bootm ${loadaddr} - ${fdt_addr}
OK this is better, the kernel at least try to boot Unfortunately, I get a kernel panic after a few second. Code: ... [ 1.703488] EXT4-fs (mmcblk0p2): mounting ext3 file system using the ext4 subsystem [ 1.726245] EXT4-fs (mmcblk0p2): recovery complete [ 1.731051] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 1.739191] VFS: Mounted root (ext3 filesystem) on device 179:2. [ 1.748498] devtmpfs: mounted [ 1.751676] Freeing unused kernel memory: 228K (80725000 - 8075e000) /sbin/init: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory [ 1.843034] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 [ 1.843034] [ 1.852182] CPU3: stopping [ 1.854903] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 4.2.0-gec528f1 #1 [ 1.861523] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) [ 1.868086] [<800158bc>] (unwind_backtrace) from [<80012770>] (show_stack+0x10/0x14) [ 1.875848] [<80012770>] (show_stack) from [<805236c4>] (dump_stack+0x84/0xc4) [ 1.883084] [<805236c4>] (dump_stack) from [<80014988>] (handle_IPI+0x178/0x18c) [ 1.890490] [<80014988>] (handle_IPI) from [<800093fc>] (gic_handle_irq+0x58/0x5c) [ 1.898068] [<800093fc>] (gic_handle_irq) from [<80013280>] (__irq_svc+0x40/0x74) [ 1.905556] Exception stack(0xab0a3f58 to 0xab0a3fa0) [ 1.910614] 3f40: 00000000 ab736940 [ 1.918798] 3f60: 00000001 ab0a2000 ab733540 00000001 6e394e35 00000000 6c337d02 00000000 [ 1.926982] 3f80: 00000004 807605d0 80014eac ab0a3fa0 80528a58 803733f0 20000113 ffffffff [ 1.935175] [<80013280>] (__irq_svc) from [<803733f0>] (cpuidle_enter_state+0x128/0x268) [ 1.943281] [<803733f0>] (cpuidle_enter_state) from [<80059958>] (cpu_startup_entry+0x18c/0x270) [ 1.952076] [<80059958>] (cpu_startup_entry) from [<1000948c>] (0x1000948c) [ 1.959045] CPU2: stopping [ 1.961764] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 4.2.0-gec528f1 #1 [ 1.968383] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) [ 1.974930] [<800158bc>] (unwind_backtrace) from [<80012770>] (show_stack+0x10/0x14) [ 1.982684] [<80012770>] (show_stack) from [<805236c4>] (dump_stack+0x84/0xc4) [ 1.989914] [<805236c4>] (dump_stack) from [<80014988>] (handle_IPI+0x178/0x18c) [ 1.997318] [<80014988>] (handle_IPI) from [<800093fc>] (gic_handle_irq+0x58/0x5c) [ 2.004895] [<800093fc>] (gic_handle_irq) from [<80013280>] (__irq_svc+0x40/0x74) [ 2.012382] Exception stack(0xab0a1f58 to 0xab0a1fa0) [ 2.017441] 1f40: 00000000 ab72c940 [ 2.025626] 1f60: 00000001 ab0a0000 ab729540 00000001 6e394e35 00000000 6c337680 00000000 [ 2.033811] 1f80: 00000004 807605d0 80014eac ab0a1fa0 80528a58 803733f0 20000113 ffffffff [ 2.041996] [<80013280>] (__irq_svc) from [<803733f0>] (cpuidle_enter_state+0x128/0x268) [ 2.050098] [<803733f0>] (cpuidle_enter_state) from [<80059958>] (cpu_startup_entry+0x18c/0x270) [ 2.058891] [<80059958>] (cpu_startup_entry) from [<1000948c>] (0x1000948c) [ 2.065859] CPU1: stopping [ 2.068579] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.2.0-gec528f1 #1 [ 2.075198] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) [ 2.081744] [<800158bc>] (unwind_backtrace) from [<80012770>] (show_stack+0x10/0x14) [ 2.089499] [<80012770>] (show_stack) from [<805236c4>] (dump_stack+0x84/0xc4) [ 2.096730] [<805236c4>] (dump_stack) from [<80014988>] (handle_IPI+0x178/0x18c) [ 2.104135] [<80014988>] (handle_IPI) from [<800093fc>] (gic_handle_irq+0x58/0x5c) [ 2.111711] [<800093fc>] (gic_handle_irq) from [<80013280>] (__irq_svc+0x40/0x74) [ 2.119198] Exception stack(0xab09ff58 to 0xab09ffa0) [ 2.124256] ff40: 00000000 ab722940 [ 2.132441] ff60: 00000001 ab09e000 ab71f540 00000001 6e394e35 00000000 6dad3c22 00000000 [ 2.140625] ff80: 00000004 807605d0 80014eac ab09ffa0 80528a58 803733f0 200f0013 ffffffff [ 2.148811] [<80013280>] (__irq_svc) from [<803733f0>] (cpuidle_enter_state+0x128/0x268) [ 2.156912] [<803733f0>] (cpuidle_enter_state) from [<80059958>] (cpu_startup_entry+0x18c/0x270) [ 2.165706] [<80059958>] (cpu_startup_entry) from [<1000948c>] (0x1000948c) [ 2.172676] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 [ 2.172676] Is ${fdt_file} set somewhere ?
This is already a problem with your distribution you want to boot. Which one exactly is that? Or maybe you should set init=/init in bootargs.
Where do you set the bootargs in U-Boot (I'm quite new with it) ? I tried : Code: setenv bootargs "init=/init" but I still have the same output.
Then I don't know what is wrong. Check if maybe symbolic link is used and it points to non existing file.
Because SPI isn't new at all. I don't think it is available in a newer version of the kernel if the UDOO team didn't write the SPI driver. So yes, if I can fix it it would probably works and at least, I'll be able to use an up to date kernel with a new rootfs built with the last version of Buildroot. This is a good point. But how about the original goal ? :/ I uploaded the image here if you can have a look : https://mega.nz/#!Dh0CBB5J!eW-O-51zqz6nzzrHfku8s744si_wMwJILpMF_2yOkZ8
I'm sure SPI will just work. Driver is already part of the kernel. But driver for your device you want to connect is a different story. Anyway, to actually boot this image you need to create one folder and one symbolic link in root of your image. Then it should boot (not 100% sure because was tested this only with qemu-arm emulator). Code: sudo mkdir lib/arm-linux-gnueabihf sudo ln -s /lib/libc.so.6 lib/arm-linux-gnueabihf Wonder why created image missing this step...
Hm. It still doesn't find the libc.so.6. I'll try tomorrow to build a new rootfs with the last version of Buildroot. Now I'm using the v2014.08.
If you got same error then you made folder or symbolic link wrong way. Or just copy libc in that folder.
Hm, I guess I used the wrong header files version number in buildroot. I changed my toolchain but I didn't change this in the config file.