[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: flash-kernel and dtb



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.

Does anybody have a good idea on what to look next?

Thanks,
Rainer


-- 
Rainer Dorsch
http://bokomoko.de/


Reply to: