Hi Tixy,

On Fri, Sep 7, 2012 at 5:42 PM, Jon Medhurst (Tixy) <tixy@linaro.org> wrote:
On Thu, 2012-09-06 at 22:34 +0800, Lei Wen wrote:
> I have several questions related how to run the mp over fastmodel.
> For the kernel config file, I see there are many for VE:
> android_vexpress_defconfig
> ubuntu_vexpress_defconfig
> vexpress_defconfig
> vexpress_tc2_defconfig
> Which one is suitable for the kernel run over fastmodel?
>
> Also the dts and bootwrapper, should I use below link?
> git://linux-arm.org/arm-dts.git
> git://git.linaro.org/arm/models/boot-wrapper.git or git://
> linux-arm.org/boot-wrapper.git


Linaro's standard vexpress kernel will work on Fast Models.

The kernel source is in the linux-linaro branch of
git://git.linaro.org/kernel/linux-linaro-tracking.git

The config used is generated by the command:

        ARCH=arm scripts/kconfig/merge_config.sh \
          linaro/configs/linaro-base.conf \
          linaro/configs/ubuntu-minimal.conf \
          linaro/configs/vexpress.conf

If you want to run a full Ubuntu desktop system its probably best to
replace 'ubuntu-minimal.conf' with 'ubuntu.conf'. And for Android
kernels use 'android.conf' instead.

This kernel tree also contains device-trees for the Fast Models as
arch/arm/boot/dts/rtsm_ve*

The boot-wrapper we are trying to standardise on is at
git://git.linaro.org/arm/models/boot-wrapper.git

Currently this requires a patch (attached) to work on big.LITTLE models.
Note, this patch will break non bit.LITTLE models but people are working
on a way of a single boot-wrapper to work on all models.

This boot-wrapper supports semi-hosting so it can be used as a
stand-alone bootloader and does not need to be merged with the kernel
binary. To build it:

        make CROSS_COMPILE=arm-linux-gnueabi- linux-system-semi.axf

To run the big.LITTLE models you can then use a command like:

        RTSM_VE_Cortex-A15x4-A7x4 \
          -a coretile.cluster0.*=/path/linux-system-semi.axf \
          -a coretile.cluster1.*=/path/linux-system-semi.axf \
          -C coretile.dualclustersystemconfigurationblock.CFG_ACTIVECLUSTER=0x3 \
          -C motherboard.mmc.p_mmc_file=/path/mmc.bin \
          -C coretile.cluster0.cpu0.semihosting-cmd_line="--kernel /path/uImage --initrd /path/uInitrd --dtb /path/rtsm_ve-v2p-ca15x4-ca7x4 -- console=ttyAMA0,115200n8 root=/dev/mmcblk0p2 rootwait ro debug"

replacing names and paths as appropriate; and making sure the dtb file
you use matches the model you are running. I.e. it has the same type and
number of CPUS.

For running non bit.LITTLE models use something like:

        RTSM_VE_Cortex-A15x4 \
          /path/linux-system-semi.axf \
          -C motherboard.mmc.p_mmc_file=/path/mmc.bin \
          -C cluster.cpu0.semihosting-cmd_line="--kernel /path/uImage --initrd /path/uInitrd --dtb /path/rtsm_ve-cortex_a15x4 -- console=ttyAMA0,115200n8 root=/dev/mmcblk0p2 rootwait ro debug"

The MMC image to use for the root filesystem can be any Linaro vexpress
image created by linaro-media-create, or linaro-android-media-create,
but it needs to be limited to <2GB, e.g. for Android

        linaro-android-media-create \
          --image-file mmc.bin --image-size 2000M --dev vexpress \
          --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2

or an Ubuntu image

        linaro-media-create \
          --image-file mmc.bin --image-size 2000M --dev vexpress \
          --binary linaro-precise-XXXX.tar.gz \
          --hwpack hwpack_linaro-vexpress_XXXX.tar.gz

To get a uInitrd to pass to the models then you can find this in
Android's boot.tar.bz2. However, for Ubuntu images I'm not sure of a
good way, only to create a second image on an SD card and then get a
uInitrd from the boot partition of that.


Thanks a lot for the detailed setup doc.

Thanks,
Lei