|
|
Line 171: |
Line 171: |
| $ cd source/ | | $ cd source/ |
| </pre> | | </pre> |
|
| |
| == <span style="line-height: 1.5em;">Download Variscite's u-boot and Linux kernel </span> ==
| |
|
| |
| $ git clone [https://github.com/varigit/linux-2.6-imx.git https://github.com/varigit/linux-2.6-imx.git] kernel_imx $ cd kernel_imx $ git checkout -b l5.0.0_1.0.0-ga-var01 remotes/origin/l5.0.0_1.0.0-ga-var01
| |
|
| |
| <span style="line-height: 1.5em;">clone the U-Boot git repository from Varicite's open source git:</span>
| |
| <pre><span style="line-height: 1.5em;">$ cd ~/var_ll_500_100/ll_500_100_build/bootable/bootloader
| |
| $ git clone https://github.com/varigit/uboot-imx.git uboot-imx
| |
| $ cd uboot-imx
| |
| $ git checkout -b l5.0.0_1.0.0-ga-var01 remotes/origin/l5.0.0_1.0.0-ga-var01
| |
| </span></pre>
| |
|
| |
| == <span style="line-height: 1.5em;"><span style="line-height: 1.5em;">Apply all the i.MX Android patches with Freescale i.MX6 support</span></span> ==
| |
|
| |
| <span style="line-height: 1.5em;">The patch script (and_patch.sh) requires some basic utilities like awk/sed.Apply all Android patches by using the following steps: </span>
| |
| <pre><span style="line-height: 1.5em;">$ cd ~/var_ll_500_100/ll_500_100_build
| |
| $ source ../android_L5.0.0_1.0.0-ga_core_source/code/l5.0.0_1.0.0-ga/and_patch.sh
| |
| $ help
| |
| You should see that the "c_patch" function is available.
| |
| $ c_patch ../android_L5.0.0_1.0.0-ga_core_source/code/l5.0.0_1.0.0-ga imx_l5.0.0_1.0.0-ga
| |
| If everything is OK, "c_patch" generates the following output to indicate the successful patch:
| |
| **************************************************************
| |
| Success: Now you can build the Android code for FSL i.MX platform
| |
| **************************************************************
| |
| </span></pre>
| |
| <span style="line-height: 1.5em;">{{note| NOTE:
| |
| The patch script (and_patch.sh) requires some basic utilities like awk/sed. If they are not available on the computer running Linux OS, install them first.|info}}</span>
| |
|
| |
| == <span style="line-height: 1.5em;"><span style="line-height: 1.5em;">Install Freescale i.MX6 omxplayer support</span></span> ==
| |
|
| |
| <span style="line-height: 1.5em;">The patch script (and_patch.sh) requires some basic utilities like awk/sed.Apply all Android patches by using the following steps: </span>
| |
| <pre><span style="line-height: 1.5em;">$ cd ~/var_ll_500_100/ll_500_100_build
| |
| $ cp ~/Downloads/android_L5.0.0_1.0.0-ga_omxplayer_source.tar.gz ./
| |
| $ tar xzvf android_L5.0.0_1.0.0-ga_omxplayer_source.tar.gz
| |
| $ rm android_L5.0.0_1.0.0-ga_omxplayer_source.tar.gz
| |
| </span></pre>
| |
| == <span style="line-height: 1.5em;">Apply VAR-SOM-MX6 patches </span> ==
| |
|
| |
| <span style="line-height: 1.5em;">After you setup your build machine,unpack Variscite's release Package:</span>
| |
| <pre><span style="line-height: 1.5em;">$ cd ~/var_ll_500_100
| |
| $ tar xvf ~/Downloads/var_L5.0.0_1.0.0_r3.tar.bz2
| |
| $ variscite/install
| |
| </span></pre>
| |
| == <span style="line-height: 1.5em;">Install Freescale i.MX6 additional codecs support </span> ==
| |
| <pre><span style="line-height: 1.5em;">$ cd ~/var_ll_500_100/ll_500_100_build
| |
| $ tar xvf ~/Downloads/fsl_aacp_dec_L5.0.0_1.0.0-ga.tar.gz
| |
| $ cp -r fsl_aacp_dec/ external
| |
| $ rm -rf fsl_aacp_dec/
| |
| </span></pre>
| |
|
| |
| = <span style="line-height: 1.5em;">Build Android Images</span> = | | = <span style="line-height: 1.5em;">Build Android Images</span> = |
|
| |
|
Line 230: |
Line 180: |
| $ lunch var_mx6-eng | | $ lunch var_mx6-eng |
| </span></pre> | | </span></pre> |
| <span style="line-height: 1.5em;">{{note| NOTE:<br/>var_mx6-user creates a production version of the Android Lollipop.
| |
| var_mx6-eng creates an engineering version of the Android Lollipop. Development mode enable and development tools are available on target.
| |
| |info}}</span>
| |
|
| |
| == <span style="line-height: 1.5em;">Switch from eMMC build to SD card build and vice versa</span> ==
| |
|
| |
| <span style="line-height: 1.5em;">When you switch your target MMC device you need to remove the fstab file. This will guarantee that the make system will copy the right one into target.</span>
| |
| <pre><span style="line-height: 1.5em;">$ rm out/target/product/var_mx6/root/fstab.freescale
| |
| </span></pre>
| |
| == <span style="line-height: 1.5em;">Build Android for SD card</span> ==
| |
| <pre><span style="line-height: 1.5em;">$ make -j4 BUILD_TARGET_DEVICE=sd 2>&1 | tee build1-1.log</span></pre>
| |
| == <span style="line-height: 1.5em;">Build Android for eMMC</span> ==
| |
| <pre><span style="line-height: 1.5em;">$ make -j4 BUILD_TARGET_DEVICE=emmc 2>&1 | tee build1-1.log</span></pre>
| |
| <span style="line-height: 1.5em;">{{note| NOTE: Set -j4 to a suitable number. A good practice is to set it to number of threads of you build machine minus 1.
| |
| |info}}</span>
| |
|
| |
| == <span style="line-height: 1.5em;">Flash Android SD card</span> ==
| |
|
| |
| <span style="line-height: 1.5em;">{{note| NOTE: A newer version of var-mksdcard.sh is available on the FTP site.
| |
| |info}} Format only SD card:</span>
| |
| <pre><span style="line-height: 1.5em;">$ sudo ./var-mksdcard.sh /dev/sdX;sync</span></pre>
| |
| <span style="line-height: 1.5em;">Flash only Android onto SD card:</span>
| |
| <pre><span style="line-height: 1.5em;">$ sudo ./var-mksdcard.sh -np -nf -f som-mx6q-c /dev/sdX;sync</span></pre>
| |
| <span style="line-height: 1.5em;">Format and flash Android onto SD card (SD card was formated before):</span>
| |
| <pre><span style="line-height: 1.5em;">$ sudo ./var-mksdcard.sh -f som-mx6q-c /dev/sdX;sync</span></pre>
| |
| *<span style="line-height: 1.5em;">Replace /dev/sdX with your true device, You can identify it with dmesg.</span>
| |
| *<span style="line-height: 1.5em;">Replace som-mx6q-c with you actual configuration. See description in section [http://variwiki.com/index.php?title=VAR-SOM-MX6_Android_LL1_R01#Images_created_by_the_Android_build_for_Variscite_MX6_system Images created by the Android build for Variscite MX6 system]</span>
| |
|
| |
| == <span style="line-height: 1.5em;">Flash Android onto eMMC</span> ==
| |
|
| |
| <span style="line-height: 1.5em;">Flashing Android is a complex task that require multiple commands. Variscite provides nand-recovery SDCARD that does that. It format the eMMC flash the boot device and flash Android. Please use the nand-recovery SDCARD copy your Android product into /media/rootfs/opt/images/Android/Emmc. Boot from SDCARD and use the GUI to flash Android or type android-emmc.sh on the command line.</span>
| |
|
| |
| == <span style="line-height: 1.5em;">Build for NAND</span> ==
| |
|
| |
| <span style="line-height: 1.5em;">{{note| NOTE: Due to android file system size This version only support build to SD card and eMMC.
| |
| |info}}</span>
| |
|
| |
| == <span style="line-height: 1.5em;">Images created by the Android build for Variscite MX6 system</span> ==
| |
|
| |
| <span style="line-height: 1.5em;">If you do ls out/target/product/var_mx6/<br/> <br/></span>
| |
| <br/>
| |
| {| class="wikitable"
| |
| |-
| |
| ! scope="col" | <span style="line-height: 1.5em;">Image<br/> <br/></span>
| |
| ! scope="col" | <span style="line-height: 1.5em;">Description<br/><br/> <br/><br/></span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">system.img</span>
| |
| | <span style="line-height: 1.5em;">Android system image file.<br/><br/><br/>SOM agnostics. <br/><br/><br/></span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">u-boot-var-imx6-nand.img</span>
| |
| | <span style="line-height: 1.5em;">u-boot for nand used in eMMC boot.<br/><br/><br/><br/>SOM agnostics. <br/><br/><br/><br/></span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">u-boot-var-imx6-sd.img</span>
| |
| | <span style="line-height: 1.5em;">u-boot for SD card boot.<br/><br/><br/><br/><br/>SOM agnostics. <br/><br/><br/><br/><br/></span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">boot-<name>-<touch>.img<br/>recovery-<name>-<touch>.img</span>
| |
| |
| |
| |-
| |
| | <span style="line-height: 1.5em;"><name> is one of:</span>
| |
| | <span style="line-height: 1.5em;">som-mx6q - Support VAR-SOM-MX6Q and VAR-SOM-MX6D<br/>som-mx6dl - Support VAR-SOM-MX6DL and VAR-SOM-SOLO<br/>som-solo - Support SOM-SOLO and SOM-DUAL</span>
| |
| |-
| |
| | <span style="line-height: 1.5em;"><touch> - is "r" or "c"</span>
| |
| | <span style="line-height: 1.5em;">r = resistive touch display<br/>c = capacitive touch dispaly</span>
| |
| |-
| |
| ! scope="col" | <span style="line-height: 1.5em;">Image Name<br/><br/><br/><br/><br/><br/> <br/><br/><br/><br/><br/><br/></span>
| |
| ! scope="col" | <span style="line-height: 1.5em;">SOM type<br/><br/><br/><br/><br/><br/><br/> <br/><br/><br/><br/><br/><br/><br/></span>
| |
| ! scope="col" | <span style="line-height: 1.5em;">Carrier Board type<br/><br/><br/><br/><br/><br/><br/><br/> <br/><br/><br/><br/><br/><br/><br/><br/></span>
| |
| ! scope="col" | <span style="line-height: 1.5em;">LCD Type<br/><br/><br/><br/><br/><br/><br/><br/><br/> <br/><br/><br/><br/><br/><br/><br/><br/><br/></span>
| |
| ! scope="col" | <span style="line-height: 1.5em;">Evaluation Kit name<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">boot-som-mx6q-c.img, recovery-som-mx6q-c.img</span>
| |
| | <span style="line-height: 1.5em;">VAR-SOM-MX6_V2 (Quad / Dual)</span>
| |
| | <span style="line-height: 1.5em;">VAR-MX6CustomBoard</span>
| |
| | <span style="line-height: 1.5em;">Capacitive touch</span>
| |
| | <span style="line-height: 1.5em;">VAR-DVK-MX6_V2-PRO<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>VAR-STK-MX6_V2 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">boot-som-mx6q-r.img, recovery-som-mx6q-r.img</span>
| |
| | <span style="line-height: 1.5em;">VAR-SOM-MX6_V2 (Quad / Dual)</span>
| |
| | <span style="line-height: 1.5em;">VAR-MX6CustomBoard</span>
| |
| | <span style="line-height: 1.5em;">Resistive touch</span>
| |
| | <span style="line-height: 1.5em;">VAR-DVK-MX6_V2<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>VAR-STK-MX6_V2 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">boot-som-mx6q-vsc.img, recovery-som-mx6q-vsc.img</span>
| |
| | <span style="line-height: 1.5em;">VAR-SOM-MX6_V2 (Quad / Dual)</span>
| |
| | <span style="line-height: 1.5em;">VAR-SOLOCustomBoard</span>
| |
| | <span style="line-height: 1.5em;">Capacitive LVDS touch</span>
| |
| | <span style="line-height: 1.5em;">N/A</span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">boot-som-mx6dl-c.img, recovery-som-mx6dl-c.img</span>
| |
| | <span style="line-height: 1.5em;">VAR-SOM-MX6_V2 (DualLite/ Solo)</span>
| |
| | <span style="line-height: 1.5em;">VAR-MX6CustomBoard</span>
| |
| | <span style="line-height: 1.5em;">Capacitive touch</span>
| |
| | <span style="line-height: 1.5em;">N/A</span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">boot-som-mx6dl-r.img, recovery-som-mx6dl-r.img</span>
| |
| | <span style="line-height: 1.5em;">VAR-SOM-MX6_V2 (DualLite/ Solo)</span>
| |
| | <span style="line-height: 1.5em;">VAR-MX6CustomBoard</span>
| |
| | <span style="line-height: 1.5em;">Resistive touch</span>
| |
| | <span style="line-height: 1.5em;">N/A</span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">boot-som-solo-vsc.img, recovery-som-solo-vsc.img</span>
| |
| | <span style="line-height: 1.5em;">VAR-SOM-SOLO / VAR-SOM-DUAL</span>
| |
| | <span style="line-height: 1.5em;">VAR-SOLOCustomBoard</span>
| |
| | <span style="line-height: 1.5em;">Capacitive LVDS touch</span>
| |
| | <span style="line-height: 1.5em;">VAR-DVK-SOLO/DUAL<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>VAR-STK-SOLO/DUAL <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">boot-som-solo-c.img, recovery-som-solo-c.img</span>
| |
| | <span style="line-height: 1.5em;">VAR-SOM-SOLO / VAR-SOM-DUAL</span>
| |
| | <span style="line-height: 1.5em;">VAR-MX6CustomBoard</span>
| |
| | <span style="line-height: 1.5em;">Capacitive touch</span>
| |
| | <span style="line-height: 1.5em;">N/A</span>
| |
| |-
| |
| | <span style="line-height: 1.5em;">boot-imx6q-var-dart.img</span>
| |
| | <span style="line-height: 1.5em;">DART-MX6</span>
| |
| | <span style="line-height: 1.5em;">VAR-DT6CustomBoard</span>
| |
| | <span style="line-height: 1.5em;">Capacitive touch</span>
| |
| | <span style="line-height: 1.5em;">VAR-STK-DT6<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>VAR-DVK-DT6 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></span>
| |
| |}
| |
| <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
| |
|
| |
| = <span style="line-height: 1.5em;">Boot</span> =
| |
|
| |
| <span style="line-height: 1.5em;">The Android can be booted from MMC/SD device on sdcard and MMC/SD device on eMMC. nand-recovery version 37 support the nand and eMMC flash.</span>
| |
|
| |
| == <span style="line-height: 1.5em;">Boot From MMC/SD Card<br/> <br/></span> ==
| |
| <br/>
| |
| <span style="line-height: 1.5em;">This section will guide you through the process of installing and boot VAR-SOM-MX6 from SD/MMC device.</span>
| |
|
| |
| <span style="line-height: 1.5em;">Create bootable SD card Variscite provides a script that can be used to partition an SD card and install the required images on it.</span>
| |
|
| |
| *<span style="line-height: 1.5em;">Insert a micro SD into your Linux PC</span>
| |
| *<span style="line-height: 1.5em;">Determine the block device name of your micro SD (for instance /dev/sdc). Use "dmesg" after you inserted the SD card.</span>
| |
| *<span style="line-height: 1.5em;">Make sure all partitions of your micro SD are unmounted. Use "sudo umount /media/<uname>" to unmount it.</span>
| |
| *<span style="line-height: 1.5em;">cd ~/var_ll_500_100/ll_500_100_build</span>
| |
| *<span style="line-height: 1.5em;">sudo ./var-mksdcard.sh /dev/sdX (replace /dev/sdX with your SD card block device)</span>
| |
|
| |
| <span style="line-height: 1.5em;">Use the created SD card and:</span>
| |
|
| |
| *<span style="line-height: 1.5em;">Insert the SD card you just created into the MMC/SD slot on the custom board.</span>
| |
| *<span style="line-height: 1.5em;">Press and hold the boot-select button and power-on the SOM.</span>
| |
|
| |
| == <span style="line-height: 1.5em;">Boot From eMMC</span> ==
| |
|
| |
| <span style="line-height: 1.5em;">Flashing the U-Boot, boot image and Android root file system into NAND/eMMC can be done from target Linux shell. The images can be found at Android build machine under: "'''out/target/product/var_mx6'''". Boot the target device using Variscite's pre-build NAND recovery SD image version 37or greater, then follow the instructions below:</span>
| |
| <pre><span style="line-height: 1.5em;">$ android_emmc.sh
| |
| </span></pre>
| |
| = <span style="line-height: 1.5em;">Manual operations</span> =
| |
|
| |
| == <span style="line-height: 1.5em;">Build boot.img</span> ==
| |
|
| |
| <span style="line-height: 1.5em;">We use boot.img and booti as default commands to boot rather than the uramdisk and uImage.<br/>You can use this command to generate boot.img under android environment: <br/></span>
| |
| <br/><pre><span style="line-height: 1.5em;">$ cd ~/var_ll_500_100/ll_500_100_build
| |
| $ source build/envsetup.sh
| |
| $ lunch var_mx6-user
| |
| $ make bootimage
| |
| </span></pre>
| |
| == <span style="line-height: 1.5em;">Toolchain setup for manual build kernel and u-boot</span> ==
| |
|
| |
| <span style="line-height: 1.5em;">Setup the toolchain path to point to arm-eabi- tools in prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin</span>
| |
| <pre><span style="line-height: 1.5em;">$ export ARCH=arm
| |
| $ export PATH=export PATH=~/var_ll_500_100/ll_500_100_build/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH
| |
| $ export CROSS_COMPILE=arm-eabi-
| |
| </span></pre>
| |
| == <span style="line-height: 1.5em;">Manual build Bootloader </span> ==
| |
|
| |
| <span style="line-height: 1.5em;">Change directory to u-boot</span>
| |
| <pre><span style="line-height: 1.5em;">$ cd ~/var_ll_500_100/ll_500_100_build/bootable/bootloader/uboot-imx </span></pre>
| |
| <span style="line-height: 1.5em;">Execute following commands:</span>
| |
| <pre><span style="line-height: 1.5em;">$ make ARCH=arm distclean
| |
| $ make mx6_var_som_sd_android_config # VAR-SOM-MXQ/D/DL/S, boot from MMC
| |
| $ make mx6_var_som_nand_android_config # VAR-SOM-MXQ/D/DL/S, boot from NAND
| |
| $ make -j4 </span></pre>
| |
| <span style="line-height: 1.5em;"><br/>This command will generate the u-boot Image 'u-boot.img' <br/></span>
| |
| <br/>
| |
| == <span style="line-height: 1.5em;">Manual build Android Linux Kernel and modules</span> ==
| |
|
| |
| <span style="line-height: 1.5em;">Change directory to kernel</span>
| |
| <pre><span style="line-height: 1.5em;">$ cd ~/var_ll_500_100/ll_500_100_build/kernel_imx </span></pre>
| |
| <span style="line-height: 1.5em;">Execute following commands</span>
| |
| <pre><span style="line-height: 1.5em;">$ make distclean
| |
| $ make imx_v7_var_android_defconfig
| |
| $ make -j4 uImage
| |
| $ make -j4 modules
| |
| </span></pre>
| |
| <span style="line-height: 1.5em;">This will generate uImage(kernel image) in kernel/arch/arm/boot folder</span>
| |
|
| |
| = <span style="line-height: 1.5em;">Flashing Android with Fastboot</span> =
| |
|
| |
| #<span style="line-height: 1.5em;">Connect a USB OTG cable from the target board OTG port to a your host machine USB HOST port.</span>
| |
| #<span style="line-height: 1.5em;">Power up the board and hit return to stop the boot</span>
| |
| #<span style="line-height: 1.5em;">type fastboot in the u-boot prompt.</span>
| |
|
| |
| <span style="line-height: 1.5em;">On the target:</span>
| |
| <pre><span style="line-height: 1.5em;">$ sudo `which fastboot` flash boot out/target/product/var_mx6/boot-som-mx6q-c.img
| |
| $ sudo `which fastboot` flash recovery out/target/product/var_mx6/recovery-som-mx6q-c.img
| |
| $ sudo `which fastboot` flash system out/target/product/var_mx6/system.img
| |
| $ sudo `which fastboot` reboot
| |
| </span></pre>
| |
| <span style="line-height: 1.5em;">boot-som-mx6q-c.img and recovery-som-mx6q-c.img is for VAR-SOM-MX6 with capacitive display. You should pick and choose the right file for you see the table above. The emmc-recovery utility select the right combination automatically by scanning the system it is running on. Detail information [http://variwiki.com/index.php?title=VAR-SOM-MX6_Android_Unit_Testing_KK_443_200#FASTBOOT Fastboot]</span>
| |
|
| |
| = <span style="line-height: 1.5em;">Display Options</span> =
| |
|
| |
| <span style="line-height: 1.5em;">Selecting the display type is done by setting the bootcmd with the required display type.</span>
| |
|
| |
| <span style="line-height: 1.5em;">The bootcmd is embedded into [[VAR-SOM-MX6 Android GS#Build boot.img#Build boot.img|boot.img]]. To set the bootargs edit the file ''''~/var_ll_500_100/ll_500_100_build/device/variscite/var_som_mx6/BoardConfig.mk'''' as follows:</span>
| |
|
| |
| *<span style="line-height: 1.5em;">HDMI</span>
| |
| <pre><span style="line-height: 1.5em;">BOARD_KERNEL_CMDLINE := console=ttymxc0,115200 init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=400M androidboot.console=ttymxc0 consoleblank=0 androidboot.hardware=freescale cma=384M androidboot.selinux=disabled androidboot.dm_verity=disabled
| |
| </span></pre><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
| |