Adding Vishal, Amit, Bero and Chenglie. On 28 February 2012 15:01, Dave Martin <dave.mar...@linaro.org> wrote: > 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.
-- Zach Pfeffer Android Platform Team Lead, Linaro Platform Teams Linaro.org | Open source software for ARM SoCs Follow Linaro: http://www.facebook.com/pages/Linaro http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev