## 环境准备与编译
个人使用的是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屏幕,所以使用了以前用过的改装过的笔记本屏幕,参考我以前的博文:[废物利用: 动手将笔记本的显示器改成多功能显示器 可用于电视盒子以及嵌入式开发](http://blog.csdn.net/sy373466062/article/details/50184341)
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的搭建](http://www.hexiongjun.com/?p=75)
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
~~~
启动后的效果图
![](https://box.kancloud.cn/2016-05-05_572afc960944a.jpg)
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
~~~
其中第二项,就是我们的设备。
- 前言
- Freescale IMX6 Android (1): 使用HDMI作为Android显示输出的配置
- Freescale IMX6 Android (2): Android NFS启动问题汇总
- Freescale IMX6 Android (3): 手动制作Android启动用SD卡 省去MFGTOOLS烧写
- Freescale IMX6 Android (5): APP通过JNI控制LED
- Freescale IMX6 Android (4): 基于TQIMX6 给Toolbox添加LED控制程序
- Freescale IMX6 Android (6): 向ServerManager中添加Service
- Freescale IMX6 Android (7): Android启动动画死循环 Home界面不出来与pid XXX exit 可能的原因汇总