/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
* http://blog.youkuaiyun.com/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。
********************************************************************************************/
在执行编译之前要先配置内核kernel.img的路径。
修改BoardConfig.mk文件
gedit device/rockchip/rk29sdk/BoardConfig.mk
修改device/rockchip/rk29sdk/BoardConfig.mk文件中的值TARGET_PREBUILT_KERNEL指向Image文件
TARGET_PREBUILT_KERNEL := ./Image
注:上述Image实际是kernel.img,文件名改成Image而已,路径地址可以为相对地址“./”,也可以为绝对路径地址
然后把SDK包的Image复制到SDK包的根目录。
然后开始
编译步骤:
第一步:make prebuild
第二步:make
第三步:./mkimage.sh ota
第一步为编译的准备工作
如下
conowen@conowen-GA-880GA-UD3H:~/dev/gingerbread$ make prebuild
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.1
TARGET_PRODUCT=rk29sdk
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GINGERBREAD
============================================
Checking build tools versions...
will install VideoPlayer.apk QianxunKankan_rk.apk Explorer.apk RockApkinstaller.apk
TARGET_PREBUILT_KERNEL != null
radio only support data
build/core/base_rules.mk:109: user tag on app UiForUpdate at device/rockchip/rk29sdk/frameworks/FirmwireUpdate/java_ui_apk - add your app to core.mk instead
build/core/base_rules.mk:109: user tag on app RockchipService at device/rockchip/rk29sdk/frameworks/RockchipService - add your app to core.mk instead
build/core/base_rules.mk:109: user tag on app EthernetSettings at device/rockchip/rk29sdk/packages/apps/EthernetSettings - add your app to core.mk instead
********* Enable USB Mode Switch ***********
待续……
若工程内存为ddr3,则在执行第二步之前要先执行
make rk29_ddr3sdk_defconfig
第二步的make后面可以加参数 -jn,其中j为jobs,即作业,n为数值,一般为cpu的线程数
如四核四线程cpu可写作
make -j4
第三步./mkimage.sh把一些apk、驱动、资源等等打包生成image文件,也就是可以自己定制image。而相应的apk、驱动之类的在/out/target/product/rk29sdk目录下,删除自己不喜欢的,然后执行第三步,就可以生成相对应的image了。存放在SDK包的reckdev目录下的Image文件夹下,刷机用此image刷机即可。
注:
第三步若是没有加ota参数,则生成的boot.img没有包含kernel.img,方便单独烧写内核,便于开发。
而recovery.img本就是有kernel.img的。若要更新kernel,则要重新编译(执行第二步)
各个image的大小
Boot.img(没有kernel.img)为 500K,含有kernel 的话,为6MRecover.img为11M
System.img为120M
Kernel为5M
Misc.img为50K