Hi all, I've added some detailed info on the wiki about how to go about building bootable images for the big.LITTLE components, here:
https://wiki.linaro.org/Internal/Projects/Big.Little.Switcher/ARMFastModelsHowto For the benefit of anyone who can't see that page, I've also pasted it here -- if anyone knows a better place to post this stuff, please let me know! Note that although the instructions give details of how to build a filesystem image, there is essentially nothing b.L or model-specific there -- it just serves as background for explaining how to work around some issues which you may encounter. These images are not supposed to present a fully working big.LITTLE system -- they are there to help people understand how booting works, where the sources are and how to work with the model. Note also that the bootwrapper will change soon (when I get there) to support loading of the kernel, initramfs from the host filesystem using semihosting, just like the kvm bootwrapper, but this isn't implemented for now. Cheers ---Dave == Filesystem == We need to create an SD card image with a filesystem on it, with the rootfs partition matching the bootargs set previously. The following example generates a suitable image using developer. The hardware pack is largely irrelevant because we're not getting the kernel, modules, bootloader or command-line from there -- but it keeps l-m-c happy. {{{ $ wget http://releases.linaro.org/12.02/ubuntu/oneiric-images/developer/linaro-o-developer-tar-20120221-0.tar.gz $ wget http://releases.linaro.org/12.02/ubuntu/oneiric-images/developer/hwpack_linaro-lt-vexpress-a9_20120221-1_armel_supported.tar.gz }}} Note that the ARM fast model's MMC interface emulation is currently limited to 2G. Make the image a bit smaller than that to be on the safe side: {{{ $ sudo linaro-media-create --dev vexpress --image_file mmc.bin --image_size 2000M --hwpack hwpack_linaro-lt-vexpress-a9_20120221-1_armel_suupported.tar.gz --binary linaro-o-developer-tar-20120221-0.tar.gz }}} After generating the filesystem, you probably want to customize it: * Disable address layout randomization (mitigates a memory consumption issue with the model, but not so important on host machines with >4GB of RAM): {{{ echo sys.kernel.randomize_va_space = 0 >>etc/sysctl.conf }}} * Disable DHCP for the network (otherwise boot will stall): {{{ sed -i '/auto.*eth0/d; s/^\(iface.*eth0.*\)dhcp/\1manual/' etc/network/interfaces }}} * Edit fstab to put the real device name into /etc/fstab in place of UUID=<uuid>. This may not be necessary (mountall was getting confused, but that may have been caused by not having an initramfs). Finally, extract the initramfs image (whatever /initrd.img in the filesystem image points to). == Kernel, switcher and bootwrapper == Clone the big.LITTLE switcher: {{{ $ git clone --branch gnu-build git://git.linaro.org/people/dmart/arm-virt-bl.git }}} Clone the kernel to run on the model. (Eventually we shouldn't need a special tree for this. There are a few model-specific tweaks in this tree, but nothing big.LITTLE-specific yet.) {{{ $ git clone --branch arm/vexpressdt-rtsm git://git.linaro.org/people/dmart/linux-2.6-arm.git }}} Now build the kernel: {{{ $ cd linux-2.6-arm/ $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_rtsm_defconfig $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage dtbs }}} The bootwrapper doesn't support device tree yet, so for now append a suitable device tree blob to the zImage. This should match the model you intend to run on: {{{ $ cat arch/arm/boot/zImage arch/arm/boot/vexprress-v2p-ca15x4-rtsm.dtb >../zBlob }}} Now, build the bootwrapper using the kernel you just built: {{{ $ cd ../arm-virt-bl/bootwrapper }}} Configure some things: In Makefile, add the following argument to BOOTARGS: {{{ root=/dev/mmcblk0p2 }}} Due to current bugginess introduced by the ARM->GNU toolchain migration, the switcher is not currently stable. For now, we turn off autonomous asynchronous switching so that we can see the system booting: In big-little/Makefile, add change the line {{{ ASYNC ?= TRUE }}} to {{{ ASYNC ?= FALSE }}} Plug in the kernel and initramfs images from the previous steps: {{{ $ : >payload/fsimg $ cp ../../zBlob payload/kernel $ cp initrd.img payload/fsimg }}} ... and build: {{{ $ make [...] LD img.axf }}} img.axf is the boot payload which is needed to start the model. It contains the big.LITTLE switcher code and the kernel, along with a minimal bootloader. == Running == OK, so now we have: * A boot image containing the switcher and kernel: img.axf * A filesystem MMC card image: mmc.bin * A model binary Sample payload images can be found in http://people.linaro.org/~dmart/bl-images/model-images-20120228.tar.bz2 Run like this: {{{ $ ./RTSM_VE_Cortex-A15x4-A7x4 -C motherboard.mmc.p_mmc_file=mmc.bin -a coretile.cluster0.*=img.axf }}} This should be enough to boot to a prompt on the simulated UART. Beware though -- it can take up to 10 minutes or so to get there, depending on your machine. _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev