Freescale IMX6 Android (1): 使用

环境准备与编译

个人使用的是Ubuntu 12.04 X64,针对环境的配置,百度即可。板子使用的是TQIMX6Q。

lunch目标

但是,编译的时候使用的是TQ提供的脚本build_sh,根据这个脚本,可以看到lunch的目标是sabresd_6dq:

$ echo $TARGET_PRODUCT 
sabresd_6dq

即,TQIMX6的Android lunch目标其实使用的是sabred板子的目标,并没有自己添加lunch target,编译完成后,也没有userdata.img:

10:50 hexiongjun:TQIMX6_android-4.3 $ echo $OUT
/home/hexiongjun/iMX6Q/TQIMX6_android-4.3/out/target/product/sabresd_6dq
10:51 hexiongjun:TQIMX6_android-4.3 $ ls -l $OUT/*.img
-rw-r--r-- 1 hexiongjun hexiongjun   5314560 Dec  4 18:37 /home/hexiongjun/iMX6Q/TQIMX6_android-4.3/out/target/product/sabresd_6dq/boot.img
-rw-rw-r-- 1 hexiongjun hexiongjun    242287 Dec  4 18:37 /home/hexiongjun/iMX6Q/TQIMX6_android-4.3/out/target/product/sabresd_6dq/ramdisk.img
-rw-rw-r-- 1 hexiongjun hexiongjun    794534 Dec  4 18:37 /home/hexiongjun/iMX6Q/TQIMX6_android-4.3/out/target/product/sabresd_6dq/ramdisk-recovery.img
-rw-r--r-- 1 hexiongjun hexiongjun   5865472 Dec  4 18:37 /home/hexiongjun/iMX6Q/TQIMX6_android-4.3/out/target/product/sabresd_6dq/recovery.img
-rw-r--r-- 1 hexiongjun hexiongjun 293601280 Dec  4 18:37 /home/hexiongjun/iMX6Q/TQIMX6_android-4.3/out/target/product/sabresd_6dq/system.img
10:53 hexiongjun:TQIMX6_android-4.3 $ 

同时也编译了uboot与uImage。

编译可能出现的问题

Android编译使用的是自带的ToolChain,自然不需要再自己配置。但是Host PC中的GCC也需要注意版本,否则会出现问题:

host C: libcrypto_static <= external/openssl/crypto/bio/b_sock.c
external/openssl/crypto/bio/b_print.c:842:2: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libcrypto_static_intermediates/crypto/bio/b_print.o] Error 1

看log输出,还以为是Host GCC的Bug,换了多个版本的GCC之后,问题依旧,后来发现make时指定submake过多,将make -j8改成了make libcrypto就好了,比较怪异。

HDMI硬件配置

因为没有TFT屏幕,所以使用了以前用过的改装过的笔记本屏幕,参考我以前的博文:废物利用: 动手将笔记本的显示器改成多功能显示器 可用于电视盒子以及嵌入式开发

HDMI显示输出的配置

因为我们使用的是HDMI显示输出,因此需要配置参数,这个参数通过uboot的bootargs env传递到内核中去,使用的笔记本屏幕分配率是1366X768,找了一个接近的1280X720,显示部分的参数如下:

video=mxcfb0:dev=hdmi,1366x768MM@60,if=RGB24,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=48M

按需更改。

Android的NFS启动

配置好NFS Server与TFTP Server,可以参考我以前的博文:Ubuntu下nfs server与tftp server的搭建

Android的NFS可以先使用TQ提供的文件系统。如果需要使用自己编译出来的,请看下一篇博文。

然后就是启动板子,在uboot中配置环境变量与启动:

set serverip 192.168.2.100
set ipaddr 192.168.2.111
set bootargs "console=ttySAC0,115200n8 root=/dev/nfs nfsroot=192.168.2.100:/home/hexiongjun/nfs-imx6/Android ip=192.168.2.120 debug ignore_loglevel init=/init vmalloc=400M androidboot.console=ttySAC0 androidboot.hardware=freescale video=mxcfb0:dev=hdmi,1280x720MM@60,if=RGB24,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=48M"
tftp 0x10800000 192.168.2.100:imx6/uImage;bootm 0x10800000

启动后的效果图

ADB的配置

在TQIMX6上面开启开发者选项,并启用USB调试,然后在出现的运行USB调试选项中确定。

在Linux端中,添加vendor ID到android adb配置中:

echo "0x0451" > ~/.android/adb_usb.ini

然后用USB线连接板子与PC,使用adb 查看是否连接成功:

17:51 hexiongjun:Con $ adb devices
List of devices attached 
emulator-5554	device
0123456789ABCDEF	device

其中第二项,就是我们的设备。

文章导航