Cubietruck和A20的编译

本文档介绍了在Ubuntu 12.04 64位系统上编译Cubietruck的Android镜像的详细步骤,包括源码下载、编译环境搭建、内核编译、Android编译以及解决常见错误的方法。通过编译,用户可自定义系统设置,如将显示驱动从HDMI更改为LCD。

硬件:至少是64位CPU,编译目录有50G剩余空间,内存2G以上,交换区4G

计算机:ubuntu 12.04 64位

官方指导编译如下

  http://docs.cubieboard.org/tutorials/ct1/installation/cb3_a20-compiling_android_image_for_cubietruck

1、源码下载路径方法
 两种下载方法,我是直接到cubie百度网盘上下载的,网盘上分享代码和参考资料还是很全的。
 1) 在 github 下载
     git clone
https://bitbucket.org/cubietech/a20-android4.2_lichee.git
     git clone https://bitbucket.org/cubietech/a20-android4.2_android.git
 2 )在百度云下载源码压缩包:
    
http://pan.baidu.com/s/1kTFXnPP

 3)Cubietruck下载和Cubieboard2一样

我选(cubieboard2_android_SDK_v1.05),下载后里面有android 和linux内核(lichhe)

    http://docs.cubieboard.org/tutorials/cb2/development/building_your_own_android_image
 2、搭建编译环境 系统ubuntu 14.10
  官方推荐的系统是ubuntu 12.04 ,
2 安装 JDK
 $wget dl.cubieboard.org/software/tools/android/jdk1.6.0_45.tar.gz

  解压:$sudotar -xvf j dk1.6.0_45.tar.gz

  配置环境变量:
  $sudo gedit /etc/profiel
  增加:
export    JAVA_HOME=/opt/jdk1.6.0_45
export    JRE_HOME=${JAVA_HOME}/jre
export    CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export    PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PAT
H

 
   jdk_path为你下载解压后的jdk路径。(我的路径为:/opt/jdk1.6.0_45)
  保存后使其生效且验证是否成功:
   $source /etic/profiel && java -version


3 安装编译所需包( Ubuntu 12.04 ):
 $sudo apt-get update
 $sudo apt-get upgrade
 $sudo apt-get install build-essential u-boot-tools uboot-mkimage binutils-arm-linux-gnueabihf
 $sudo apt-get install gcc g++ gcc-arm-linux-gnueabi gcc-arm-linux-gnueabihf g++-multilib
 $sudo apt-get install cpp-arm-linux-gnueabihf libusb-1.0-0 libusb-1.0-0-dev wget fakeroot
 $sudo apt-get install kernel-package zlib1g-dev libncurses5-dev build-essential
 $sudo apt-get install texinfo texlive ccache zlib1g-dev gawk bison flex gettext uuid-dev
 $sudo apt-get install ia32-libs git gnupg flex bison gperf build-essential zip
 $sudo apt-get install curl libc6-dev x11proto-core-dev libx11-dev:i386 lib32ncurses5-dev
 $sudo apt-get install libreadline6-dev:i386 mingw32 tofrodos python-markdown
 $sudo apt-get install libxml2-utils xsltproc zlib1g-dev:i386 libgl1-mesa-dev
4 编译

用sudo 或者sudo -i  切换root 账户 ,在root下才能编译内核(不一定,看文件怎么放的)

拷贝内核配置文件
  cd$ lichee/linux-3.4/    #进入到kernel 目录

  lichee/linux-3.4$ make clean             # 删除大多数的编译生成文件, 保留内核的配置文件.config
  lichee/linux-3.4$ cp arch/arm/configs/cubietruck_config  .config  #把内核默认配置文件拷贝到根目录(/linux-3.4)下,命名为.config
lichee$ ./build.sh -p sun7i_android           #编译针对 A20CPU 的linux kernel(在 lichee目录下)
 等待编译完成
 最后会出现
  INFO : build u-boot ok
  build rootfs  ...
  skip make rootfs for android
  build rootfs ok
  build lichee ok
  进入lichee/out 可以看到 zImage
5、整体源码源码编译

这编译过程中需要导入JDK,但普通用户在/etc/profile中设置好了JAVA_HOME变量并引入到PATH中,用su root,是不会获取JAVA_HOME环境变量,应该用su - root命令,这时又可以找到JAVA_HOME这个变量了。
对比了一下su和su - 这两个命令的差别才明白:su是切换用户存取权限,但是没有获得环境变量,所以PATH没有被带入;su -是完全的切换用户,可以获得环境变量,所以可以找到JAVA_HOME

 android编译步骤如下 :
      $ cd android              #进入android source code
       android$  source build/envsetup.sh    #设置编译环境变量
       android$  lunch                                 #选择目标硬件,这里选16

 内核编译完后,进入 android 目录下。这里执行整个固件的编译,生成 system.img,userdata.img 等
 镜像,最后将它们打包成我们要的固件。

 输入 16 ( 选择 sugar_cubietruck-eng)

 拷贝内核和模块:
     android$ extract-bsp      #复制linux kernel 的内核模块驱动等文件到android中,为打包做准备
  编译:
    
android$ make -j2     #-j2是双线程 ,-4是四线程 -j8是八线程
 等待 ...........时间要2个小时以上,取决于 CPU 内存 硬件

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
out/target/product/sugar-cubietruck/obj/PACKAGING/systemimage_intermediates/unsparse_system.img: 1498/32768 files (0.0% non-contiguous), 100185/131072 blocks
Install system fs image: out/target/product/sugar-cubietruck/system.img
out/target/product/sugar-cubietruck/system.img+out/target/product/sugar-cubietruck/obj/PACKAGING/recovery_patch_intermediates/recovery_from_boot.p maxsize=548110464 blocksize=4224 total=404329300 reserve=5537664
[1]+  Exit 2                  make
 编译完成:

root@zhz:/home/work/CubieBoard2_SDK/android#
 编译完成后打包:
  
android$ pack  打包img

完成后出现信息如下

CopyRootToFS(/home/work/CubieBoard2_SDK/lichee/tools/pack/out/boot-resource)

c:\bat
c:\magic.bin
find magic !!
RealLen=0x4B0C00
CPlugin Free lib
CPlugin Free lib
normal
dragon image.cfg sys_partition.fex [OK]
----------image is at----------

/home/work/CubieBoard2_SDK/lichee/tools/pack/sun7i_android_sugar-cubietruck.img

pack finish
 最后就会在 lichee/tools/pack 中生成我们最终的固件。

6 、编译过程中出现的错误

 1)Make 4.0 需要换成3.81或者3.82版本,参考网站

Android can only be built by versions 3.81 and 3.82

删除高版本的make 4.0.8,编译安装低版本make 3.82

问题来了 如何 替换低版本make?

先查看

$ make --version
GNU Make 4.0

下载downloaded 3.82 from http://ftp.gnu.org/gnu/make/

下载 make-3.82-154.1.1.x86_64.rpm

然后解压 进入文件夹并且安装 

./configure
sudo make install

make --version
GNU Make 3.82

这样就得到了 符合需求的make版本

接下来继续编译 源码

(特别注意make版本换了之后需要重新设置编译源码几个步骤,也就是source build/envsetup.sh  lunch 。。。 重新操作)


2) calling gperf failed: 32512 at ./makeprop.pl line 140

sh: gperf: not found

target Generated: libwebcore <= external/webkit/Source/JavaScriptCore/create_regex_tables
Generating CSSPropertyNames.h <= CSSPropertyNames.in
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 140.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h'

解决方法:sudo apt-get install gperf

{上面错误不是我编译出来的,我是拷贝参考文章,因为当时候编译美柚记录保存,不过解决方法可以,这点重要}

参考 http://www.oschina.net/question/565065_86092


7、解决以上问题之后 make 一路编译

最后出现

RealLen=0x4B0C00
CPlugin Free lib
CPlugin Free lib
normal
dragon image.cfg sys_partition.fex [OK]
----------image is at----------

/work/lichee/tools/pack/sun7i_android_sugar-cubietruck.img

pack finish


 

8、编译内核时出现:

解决:$sudo cp CubieBoard2_SDK/lichee/u-boot/tools/mkimage /usr/bin  

9、pack完后,把CubieBoard2_SDK/lichee/tools/pack/sun7i_android_sugar-cubieboard2.img。

用LIveSuit 烧录到CT3中

10、编译好的镜像默认是HDMI显示,改成LCD

sys_config.fex 配置文件:树莓派3的Android系统一些相关功能的配置文件,通过对此文件的修改,可配置模块驱动功能的使能、关闭,以及其他参数的设置,可根据自己的硬件模块的实际情况进行配置和修改,即可实现相应的驱动功能。

sys_config.fex路径:CubieBoard2_SDK/lichee/tools/pack/chips/sun7i/configs/android/sugar-cubieboard2

参数说明:

screen0_output_type=xx   屏0 输出类型(0:none; 1:lcd; 2:tv; 3:hdmi; 4:vga)
screen0_output_mode =xx   屏0 输出模式

(used for tv/hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50 5:720p606:1080i507:1080i608:1080p2411:1080p5010:1080p6011:pal 14:ntsc)

 

显示驱动配置的默认参数设置如下 :
screen0_output_type = 3  
screen0_output_mode =5  
即为将显示设置为了 HDMI类型输出,并以 750p60hz 的格式输出

改为:

screen0_output_type = 1
screen0_output_mode =2

 

重新打包:

进入Android 目录下,执行以下步骤即可生成新的镜像文件:
#source build/envsetup.sh  设置编译环境变量 
#lunch  选15 
#extract_bsp  复制linux kernel 的内核模块驱动等文件到android中,为打包做准备
#pack  打包img


 

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值