Re: flash-kernel and dtb
On Sunday 15 June 2014 08:56:07 you wrote:
> On 15/06/2014 08:48, Rainer Dorsch wrote:
> > On Sunday 15 June 2014 08:43:23 you wrote:
> >> On 15/06/2014 08:36, Rainer Dorsch wrote:
> >>> Hi Ian,
> >>>
> >>> thanks for your useful response again.
> >>>
> >>> On Saturday 14 June 2014 14:48:08 Vagrant Cascadian wrote:
> >>>> On Sat, Jun 14, 2014 at 10:36:43PM +0200, Rainer Dorsch wrote:
> >>>>> root@bokocube:~# cat /root/boot.cmd
> >>>>> 5# boot script for CuBox-i
> >>>>>
> >>>>> setenv device mmc
> >>>>> setenv partition ${mmcdev}:${mmcpart}
> >>>>> setenv bootargs 'quiet'
> >>>>>
> >>>>> image_locations='/boot/ /'
> >>>>> kvers='3.15-rc8-armmp'
> >>>>>
> >>>>> for pathprefix in ${image_locations}
> >>>>> do
> >>>>>
> >>>>> load ${device} ${partition} ${loadaddr}
> >>>>> ${pathprefix}vmlinuz-${kvers}
> >>>>> \
> >>>>> && load ${device} ${partition} ${fdt_addr} ${pathprefix}dtb-${kvers}
> >>>>> \
> >>>>> && load ${device} ${partition} ${ramdiskaddr}
> >>>>>
> >>>>> ${pathprefix}initrd.img-${kvers} \
> >>>>>
> >>>>> && echo "Booting Debian ${kvers} from ${device} ${partition}..." \
> >>>>> && bootz ${loadaddr} ${ramdiskaddr}:${filesize} ${fdt_addr}
> >>>>>
> >>>>> done
> >>>>> root@bokocube:~#
> >>>>
> >>>> You might want to remove "quiet" and add the console= and root=
> >>>> bootprompt
> >>>>
> >>>> options in /etc/default/flash-kernel (or run dpkg-reconfigure flash-
kernel):
> >>>> LINUX_KERNEL_CMDLINE="root=/dev/mmcblk0p1 console=ttymxc0,115200"
> >>>
> >>> Thank you for that hint, I did not know how to configure that, but was
> >>> wondering about the quiet.
> >>>
> >>>> Then run flash-kernel and use the bootscript it generates... or
> >>>> manually
> >>>> edit the bootargs in your boot script.
> >>>>
> >>>>> CuBox-i U-Boot > setenv mmcdev 0
> >>>>> CuBox-i U-Boot > setenv mmcpart 2
> >>>>> CuBox-i U-Boot > setenv ramdiskaddr 0x11800000
> >>>>> CuBox-i U-Boot > setenv fdt_addr 0x18000000
> >>>>> CuBox-i U-Boot > setenv scr_addr 0x19900000
> >>>>> CuBox-i U-Boot > ext4load mmc 0:2 0x19900000 /boot/boot.scr
> >>>>> 637 bytes read in 94 ms (5.9 KiB/s)
> >>>>> CuBox-i U-Boot > source 0x19900000
> >>>>
> >>>> The default in the u-boot in Debian is to use ${loadaddr} for the
> >>>> script
> >>>> address. Is your initrd large enough that you might be overwriting part
> >>>> of
> >>>> it with ${scr_addr}?
> >>>
> >>> I thought about that and calculated the sizes of the zImage, ramdisk,
> >>> and
> >>> dtb, but they should fit in easily. For the size I used the output of
> >>> load
> >>>
> >>> 2857680 bytes read in 247 ms (11 MiB/s)
> >>> 28603 bytes read in 126 ms (221.7 KiB/s)
> >>> 10934444 bytes read in 621 ms (16.8 MiB/s)
> >>>
> >>> e.g. the last one (ramdisk) is 0xA6D8AC
> >>>
> >>>> This is what my working setup looks like (should be all default u-boot
> >>>> env
> >>>> values):
> >>>>
> >>>> CuBox-i U-Boot > printenv loadaddr fdt_addr ramdiskaddr
> >>>> loadaddr=0x10800000
> >>>> fdt_addr=0x18000000
> >>>> ramdiskaddr=0x11800000
> >>>> CuBox-i U-Boot > boot
> >>>> mmc0 is current device
> >>>> ** File not found /boot.scr **
> >>>> ** File not found uEnv.txt **
> >>>> ** File not found /zImage **
> >>>> ** File not found /uImage **
> >>>> 674 bytes read in 110 ms (5.9 KiB/s)
> >>>> Running bootscript from mmc ...
> >>>> ## Executing script at 10800000
> >>>> 2857312 bytes read in 308 ms (8.8 MiB/s)
> >>>> 29104 bytes read in 107 ms (265.6 KiB/s)
> >>>> 10930060 bytes read in 801 ms (13 MiB/s)
> >>>> Booting Debian 3.15-rc8-armmp from mmc 0:1...
> >>>> Kernel image @ 0x10800000 [ 0x000000 - 0x2b9960 ]
> >>>> ## Flattened Device Tree blob at 18000000
> >>>>
> >>>> Booting using the fdt blob at 0x18000000
> >>>> Using Device Tree in place at 18000000, end 1800a1af
> >>>>
> >>>> Starting kernel ...
> >>>>
> >>>> [ 0.000000] Booting Linux on physical CPU 0x0
> >>>> ...
> >>>>
> >>>> I don't see it loading the initrd, though it's definitely using it...
> >>>
> >>> I use your original boot.scr with an adapted bootargs:
> >>>
> >>> root@bokocube:~# cat /root/boot.cmd
> >>> v# boot script for CuBox-i
> >>>
> >>> setenv device mmc
> >>> setenv partition ${mmcdev}:${mmcpart}
> >>> setenv bootargs 'root=/dev/mmcblk0p2 rootfstype=ext4 ro rootwait
> >>> console=ttymxc0,115200'
> >>>
> >>> image_locations='/boot/ /'
> >>> kvers='3.15-rc8-armmp'
> >>>
> >>> for pathprefix in ${image_locations}
> >>> do
> >>>
> >>> load ${device} ${partition} ${loadaddr} ${pathprefix}vmlinuz-${kvers}
> >>> \
> >>> && load ${device} ${partition} ${fdt_addr} ${pathprefix}dtb-${kvers} \
> >>> && load ${device} ${partition} ${ramdiskaddr}
> >>>
> >>> ${pathprefix}initrd.img-${kvers} \
> >>>
> >>> && echo "Booting Debian ${kvers} from ${device} ${partition}..." \
> >>> && bootz ${loadaddr} ${ramdiskaddr}:${filesize} ${fdt_addr}
> >>>
> >>> done
> >>> root@bokocube:~#
> >>>
> >>> Variables set as you did, but the kernel is still not booting
> >>>
> >>> CuBox-i U-Boot > printenv loadaddr fdt_addr ramdiskaddr
> >>> loadaddr=0x10800000
> >>> fdt_addr=0x18000000
> >>> ramdiskaddr=0x11800000
> >>> CuBox-i U-Boot > save
> >>> Saving Environment to MMC...
> >>> Writing to MMC(0)... done
> >>> CuBox-i U-Boot > load mmc 0:2 0x19000000 /boot/boot.scr
> >>> 702 bytes read in 95 ms (6.8 KiB/s)
> >>> CuBox-i U-Boot > source 0x19000000
> >>> ## Executing script at 19000000
> >>> 2857680 bytes read in 247 ms (11 MiB/s)
> >>> 28603 bytes read in 127 ms (219.7 KiB/s)
> >>> 11419166 bytes read in 642 ms (17 MiB/s)
> >>> Booting Debian 3.15-rc8-armmp from mmc 0:2...
> >>> Kernel image @ 0x10800000 [ 0x000000 - 0x2b9ad0 ]
> >>> ## Flattened Device Tree blob at 18000000
> >>>
> >>> Booting using the fdt blob at 0x18000000
> >>> Loading Ramdisk to 8ec7a000, end 8f75de1e ... OK
> >>> Using Device Tree in place at 18000000, end 18009fba
> >>>
> >>> Starting kernel ...
> >>>
> >>> Just for reference my entire environment
> >>>
> >>> CuBox-i U-Boot > printenv
> >>> baudrate=115200
> >>> board=mx6-cubox-i
> >>> bootargs=video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 cma=64
> >>> console=tty1
> >>> ahci_imx.hotplug=1 root=/dev/mmcblk0p2 rootfstype=ext4 ro rootwait
> >>> console=ttymxc00
> >>> bootcmd=run loadkernel ; run loadramdisk ; bootm ${loadaddr}
> >>> ${ramdiskaddr}
> >>> bootdelay=3
> >>> bootload=load $bootdev $bootunit:$bootpart 0x$loadaddr
> >>> $bootroot$loadfile;
> >>> if test $fdt_load = yes; then load $fdt_dev $fdt_unit:$fdt_part
> >>> 0x$fdt_addr $fdt_i
> >>> bootset=setenv bootenv 'run set$rootdev; setenv bootargs $root $video
> >>> $console $bootextra'; if load $bootdev $bootunit:$bootpart 0x$loadaddr
> >>> $envfile; then b bootstart=echo $bootfile $bootargs; echo $bootrun
> >>> $loadfile; $bootrun boottest=run testloader ; run testrun
> >>> console=console=ttymxc0,115200
> >>> cpu=6Q
> >>> ethact=FEC
> >>> ethaddr=d0:63:b4:00:32:5c
> >>> fdt_addr=0x18000000
> >>> fdt_high=ffffffff
> >>> filesize=ae3e5e
> >>> kernel=/uImage
> >>> loadaddr=0x10800000
> >>> loadkernel=ext4load mmc 0:2 0x10800000 /uImage
> >>> loadramdisk=ext4load mmc 0:2 0x11800000 /ramdisk
> >>> mmc=run reset; mmc rescan
> >>> mmcdev=0
> >>> mmcpart=2
> >>> new_kern=env del bootfile bootkern load_fdt
> >>> old_kern=setenv bootfile uImage; setenv bootkern bootm; setenv load_fdt
> >>> no
> >>> preboot=usb start
> >>> preset=bootdev=mmc; bootunit=0; bootpart=1; bootroot=/boot/;
> >>> envfile=${bootroot}uEnv.txt; bootfile=zImage; rootfs=ext4;
> >>> rootextra="rootfstype=$rootfs ro roo0
> >>> ramdisk=/ramdisk
> >>> ramdiskaddr=0x11800000
> >>> reset=env del bootdev bootunit bootpart bootroot envfile bootfile
> >>> bootkern
> >>> rootdev rootunit rootpart rootfs rootextra; env del fdt_load fdt_dev
> >>> fdt_unit fdtn
> >>> serialcon=setenv console console=ttymxc0,$baudrate; setenv stdout
> >>> serial;
> >>> setenv stderr serial; setenv stdin serial,usbkbd
> >>> setlabel=root="root=$rootlabel $rootextra"
> >>> setmmc=root="root=/dev/mmcblk${rootunit}p$rootpart $rootextra"
> >>> setusb=root="root=/dev/sda$rootpart $rootextra"
> >>> splashpos=m,m
> >>> stderr=serial,vga
> >>> stdin=serial,usbkbd
> >>> stdout=serial,vga
> >>> testloader=ext4load mmc 0:2 0x19000000 /boothelper.scr
> >>> testrun=source 0x19000000
> >>> usb=run reset; setenv bootdev usb; usb reset
> >>> videocon=setenv console; setenv stdout vga; setenv stderr vga; setenv
> >>> stdin
> >>> serial,usbkbd
> >>>
> >>> Environment size: 2718/8188 bytes
> >>> CuBox-i U-Boot >
> >>>
> >>>
> >>> "run bootcmd" does boot the system successfully, but it does not use a
> >>> zImage. it is using bootm.
>
> You have in your env :
> bootcmd=run loadkernel ; run loadramdisk ; bootm ${loadaddr} ${ramdiskaddr}
>
> >>> Does anybody have a good idea on what to look next?
>
> You must try to change bootcmd in bootscript, it will override the bootcmd
> without the need to overwrite it permanently. Use :
> setenv bootcmd '.........'
> and replace ... with the command you need
>
> Then calling *run bootcmd* or simply *boot* at the end of your bootscript
> will make the call
Hmm...that is confusing me.
I thought boot.scr is doing calling bootz....
If I have everything working I would have defined bootcmd as something which is
loading and source boot.scr.
Is that not how it works?
Can you printenv your bootcmd?
Thanks,
Rainer
--
Rainer Dorsch
http://bokomoko.de/
Reply to: