MY-RK3288-EK314 L31079 编译手册[size=0.87em]
目录 [隐藏]
- 1准备源码包
- 1.13.10.79版本代码
- 1.1.1u-boot源码
- 1.1.2kernel源码
- 1.1.3交叉编译工具
- 2配置编译环境
- 3编译u-boot
- 3.1进入u-boot源码目录
- 3.2使配置文件生效
- 3.3清除u-boot配置
- 3.4u-boot配置
- 3.5编译
- 3.6目标文件
- 4编译内核
- 4.1进入内核源码目录
- 4.2使配置文件生效
- 4.3准备配置内核
- 4.4编译内核zImage和设备树dtb
- 4.5编译模块
- 5打包linux-boot.img
- 5.1编译rockchip-mkbootimg
- 5.2打包initrd.img
- 5.3打包linux-boot.img
- 6文件系统
- 7打包批量文件relase_update.img
- 7.1编译打包工具
- 7.2新建文件夹和复制镜像
- 7.3打包relase_update.img文件
准备源码包
3.10.79版本代码u-boot源码
文件名:rk32-myzr_uboot_2014.10_201803028.tar.bz2
kernel源码
文件名:rk32-myzr_kernel_3.10_201803028.tar.bz2
交叉编译工具
文件名:gcc-arm-eabi-4.6.tar.bz2
配置编译环境
准备源码准备源码包
1)创建工作目录 创建 ~/my-rk3288 作为工作目录
$ mkdir ~/my-rk3288
创建 ~/my-rk3288/02_source 作为源码目录
$ mkdir ~/my-rk3288/02_source
创建 ~/my-rk3288/03_tools 作为工具目录
$ mkdir ~/my-rk3288/03_tools
2)复制源码包到开发主机中 这一步骤自己采取相应的方式进行。 提示:这里将网盘中“02_源码”复制到Linux开发主机的“~/my-rk3288/02_source”,将网盘中“03_工具”复制到Linux开发主机的“~/my-rk3288/03_tools”,将网盘中“01_应用”复制到Linux开发主机的“~/my-rk3288/01_application”。
解压源码包
1)解压u-boot源码和内核源码
$ cd ~/my-rk3288/02_source $ tar jxf rk32-myzr_uboot_2014.10_201803028.tar.bz2 $ tar jxf rk32-myzr_kernel_3.10_201803028.tar.bz2
2)解压交叉编译工具
$ cd ~/my-rk3288/03_tools/ $ tar jxf gcc-arm-eabi-4.6.tar.bz2
开发环境配置安装需要的包
1)更新源列表
$ sudo apt-get update
更新完成后如下图所示:
2)安装aptitude包管理工具和ia32-libs 提示:如果编译主机的Linux是32位的,可以跳过此步骤。
$ sudo apt-get –y install aptitude
$ sudo aptitude –y install ia32-libs 提示:下图为安装过aptitude和ia32-libs后,再次执行安装命令的截图。
3)安装mkimage工具 $ sudo apt-get -y install uboot-mkimage 提示:下图为安装过mkimage工具后,再次执行安装命令的截图。
4)安装ncurses-dev 说明:make menuconfig对其具有依赖性质。 $ sudo aptitude -y install ncurses-dev
提示:下图为安装过ncurses-dev工具后,再次执行安装命令的截图。
编译u-boot
进入u-boot源码目录
$ cd ~/my-rk3288/02_source/rk32-myzr_uboot_2014.10/
使配置文件生效
$ source ~/my-rk3288/03_tools/gcc-arm-eabi-4.6-env
$ echo $ARCH $ echo $CROSS_COMPILE
提示:可看到ARCH和CROSS_COMPILE被设置
$${CROSS_COMPILE}gcc –v 提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:
清除u-boot配置
$ make distclean
u-boot配置
评估板主型号
|
CPU类型-内存容量
|
对应的u-boot配置
|
MY-RK3288-EK314 |
RK3288(四核)- 2G |
rk3288_defconfig |
$ make rk3288_defconfig
编译
$ make 提示:这里为了提高编译速度,在make后面加了“-j4”。这里编译的Linux主机是双核4线程的,所以“-j”后面用了4,也就是采用4线程编译。“-j”后面的数字可以根据系统资源分配,但是不应该超过编译主机最大支持的线程数。
提示:u-boot编译过程大概需要十几秒钟的时间。
目标文件
编译完成后通过ls命令即可看到编译得到的目标文件RK3288UbootLoader_V2.30.10.bin $ ls
编译内核
进入内核源码目录
$ cd ~/my-rk3288/02_source/rk32-myzr_kernel_3.10/
使配置文件生效
$ source ~/my-rk3288/03_tools/gcc-arm-eabi-4.6-env
$ echo $ARCH $ echo $CROSS_COMPILE
提示:可看到ARCH和CROSS_COMPILE被设置
$ ${CROSS_COMPILE}gcc –v
提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:
准备配置内核
$ make distclean
说明:MY-RK3288-EK314系列评估板使用的配置文件是rk3288-myzr-linux_defconfig $ make rk3288-myzr-linux_defconfig
编译内核zImage和设备树dtb
评估板主型号
|
显示屏类型
|
对应的设备树配置
|
MY-RK3288-EK314 |
LVDS(1024X600) |
rk3288-myzr_rh568_lvds_linux.img |
HDMI(1920X1080) |
rk3288-myzr_rh568_hdmi_linux.img |
EDP(1920X1080) |
rk3288-myzr_rh568_edp_linux.img |
$ make -j8 rk3288-myzr_rh568_lvds_linux.img
说明:截图中使用了8线程编译。
arch/arm/boot/uImage即为编译得到的目标文件,使用ls命令可查看文件信息。 $ ls arch/arm/boot/zImage -la
编译模块
$ make modules 说明:截图中使用了4线程编译。
编译完成后各模块的.ko文件位于代码所在的目录,通过find命令可以找出编译完成的模块,参考命令如下: $ find -name *.ko
打包linux-boot.img
编译rockchip-mkbootimg
1) 创建应用程序目录 $ mkdir ~/my-rk3288/01_application $ cd ~/my-rk3288/01_application
2) 解压和编译rockchip-mkbootimg $ tar jxf rockchip-mkbootimg.tar.bz2 $ cd rockchip-mkbootimg/ $ make && sudo make install
打包initrd.img
1) 压缩为img格式 $ cd ~/my-rk3288/01_application/ $ tar jxf initrd.tar.bz2 $ make -C initrd/
2) 显示结果
打包linux-boot.img
$ mkbootimg --kernel ../02_source/rk32-myzr_kernel_3.10/arch/arm/boot/zImage --ramdisk initrd.img --second ../02_source/rk32-myzr_kernel_3.10/resource.img -o linux-boot.img
文件系统
文件系统包位于网盘对应的镜像文件夹中。支持的文件系统类型及下载方式可参照《MY-RK3288-EK314 烧录手册》。
打包批量文件relase_update.img
编译打包工具
$ cd ~/my-rk3288/01_application $ tar jxf rk2918_tools.tar.bz2 $ cd rk2918_tools/ $ make -j4 $ sudo cp afptool img_unpack img_maker mkkrnlimg /usr/local/bin/
新建文件夹和复制镜像
test/Image/的文件对应烧写工具Imagelinux文件,rk3288box-3.10-uboot-ubuntu.parameter.txt重命名为parameter,RESERVED是空文件,RK3288UbootLoader_V2.30.10.bin对应RKLoader.bin,update-script和recover-script在烧写工具复制,package-file的内容重新按对应的文件重命名,如下:
$ mkdir ~/my-rk3288/04_rootfs/ $ cd ~/my-rk3288/04_rootfs/ $ mkdir -p ubuntu/Image $ cp test/Image/* ubuntu/Image/ $ cp ubuntu/Image/RKLoader.bin ubuntu/ $ cd ubuntu/
打包relase_update.img文件
$ cd Image/ $ afptool -pack . ../update.img $ cd .. $ img_maker -rk32 RKLoader.bin update.img relase_update.img
|