rk3128机顶盒编译

RK3128编译过程

  1. 安装ubuntu14.04系统,Java jdk1.6。
  2. 安装android编译依赖
	sudo apt-get install vim git git-core zip unzip rar unrar curl minicom valgrind gawk
	sudo apt-get install gnupg flex bison gperf build-essential zlib1g-dev gcc-multilib \
        g++-multilib libc6-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev \
        xsltproc lib32readline-gplv2-dev lib32z1-dev libxml2-utils imagemagick lzop libesd0-dev \
        libwxgtk2.8-dev zlib1g-dev libncurses5-dev lib32z1-dev lib32bz2-dev lib32ncurses5-dev \
        lib32z-dev libgl1-mesa-dev mingw32 tofrodos gcc-4.4 g++-4.4 g++-4.4-multilib

    #降级gcc和g++版本
	sudo rm /usr/bin/gcc /usr/bin/g++
	sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
	sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
  1. 同步源码
    mkdir rk3128
    tar xvf rk3128_box_kitkat_rel_v1.00_141010.tar –C rk3128
    cd rk3128
    .repo/repo/repo sync -l
  1. 编译内核
    cd kernel
    make rockchip_defconfig
    make rk3128-box-rk88.img(我们的板是RK88 样机)
    (编译完后将在 kernel 目录生成 resource.img 和 kernel.img)
  1. 编译uboot
	make rk3128_defconfig
    make
  1. Android sdk编译

注意:此 SDK 默认是 512M 内存版本,对低内存做了优化,但此优化会对性能产生一些影响, 并且对系统做了些裁剪,如果是 1G 的内存,请把\device\rockchip\rk312x\ BoardConfig.mk BOARD_USE_LOW_MEM := true 设置为 false(我们rk88样机的板512M的也可以使用1G的软件)

    source build/envsetup.sh
    make
    (默认 SDK 以 eng 模式编译。如要使用 user 模式编译固件,可屏蔽 buildspec.mk 中的注释,如下:TARGET_BUILD_VARIANT:=user)
  1. 生成可以启动的img文件
    ./mkimage.sh
    (生成的img文件在根目录的rockdev目录下,烧写镜像要使用该目录下的img文件而不是out/target/product/rkxx目录下的img文件)

工厂工具使用的固件打包方式:

1.update.img 简介

update.img 固件是以RK自己的打包方式生成的。使用烧写工具生成。

2.制作过程

  1. 在ubuntu中系统源码编译完毕后,执行./mkimage.sh在根目录rockdev中生成可以启动的boot.img,misc.img, system.img, recovery.img等文件,拷贝到windows系统中。
  2. 切换到windows中,进入烧写工具目录中。
  3. 拷贝uboot-rk3128.img ,kernel.img ,boot.img, recovery.img,misc.img,resource.img,system.img 到rockdev\Image目录下。
  4. 双击执行rockdev\目录下的mkupdate.bat脚本,会在rockdev目录下生成update.img镜像

3.烧写过程

使用工厂工具升级

OTA完整升级包打包方式

1. OTA 完整包简介

OTA 完整包会先把 kernel.img 通过命令打包到 boot.img 文件中,然后把 system.img, boot.img,recovery.img,misc.img 文件打包到 update.zip 文件中去, 另外可以通过特定的方式把 bootloader 和 paramter 打包到 update.zip 中。所以 OTA 完整包会比较大,并不太适合远程服务器升级,远程服务器升级一般使用差异包。不 过完整包少了差异包的一些限制,具有更好的通用性。

2. 制作过程

  1. 在ubuntu中编译完kernel,uboot,sdk系统后
  2. 执行./mkimage.sh ota 命令
  3. 执行 make otapackage -j8 命令
  4. 在out/target/product/rkxxsdk/目录下, 生成文件名类似 rkxxsdk-ota-eng.root.zip 格式的ota包。

    3. 升级过程

    把rkxxsdk-ota-eng.root.zip文件重命名 update.zip 并拷贝到 SD 卡,FLASH 以及 U 盘的根目录下。升级应用在收到 Intent.ACTION_BOOT_COMPLETEDD,Intent.ACTION_MEDIA_MOUNTED, UsbManager.ACTION_USB_STATE,ConnectivityManager.CONNECTIVITY_ACTION 等广播 时候就会去检测上述路径。 当检测到有 update.zip 后会去验证校验, 验证成功后会弹 回对话框提示升级。