rk3128机顶盒编译
RK3128编译过程
- 安装ubuntu14.04系统,Java jdk1.6。
- 安装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++
- 同步源码
mkdir rk3128
tar xvf rk3128_box_kitkat_rel_v1.00_141010.tar –C rk3128
cd rk3128
.repo/repo/repo sync -l
- 编译内核
cd kernel
make rockchip_defconfig
make rk3128-box-rk88.img(我们的板是RK88 样机)
(编译完后将在 kernel 目录生成 resource.img 和 kernel.img)
- 编译uboot
make rk3128_defconfig
make
- 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)
- 生成可以启动的img文件
./mkimage.sh
(生成的img文件在根目录的rockdev目录下,烧写镜像要使用该目录下的img文件而不是out/target/product/rkxx目录下的img文件)
工厂工具使用的固件打包方式:
1.update.img 简介
update.img 固件是以RK自己的打包方式生成的。使用烧写工具生成。
2.制作过程
- 在ubuntu中系统源码编译完毕后,执行./mkimage.sh在根目录rockdev中生成可以启动的boot.img,misc.img, system.img, recovery.img等文件,拷贝到windows系统中。
- 切换到windows中,进入烧写工具目录中。
- 拷贝uboot-rk3128.img ,kernel.img ,boot.img, recovery.img,misc.img,resource.img,system.img 到rockdev\Image目录下。
- 双击执行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. 制作过程
- 在ubuntu中编译完kernel,uboot,sdk系统后
- 执行./mkimage.sh ota 命令
- 执行 make otapackage -j8 命令
- 在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 后会去验证校验, 验证成功后会弹 回对话框提示升级。