“MYZR-RK3288-EK314 L31079 编译手册”的版本间的差异
第1行: | 第1行: | ||
<div> | <div> | ||
− | = '''准备源码包 | + | = '''准备源码包'''= |
---- | ---- | ||
− | == '''3.10.79版本代码 | + | == '''3.10.79版本代码'''== |
− | + | === u-boot源码 === | |
− | === u-boot源码 | ||
文件名:rk32-myzr_uboot_2014.10_201803028.tar.bz2<br> | 文件名:rk32-myzr_uboot_2014.10_201803028.tar.bz2<br> | ||
− | |||
− | |||
− | === kernel源码 | + | === kernel源码 === |
文件名:rk32-myzr_kernel_3.10_201803028.tar.bz2<br> | 文件名:rk32-myzr_kernel_3.10_201803028.tar.bz2<br> | ||
− | |||
− | |||
− | === 交叉编译工具 | + | === 交叉编译工具 === |
文件名:gcc-arm-eabi-4.6.tar.bz2<br> | 文件名:gcc-arm-eabi-4.6.tar.bz2<br> | ||
− | |||
− | = '''配置编译环境 | + | = '''配置编译环境'''= |
---- | ---- | ||
− | == '''准备源码 | + | == '''准备源码'''== |
− | + | === 准备源码包=== | |
− | === 准备源码包 | ||
1)创建工作目录<br> | 1)创建工作目录<br> | ||
− | |||
创建 ~/my-rk3288 作为工作目录<br> | 创建 ~/my-rk3288 作为工作目录<br> | ||
− | |||
$ mkdir ~/my-rk3288<br> | $ mkdir ~/my-rk3288<br> | ||
第36行: | 第27行: | ||
创建 ~/my-rk3288/02_source 作为源码目录<br> | 创建 ~/my-rk3288/02_source 作为源码目录<br> | ||
− | |||
$ mkdir ~/my-rk3288/02_source<br> | $ mkdir ~/my-rk3288/02_source<br> | ||
第42行: | 第32行: | ||
创建 ~/my-rk3288/03_tools 作为工具目录<br> | 创建 ~/my-rk3288/03_tools 作为工具目录<br> | ||
− | |||
$ mkdir ~/my-rk3288/03_tools<br> | $ mkdir ~/my-rk3288/03_tools<br> | ||
第48行: | 第37行: | ||
2)复制源码包到开发主机中<br> | 2)复制源码包到开发主机中<br> | ||
− | |||
这一步骤自己采取相应的方式进行。<br> | 这一步骤自己采取相应的方式进行。<br> | ||
− | + | ''提示:这里将网盘中“02_源码”复制到Linux开发主机的“~/my-rk3288/02_source”,将网盘中“03_工具”复制到Linux开发主机的“~/my-rk3288/03_tools”,将网盘中“01_应用”复制到Linux开发主机的“~/my-rk3288/01_application”。''<br> | |
− | |||
− | |||
− | + | === 解压源码包 === | |
− | === 解压源码包 | ||
1)解压u-boot源码和内核源码<br> | 1)解压u-boot源码和内核源码<br> | ||
− | |||
$ cd ~/my-rk3288/02_source<br> | $ cd ~/my-rk3288/02_source<br> | ||
第65行: | 第49行: | ||
2)解压交叉编译工具<br> | 2)解压交叉编译工具<br> | ||
− | |||
$ cd ~/my-rk3288/03_tools/<br> | $ cd ~/my-rk3288/03_tools/<br> | ||
第72行: | 第55行: | ||
− | == '''开发环境配置 | + | == '''开发环境配置'''== |
− | === 安装需要的包 | + | === 安装需要的包=== |
1)更新源列表<br> | 1)更新源列表<br> | ||
− | |||
$ sudo apt-get update<br> | $ sudo apt-get update<br> | ||
[[文件: my-rk32-ek314build_2.2.1.1.jpg]]<br> | [[文件: my-rk32-ek314build_2.2.1.1.jpg]]<br> | ||
更新完成后如下图所示:<br> | 更新完成后如下图所示:<br> | ||
− | |||
[[文件: my-rk32-ek314build_2.2.1.2.jpg]]<br> | [[文件: my-rk32-ek314build_2.2.1.2.jpg]]<br> | ||
2)安装aptitude包管理工具和ia32-libs<br> | 2)安装aptitude包管理工具和ia32-libs<br> | ||
− | |||
''提示:如果编译主机的Linux是32位的,可以跳过此步骤。''<br> | ''提示:如果编译主机的Linux是32位的,可以跳过此步骤。''<br> | ||
− | |||
* 安装aptitude包管理工具<br> | * 安装aptitude包管理工具<br> | ||
− | |||
$ sudo apt-get –y install aptitude<br> | $ sudo apt-get –y install aptitude<br> | ||
[[文件: my-rk32-ek314build_2.2.1.3.jpg]]<br> | [[文件: my-rk32-ek314build_2.2.1.3.jpg]]<br> | ||
* 使用aptitude安装ia32-libs<br> | * 使用aptitude安装ia32-libs<br> | ||
− | |||
− | |||
$ sudo aptitude –y install ia32-libs<br> | $ sudo aptitude –y install ia32-libs<br> | ||
''提示:下图为安装过aptitude和ia32-libs后,再次执行安装命令的截图。''<br> | ''提示:下图为安装过aptitude和ia32-libs后,再次执行安装命令的截图。''<br> | ||
− | |||
[[文件: my-rk32-ek314build_2.2.1.4.jpg]]<br> | [[文件: my-rk32-ek314build_2.2.1.4.jpg]]<br> | ||
3)安装mkimage工具<br> | 3)安装mkimage工具<br> | ||
− | |||
− | |||
$ sudo apt-get -y install uboot-mkimage<br> | $ sudo apt-get -y install uboot-mkimage<br> | ||
''提示:下图为安装过mkimage工具后,再次执行安装命令的截图。''<br> | ''提示:下图为安装过mkimage工具后,再次执行安装命令的截图。''<br> | ||
− | |||
[[文件: my-rk32-ek314build_2.2.1.5.jpg]]<br> | [[文件: my-rk32-ek314build_2.2.1.5.jpg]]<br> | ||
4)安装ncurses-dev<br> | 4)安装ncurses-dev<br> | ||
− | |||
<span style="color: red">说明:make menuconfig对其具有依赖性质。</span><br> | <span style="color: red">说明:make menuconfig对其具有依赖性质。</span><br> | ||
− | |||
$ sudo aptitude -y install ncurses-dev<br> | $ sudo aptitude -y install ncurses-dev<br> | ||
''提示:下图为安装过ncurses-dev工具后,再次执行安装命令的截图。''<br> | ''提示:下图为安装过ncurses-dev工具后,再次执行安装命令的截图。''<br> | ||
− | |||
[[文件: my-rk32-ek314build_2.2.1.6.jpg]]<br> | [[文件: my-rk32-ek314build_2.2.1.6.jpg]]<br> | ||
− | = '''编译u-boot | + | = '''编译u-boot'''= |
---- | ---- | ||
− | == '''进入u-boot源码目录 | + | == '''进入u-boot源码目录'''== |
$ cd ~/my-rk3288/02_source/rk32-myzr_uboot_2014.10/<br> | $ cd ~/my-rk3288/02_source/rk32-myzr_uboot_2014.10/<br> | ||
[[文件: my-rk32-ek314build_3.1.1.jpg]]<br> | [[文件: my-rk32-ek314build_3.1.1.jpg]]<br> | ||
− | == '''使配置文件生效 | + | == '''使配置文件生效'''== |
* 执行source命令<br> | * 执行source命令<br> | ||
− | |||
$ source ~/my-rk3288/03_tools/gcc-arm-eabi-4.6-env<br> | $ source ~/my-rk3288/03_tools/gcc-arm-eabi-4.6-env<br> | ||
第136行: | 第104行: | ||
* 查看编译配置<br> | * 查看编译配置<br> | ||
− | |||
− | |||
$ echo $ARCH<br> | $ echo $ARCH<br> | ||
$ echo $CROSS_COMPILE<br> | $ echo $CROSS_COMPILE<br> | ||
''提示:可看到ARCH和CROSS_COMPILE被设置''<br> | ''提示:可看到ARCH和CROSS_COMPILE被设置''<br> | ||
− | |||
[[文件: my-rk32-ek314build_3.2.2.jpg]]<br> | [[文件: my-rk32-ek314build_3.2.2.jpg]]<br> | ||
* 验证交叉编译工具配置<br> | * 验证交叉编译工具配置<br> | ||
− | |||
− | |||
$${CROSS_COMPILE}gcc –v<br> | $${CROSS_COMPILE}gcc –v<br> | ||
''提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:''<br> | ''提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:''<br> | ||
− | |||
[[文件: my-rk32-ek314build_3.2.3.jpg]]<br> | [[文件: my-rk32-ek314build_3.2.3.jpg]]<br> | ||
− | == '''清除u-boot配置 | + | == '''清除u-boot配置'''== |
$ make distclean<br> | $ make distclean<br> | ||
[[文件: my-rk32-ek314build_3.3.1.jpg]]<br> | [[文件: my-rk32-ek314build_3.3.1.jpg]]<br> | ||
− | == '''u-boot配置 | + | == '''u-boot配置'''== |
* 评估板及对应的 u-boot 编译配置:<br> | * 评估板及对应的 u-boot 编译配置:<br> | ||
− | |||
− | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | !评估板主型号 | + | !评估板主型号 |
− | !CPU类型-内存容量 | + | !CPU类型-内存容量 |
− | !对应的u-boot配置 | + | !对应的u-boot配置 |
|- | |- | ||
|rowspan=1|MY-RK3288-EK314 | |rowspan=1|MY-RK3288-EK314 | ||
− | |RK3288(四核)- 2G | + | |RK3288(四核)- 2G |
|rk3288_defconfig | |rk3288_defconfig | ||
|} | |} | ||
* MY-RK3288-EK314-2G配置示例:<br> | * MY-RK3288-EK314-2G配置示例:<br> | ||
− | |||
− | |||
$ make rk3288_defconfig<br> | $ make rk3288_defconfig<br> | ||
[[文件: my-rk32-ek314build_3.4.1.jpg]]<br> | [[文件: my-rk32-ek314build_3.4.1.jpg]]<br> | ||
− | == '''编译 | + | == '''编译'''== |
* 执行编译<br> | * 执行编译<br> | ||
− | |||
− | |||
$ make<br> | $ make<br> | ||
''提示:这里为了提高编译速度,在make后面加了“-j4”。这里编译的Linux主机是双核4线程的,所以“-j”后面用了4,也就是采用4线程编译。“-j”后面的数字可以根据系统资源分配,但是不应该超过编译主机最大支持的线程数。''<br> | ''提示:这里为了提高编译速度,在make后面加了“-j4”。这里编译的Linux主机是双核4线程的,所以“-j”后面用了4,也就是采用4线程编译。“-j”后面的数字可以根据系统资源分配,但是不应该超过编译主机最大支持的线程数。''<br> | ||
− | |||
[[文件: my-rk32-ek314build_3.5.1.jpg]]<br> | [[文件: my-rk32-ek314build_3.5.1.jpg]]<br> | ||
* 编译完成<br> | * 编译完成<br> | ||
− | |||
''提示:u-boot编译过程大概需要十几秒钟的时间。''<br> | ''提示:u-boot编译过程大概需要十几秒钟的时间。''<br> | ||
− | |||
[[文件: my-rk32-ek314build_3.5.2.jpg]]<br> | [[文件: my-rk32-ek314build_3.5.2.jpg]]<br> | ||
− | == '''目标文件 | + | == '''目标文件'''== |
编译完成后通过ls命令即可看到编译得到的目标文件RK3288UbootLoader_V2.30.10.bin<br> | 编译完成后通过ls命令即可看到编译得到的目标文件RK3288UbootLoader_V2.30.10.bin<br> | ||
− | |||
− | |||
$ ls<br> | $ ls<br> | ||
[[文件: my-rk32-ek314build_3.6.1.jpg]]<br> | [[文件: my-rk32-ek314build_3.6.1.jpg]]<br> | ||
− | = '''编译内核 | + | = '''编译内核'''= |
---- | ---- | ||
− | == '''进入内核源码目录 | + | == '''进入内核源码目录'''== |
$ cd ~/my-rk3288/02_source/rk32-myzr_kernel_3.10/<br> | $ cd ~/my-rk3288/02_source/rk32-myzr_kernel_3.10/<br> | ||
[[文件: my-rk32-ek314build_4.1.1.jpg]]<br> | [[文件: my-rk32-ek314build_4.1.1.jpg]]<br> | ||
− | == '''使配置文件生效 | + | == '''使配置文件生效'''== |
* 执行source命令<br> | * 执行source命令<br> | ||
− | |||
− | |||
$ source ~/my-rk3288/03_tools/gcc-arm-eabi-4.6-env<br> | $ source ~/my-rk3288/03_tools/gcc-arm-eabi-4.6-env<br> | ||
[[文件: my-rk32-ek314build_4.2.1.jpg]]<br> | [[文件: my-rk32-ek314build_4.2.1.jpg]]<br> | ||
* 查看编译配置<br> | * 查看编译配置<br> | ||
− | |||
− | |||
$ echo $ARCH<br> | $ echo $ARCH<br> | ||
$ echo $CROSS_COMPILE<br> | $ echo $CROSS_COMPILE<br> | ||
''提示:可看到ARCH和CROSS_COMPILE被设置''<br> | ''提示:可看到ARCH和CROSS_COMPILE被设置''<br> | ||
− | |||
[[文件: my-rk32-ek314build_4.2.2.jpg]]<br> | [[文件: my-rk32-ek314build_4.2.2.jpg]]<br> | ||
* 验证交叉编译工具配置<br> | * 验证交叉编译工具配置<br> | ||
− | |||
− | |||
$ ${CROSS_COMPILE}gcc –v<br> | $ ${CROSS_COMPILE}gcc –v<br> | ||
''提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:''<br> | ''提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:''<br> | ||
− | |||
[[文件: my-rk32-ek314build_4.2.3.jpg]]<br> | [[文件: my-rk32-ek314build_4.2.3.jpg]]<br> | ||
− | == '''准备配置内核 | + | == '''准备配置内核'''== |
* 清除内核配置<br> | * 清除内核配置<br> | ||
− | |||
$ make distclean<br> | $ make distclean<br> | ||
第247行: | 第189行: | ||
* 生成.config文件<br> | * 生成.config文件<br> | ||
− | |||
− | |||
说明:MY-RK3288-EK314系列评估板使用的配置文件是rk3288-myzr-linux_defconfig<br> | 说明:MY-RK3288-EK314系列评估板使用的配置文件是rk3288-myzr-linux_defconfig<br> | ||
− | |||
$ make rk3288-myzr-linux_defconfig<br> | $ make rk3288-myzr-linux_defconfig<br> | ||
[[文件: my-rk32-ek314build_4.3.2.jpg]]<br> | [[文件: my-rk32-ek314build_4.3.2.jpg]]<br> | ||
− | == '''编译内核zImage和设备树dtb | + | == '''编译内核zImage和设备树dtb'''== |
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | !评估板主型号 | + | !评估板主型号 |
− | !显示屏类型 | + | !显示屏类型 |
− | !对应的设备树配置 | + | !对应的设备树配置 |
|- | |- | ||
|rowspan=3|MY-RK3288-EK314 | |rowspan=3|MY-RK3288-EK314 | ||
第277行: | 第216行: | ||
* 编译(以下是LVDS屏)<br> | * 编译(以下是LVDS屏)<br> | ||
− | |||
$ make -j8 rk3288-myzr_rh568_lvds_linux.img<br> | $ make -j8 rk3288-myzr_rh568_lvds_linux.img<br> | ||
说明:截图中使用了8线程编译。<br> | 说明:截图中使用了8线程编译。<br> | ||
− | |||
[[文件: my-rk32-ek314build_4.4.1.jpg]]<br> | [[文件: my-rk32-ek314build_4.4.1.jpg]]<br> | ||
* 编译完成<br> | * 编译完成<br> | ||
− | |||
[[文件: my-rk32-ek314build_4.4.2.jpg]]<br> | [[文件: my-rk32-ek314build_4.4.2.jpg]]<br> | ||
* 目标文件<br> | * 目标文件<br> | ||
− | |||
− | |||
arch/arm/boot/uImage即为编译得到的目标文件,使用ls命令可查看文件信息。<br> | arch/arm/boot/uImage即为编译得到的目标文件,使用ls命令可查看文件信息。<br> | ||
− | |||
− | |||
$ ls arch/arm/boot/zImage -la<br> | $ ls arch/arm/boot/zImage -la<br> | ||
[[文件: my-rk32-ek314build_4.4.3.jpg]]<br> | [[文件: my-rk32-ek314build_4.4.3.jpg]]<br> | ||
− | == '''编译模块 | + | == '''编译模块'''== |
* 编译<br> | * 编译<br> | ||
− | |||
− | |||
$ make modules<br> | $ make modules<br> | ||
说明:截图中使用了4线程编译。<br> | 说明:截图中使用了4线程编译。<br> | ||
− | |||
[[文件: my-rk32-ek314build_4.5.1.jpg]]<br> | [[文件: my-rk32-ek314build_4.5.1.jpg]]<br> | ||
* 编译完成<br> | * 编译完成<br> | ||
− | |||
[[文件: my-rk32-ek314build_4.5.2.jpg]]<br> | [[文件: my-rk32-ek314build_4.5.2.jpg]]<br> | ||
* 目标文件<br> | * 目标文件<br> | ||
− | |||
编译完成后各模块的.ko文件位于代码所在的目录,通过find命令可以找出编译完成的模块,参考命令如下:<br> | 编译完成后各模块的.ko文件位于代码所在的目录,通过find命令可以找出编译完成的模块,参考命令如下:<br> | ||
− | |||
$ find -name *.ko<br> | $ find -name *.ko<br> | ||
[[文件: my-rk32-ek314build_4.5.3.jpg]]<br> | [[文件: my-rk32-ek314build_4.5.3.jpg]]<br> | ||
− | = '''打包linux-boot.img | + | = '''打包linux-boot.img'''= |
---- | ---- | ||
− | == '''编译rockchip-mkbootimg | + | == '''编译rockchip-mkbootimg'''== |
1) 创建应用程序目录 <br> | 1) 创建应用程序目录 <br> | ||
− | |||
− | |||
$ mkdir ~/my-rk3288/01_application<br> | $ mkdir ~/my-rk3288/01_application<br> | ||
$ cd ~/my-rk3288/01_application<br> | $ cd ~/my-rk3288/01_application<br> | ||
第330行: | 第254行: | ||
2) 解压和编译rockchip-mkbootimg<br> | 2) 解压和编译rockchip-mkbootimg<br> | ||
− | |||
− | |||
$ tar jxf rockchip-mkbootimg.tar.bz2<br> | $ tar jxf rockchip-mkbootimg.tar.bz2<br> | ||
$ cd rockchip-mkbootimg/<br> | $ cd rockchip-mkbootimg/<br> | ||
第338行: | 第260行: | ||
− | == '''打包initrd.img | + | == '''打包initrd.img'''== |
1) 压缩为img格式 <br> | 1) 压缩为img格式 <br> | ||
− | |||
− | |||
$ cd ~/my-rk3288/01_application/<br> | $ cd ~/my-rk3288/01_application/<br> | ||
$ tar jxf initrd.tar.bz2<br> | $ tar jxf initrd.tar.bz2<br> | ||
第348行: | 第268行: | ||
2) 显示结果<br> | 2) 显示结果<br> | ||
− | |||
[[文件: my-rk32-ek314build_5.2.2.jpg]]<br> | [[文件: my-rk32-ek314build_5.2.2.jpg]]<br> | ||
− | == '''打包linux-boot.img | + | == '''打包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<br> | $ 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<br> | ||
[[文件: my-rk32-ek314build_5.3.1.jpg]]<br> | [[文件: my-rk32-ek314build_5.3.1.jpg]]<br> | ||
− | = '''文件系统 | + | = '''文件系统'''= |
文件系统包位于网盘对应的镜像文件夹中。支持的文件系统类型及下载方式可参照《MY-RK3288-EK314 烧录手册》。<br> | 文件系统包位于网盘对应的镜像文件夹中。支持的文件系统类型及下载方式可参照《MY-RK3288-EK314 烧录手册》。<br> | ||
− | |||
− | |||
− | = '''打包批量文件relase_update.img | + | = '''打包批量文件relase_update.img'''= |
---- | ---- | ||
− | == '''编译打包工具 | + | == '''编译打包工具'''== |
− | |||
$ cd ~/my-rk3288/01_application<br> | $ cd ~/my-rk3288/01_application<br> | ||
$ tar jxf rk2918_tools.tar.bz2<br> | $ tar jxf rk2918_tools.tar.bz2<br> | ||
第373行: | 第289行: | ||
− | == '''新建文件夹和复制镜像 | + | == '''新建文件夹和复制镜像'''== |
test/Image/的文件对应烧写工具Image\linux文件,rk3288box-3.10-uboot-ubuntu.parameter.txt重命名为parameter,RESERVED是空文件,RK3288UbootLoader_V2.30.10.bin对应RKLoader.bin,update-script和recover-script在烧写工具复制,package-file的内容重新按对应的文件重命名,如下:<br> | test/Image/的文件对应烧写工具Image\linux文件,rk3288box-3.10-uboot-ubuntu.parameter.txt重命名为parameter,RESERVED是空文件,RK3288UbootLoader_V2.30.10.bin对应RKLoader.bin,update-script和recover-script在烧写工具复制,package-file的内容重新按对应的文件重命名,如下:<br> | ||
− | |||
[[文件: my-rk32-ek314build_7.2.1.jpg]]<br> | [[文件: my-rk32-ek314build_7.2.1.jpg]]<br> | ||
第387行: | 第302行: | ||
− | == '''打包relase_update.img文件 | + | == '''打包relase_update.img文件'''== |
$ cd Image/<br> | $ cd Image/<br> | ||
$ afptool -pack . ../update.img<br> | $ afptool -pack . ../update.img<br> | ||
第393行: | 第308行: | ||
$ img_maker -rk32 RKLoader.bin update.img relase_update.img<br> | $ img_maker -rk32 RKLoader.bin update.img relase_update.img<br> | ||
[[文件: my-rk32-ek314build_7.3.1.jpg]]<br> | [[文件: my-rk32-ek314build_7.3.1.jpg]]<br> | ||
+ | |||
</div> | </div> |
2018年7月27日 (五) 11:28的版本
准备源码包
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 作为工作目录
创建 ~/my-rk3288/02_source 作为源码目录
创建 ~/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位的,可以跳过此步骤。
- 安装aptitude包管理工具
$ sudo apt-get –y install aptitude
- 使用aptitude安装ia32-libs
$ 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命令
$ source ~/my-rk3288/03_tools/gcc-arm-eabi-4.6-env
- 查看编译配置
$ echo $ARCH
$ echo $CROSS_COMPILE
- 验证交叉编译工具配置
$${CROSS_COMPILE}gcc –v
提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:
清除u-boot配置
u-boot配置
- 评估板及对应的 u-boot 编译配置:
评估板主型号 | CPU类型-内存容量 | 对应的u-boot配置 |
---|---|---|
MY-RK3288-EK314 | RK3288(四核)- 2G | rk3288_defconfig |
- MY-RK3288-EK314-2G配置示例:
编译
- 执行编译
$ make
提示:这里为了提高编译速度,在make后面加了“-j4”。这里编译的Linux主机是双核4线程的,所以“-j”后面用了4,也就是采用4线程编译。“-j”后面的数字可以根据系统资源分配,但是不应该超过编译主机最大支持的线程数。
- 编译完成
目标文件
编译完成后通过ls命令即可看到编译得到的目标文件RK3288UbootLoader_V2.30.10.bin
$ ls
编译内核
进入内核源码目录
$ cd ~/my-rk3288/02_source/rk32-myzr_kernel_3.10/
使配置文件生效
- 执行source命令
$ source ~/my-rk3288/03_tools/gcc-arm-eabi-4.6-env
- 查看编译配置
$ echo $ARCH
$ echo $CROSS_COMPILE
- 验证交叉编译工具配置
$ ${CROSS_COMPILE}gcc –v
提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:
准备配置内核
- 清除内核配置
- 生成.config文件
说明: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 |
- 编译(以下是LVDS屏)
$ make -j8 rk3288-myzr_rh568_lvds_linux.img
- 编译完成
- 目标文件
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/
打包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/的文件对应烧写工具Image\linux文件,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