8.2.2 Booting Android targets

To boot Android after the initial boot, use the command described in this section.

Before you begin

Make sure that the initial boot was successful, see 8.2.1 Booting Android targets for the first time.

Procedure

  1. On the host, from the same directory as for the initial boot, enter the boot command. There are different commands for:
    • Booting the target to test the target OS and graphics APIs.
    • Booting the target to test the target graphics driver integration with the GPU model.

    For these different commands, see the following sections.

After the target has booted:

  • The host displays the default Android desktop for the target. You can operate Android using the mouse.
  • The host terminal shows details of the interaction between the Reconciler and the OpenGL ES Emulator.
  • By entering the logcat command on the target terminal, you can view more information from the target, such as:

    • The interaction between the Shim Layer and applications.
    • The interaction between the Shim Layer and the Reconciler.

What to do next

You can:

Example: Booting an Android target to verify the OS

In this example, a command line is used to boot an Android target with graphics hardware acceleration. The Generic Graphics Accelerator is used to support the hardware acceleration.

The following examples show different commands for different FVPs and host systems:

  • To boot a 32-bit Android target on a Linux host:

    ../../models/Linux64_GCC-5.4/FVP_VE_Cortex-A15x1 \
    boot/rtsm/linux-system-semi.axf \
    --plugin ../plugins/<path_of_Sidechannel.so> \
    -C DEBUG.Sidechannel.interceptor=<path_of_libReconciler.so> \
    -C motherboard.smsc_91c111.enabled=1 \
    -C motherboard.vis.disable_visualisation=0 \
    -C motherboard.hostbridge.userNetworking=1 \
    -C motherboard.hostbridge.userNetPorts=5212=6565 \
    -C motherboard.mmc.p_mmc_file=linaro-android-vexpress-lsk-14.10.img
  • To boot a 64-bit Android target on a Linux host:

    ../../models64/Build_AEMv8A-AEMv8A/Linux64_GCC-5.4/FVP_Base_AEMv8A-AEMv8A \
    --plugin ../../plugins/<path_of_Sidechannel.so> \
    -C DEBUG.Sidechannel.interceptor=<path_of_libReconciler.so> \
    -C pctl.startup=0.0.0.0 \
    -C bp.secure_memory=0 \
    -C cluster0.NUM_CORES=1 \
    -C cluster1.NUM_CORES=0 \
    -C cache_state_modelled=0 \
    -C bp.hostbridge.userNetworking=1 \
    -C bp.hostbridge.userNetPorts=5212=6565 \ 
    -C bp.smsc_91c111.enabled=1 \  
    -C bp.smsc_91c111.mac_address=auto \
    -C bp.pl011_uart0.untimed_fifos=1 \
    -C bp.secureflashloader.fname=bl1.bin \
    -C bp.flashloader0.fname=fvp_fip.bin \
    -C bp.flashloader1.fname=uefi-vars.fd \
    -C bp.virtioblockdevice.image_path=../linaro-android-fvp_v8-lcr-14.12_build.img
  • To boot a 32-bit Android target on a Windows host:

    ..\..\models\FVP_VE_Cortex-A17x1.exe \
    boot\rtsm\linux-system-semi.axf \
    --plugin ..\..\..\plugins\<path_of_Sidechannel.dll> \
    -C DEBUG.Sidechannel.interceptor=<path_of_Reconciler.dll> \
    -C motherboard.smsc_91c111.enabled=1 \
    -C motherboard.vis.disable_visualisation=0 \
    -C motherboard.hostbridge.userNetworking=1 \
    -C motherboard.hostbridge.userNetPorts=5212=6565 \
    -C motherboard.mmc.p_mmc_file=linaro-android-vexpress-lsk-14.10.img
    -C cluster.cpu0.semihosting-cmd_line="--kernel boot\uImage \
    --dtb boot\rtsm\rtsm_ve-ca15x1-t6xx.dtb \
    --initrd boot\uInitrd -- console=tty0 console=ttyAMA0,38400n8 \
    rootwait ro init=//init androidboot.console=ttyAMA0"
  • To boot a 64-bit Android target on a Windows host:

    ..\..\models\FVP_Base_Cortex-A57x1.exe \
    --plugin ..\..\..\..\plugins\<path_of_Sidechannel.dll> \
    -C DEBUG.Sidechannel.interceptor=<path_of_Reconciler.dll> \
    -C pctl.startup=0.0.0.0 \
    -C bp.secure_memory=0 \
    -C cache_state_modelled=0 \
    -C bp.hostbridge.userNetworking=1 \
    -C bp.hostbridge.userNetPorts=5212=6565 \
    -C bp.smsc_91c111.enabled=1 \
    -C bp.smsc_91c111.mac_address=auto \
    -C bp.pl011_uart0.untimed_fifos=1 \
    -C bp.secureflashloader.fname=bl1.bin \
    -C bp.flashloader0.fname=fvp_fip.bin \
    -C bp.ve_sysregs.mmbSiteDefault=0 \
    -C bp.virtioblockdevice.image_path=../linaro-android-6.0.0_r26-fvp_v8-lcr-15.11_build.img

In these examples:

  • The first line specifies the FVP.
  • The parameters used for the Generic Graphics Accelerator are:
    --plugin ../plugins/<path_of_Sidechannel.so>
    Instructs Fast Models to load the Sidechannel plugin, which communicates between the host and the target. The plugin name is case-sensitive.
    -C DEBUG.Sidechannel.interceptor=<path_of_libReconciler.so>
    Specifies the location of the Reconciler plugin to be loaded. It is named libReconciler.so on Linux and Reconciler.dll on Windows.
  • The parameter bp.hostbridge.userNetPorts or motherboard.hostbridge.userNetPorts maps a host port to a model port. This example sets up a networking connection from the host adb with port number 5212 to the Android target adbd with port number 6565.

Example: Booting an Android target to verify graphics drivers

In this example, a command line is used to boot an Android target with integration between its graphics driver and the GPU register model. The Generic Graphics Accelerator is enabled to test the graphics integration.

The following examples show the commands on a Linux and a Windows host respectively. They use the same FVP:

  • To boot a 64-bit Android target on a Linux host:

    ${PATH_ModelFile} \ 
    -C css.trustedBootROMloader.fname=${BINDIR}/tf-bl1.bin \ 
    -C css.scp.ROMloader.fname=${BINDIR}/scp-rom.bin \ 
    -C soc.pl011_uart0.out_file=${OUTPUT_DIR}/soc-uart0 \
    -C soc.pl011_uart1.out_file=${OUTPUT_DIR}/soc-uart1 \ 
    -C config_id=0 \ 
    -C displayController=${Controller} \ 
    -C board.hostbridge.interfaceName=subsys0 \
    -C board.hostbridge.userNetworking=1 \ 
    -C board.hostbridge.userNetPorts=6901=5555 \ 
    -C board.smsc_91c111.enabled=1 \ 
    -C board.smsc_91c111.mac_address=auto \ 
    -S -R \
    -C css.cache_state_modelled=0 \
    -C board.flashloader0.fname=${BINDIR}/fip-uboot.bin \
    --data css.cluster0.cpu0=${CPU0_dtb} \ 
    --data css.cluster0.cpu0=${CPU0_Initrd} \ 
    --data css.cluster0.cpu0=${CPU0_uImage} \
    -C board.virtioblockdevice.image_path=${BIN_Image} \
    --plugin ${PATH_SideChannel}/Sidechannel.so \
    -C DEBUG.Sidechannel.interceptor=${PATH_Reconciler}/libReconciler.so 
  • To boot a 64-bit Android target on a Windows host:

    ${PATH_ModelFile}^ 
    -C css.trustedBootROMloader.fname=${BINDIR}\tf-bl1.bin^ 
    -C css.scp.ROMloader.fname=${BINDIR}\scp-rom.bin^ 
    -C soc.pl011_uart0.out_file=${OUTPUT_DIR}\soc-uart0^
    -C soc.pl011_uart1.out_file=${OUTPUT_DIR}\soc-uart1^ 
    -C config_id=0^ 
    -C displayController=${Controller}^ 
    -C board.hostbridge.interfaceName=subsys0^
    -C board.hostbridge.userNetworking=1^ 
    -C board.hostbridge.userNetPorts=6901=5555^ 
    -C board.smsc_91c111.enabled=1^ 
    -C board.smsc_91c111.mac_address=auto^ 
    -S -R^
    -C css.cache_state_modelled=0^
    -C board.flashloader0.fname=${BINDIR}\fip-uboot.bin^
    --data css.cluster0.cpu0=${CPU0_dtb}^ 
    --data css.cluster0.cpu0=${CPU0_Initrd}^ 
    --data css.cluster0.cpu0=${CPU0_uImage}^
    -C board.virtioblockdevice.image_path=${BIN_Image}^
    --plugin ${PATH_SideChannel}\Sidechannel.so^
    -C DEBUG.Sidechannel.interceptor=${PATH_Reconciler}\libReconciler.so 

Note:

  • The parameter board.hostbridge.userNetPorts maps a host port to a model port. This example sets up a networking connection from the host adb with port number 5212 to the Android target adbd with port number 6565.
  • Command options might vary on different platform models. To see the supported options, run the model with the --list-params option.
Non-ConfidentialPDF file icon PDF version100965_1180_00_en
Copyright © 2014–2019 Arm Limited or its affiliates. All rights reserved.