“MYZR-RK3288-EK314 L31079 编译手册”的版本间的差异

来自明远智睿的wiki
跳转至: 导航搜索
(创建页面,内容为“= '''准备源码包(prepare source code pacakge)'''= ---- == '''3.10.79版本代码(3.10.79 version code)'''== === u-boot源码(u-boot source code) === 文件名...”)
 
 
(未显示同一用户的4个中间版本)
第1行: 第1行:
= '''准备源码包(prepare source code pacakge)'''=
+
<div>
 +
== '''主机环境''' ==
 +
ubuntu14.04(64bit),已经真机编译验证过。
 +
 
 +
= '''准备源码包'''=
 
----
 
----
== '''3.10.79版本代码(3.10.79 version code)'''==
+
== '''3.10.79版本代码'''==
 
 
  
=== u-boot源码(u-boot source code) ===
+
=== u-boot源码 ===
 
文件名:rk32-myzr_uboot_2014.10_201803028.tar.bz2<br>
 
文件名:rk32-myzr_uboot_2014.10_201803028.tar.bz2<br>
<span style="background:#CCCCCC">name of file:rk32-myzr_uboot_2014.10_201803028.tar.bz2</span><br>
 
 
  
=== kernel源码(kernel source code) ===
+
=== kernel源码 ===
 
文件名:rk32-myzr_kernel_3.10_201803028.tar.bz2<br>
 
文件名:rk32-myzr_kernel_3.10_201803028.tar.bz2<br>
<span style="background:#CCCCCC">name of file:rk32-myzr_kernel_3.10_201803028.tar.bz2</span><br>
 
  
 
+
=== 交叉编译工具 ===
=== 交叉编译工具 (cross compifer tool)===
 
 
文件名:gcc-arm-eabi-4.6.tar.bz2<br>
 
文件名:gcc-arm-eabi-4.6.tar.bz2<br>
<span style="background:#CCCCCC">name of file:gcc-arm-eabi-4.6.tar.bz2</span><br>
 
  
  
= '''配置编译环境(configuration of compifer environment)'''=
+
= '''配置编译环境'''=
 
----
 
----
== '''准备源码(prepare source code)'''==
+
== '''准备源码'''==
  
 
+
=== 准备源码包===
=== 准备源码包 (prepare source code package)===
 
 
1)创建工作目录<br>
 
1)创建工作目录<br>
<span style="background:#CCCCCC">create working directory</span><br>
 
 
创建 ~/my-rk3288 作为工作目录<br>
 
创建 ~/my-rk3288 作为工作目录<br>
<span style="background:#CCCCCC">create ~/my-rk3288 as working directory</span><br>
 
  
 
$ mkdir ~/my-rk3288<br>
 
$ mkdir ~/my-rk3288<br>
第34行: 第29行:
  
 
创建 ~/my-rk3288/02_source 作为源码目录<br>
 
创建 ~/my-rk3288/02_source 作为源码目录<br>
<span style="background:#CCCCCC">create ~/my-rk3288/02_source as source code directory</span><br>
 
  
 
$ mkdir ~/my-rk3288/02_source<br>
 
$ mkdir ~/my-rk3288/02_source<br>
第40行: 第34行:
  
 
创建 ~/my-rk3288/03_tools 作为工具目录<br>
 
创建 ~/my-rk3288/03_tools 作为工具目录<br>
<span style="background:#CCCCCC">create ~/my-rk3288/03_tools as tool directory</span><br>
 
  
 
$ mkdir ~/my-rk3288/03_tools<br>
 
$ mkdir ~/my-rk3288/03_tools<br>
第46行: 第39行:
  
 
2)复制源码包到开发主机中<br>
 
2)复制源码包到开发主机中<br>
<span style="background:#CCCCCC">copy source code package to the development host</span><br>
 
 
这一步骤自己采取相应的方式进行。<br>
 
这一步骤自己采取相应的方式进行。<br>
<span style="background:#CCCCCC">do it in this step in your own way。</span><br>
+
''提示:这里将网盘中“02_源码”复制到Linux开发主机的“~/my-rk3288/02_source”,将网盘中“03_工具”复制到Linux开发主机的“~/my-rk3288/03_tools”,将网盘中“01_应用”复制到Linux开发主机的“~/my-rk3288/01_application”。''<br>
  ''提示:这里将网盘中“02_源码”复制到Linux开发主机的“~/my-rk3288/02_source”,将网盘中“03_工具”复制到Linux开发主机的“~/my-rk3288/03_tools”,将网盘中“01_应用”复制到Linux开发主机的“~/my-rk3288/01_application”。''<br>
 
<span style="background:#CCCCCC">tip:this step is to copy “02_source code”from network disk to “~/my-rk3288/02_source”in development host, copy “03_tool”to “~/my-rk3288/03_tools, and copy “01_application”to “~/my-rk3288/01_application”。''in development host</span><br>
 
  
 
+
=== 解压源码包 ===
=== 解压源码包 (decompress source code package)===
 
 
1)解压u-boot源码和内核源码<br>
 
1)解压u-boot源码和内核源码<br>
<span style="background:#CCCCCC">decompress u-boot source code and kernel source code</span><br>
 
  
 
$ cd ~/my-rk3288/02_source<br>
 
$ cd ~/my-rk3288/02_source<br>
第63行: 第51行:
  
 
2)解压交叉编译工具<br>
 
2)解压交叉编译工具<br>
<span style="background:#CCCCCC">decompress cross compiler tool</span><br>
 
  
 
$ cd ~/my-rk3288/03_tools/<br>
 
$ cd ~/my-rk3288/03_tools/<br>
第70行: 第57行:
  
  
== '''开发环境配置(development environment configuration)'''==
+
== '''开发环境配置'''==
=== 安装需要的包 (install package needed)===
+
=== 安装需要的包===
 
1)更新源列表<br>
 
1)更新源列表<br>
<span style="background:#CCCCCC">list of updated source</span><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>
<span style="background:#CCCCCC">after update,it will look like below:</span><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>
<span style="background:#CCCCCC">install aptitude package management tool and ia32-libs</span><br>
 
 
''提示:如果编译主机的Linux是32位的,可以跳过此步骤。''<br>
 
''提示:如果编译主机的Linux是32位的,可以跳过此步骤。''<br>
<span style="background:#CCCCCC">tips:if Linux of compiler host is 32bit,you can skip this step。</span><br>
 
  
 
* 安装aptitude包管理工具<br>
 
* 安装aptitude包管理工具<br>
<span style="background:#CCCCCC">install aptitude package management tool</span><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>
<span style="background:#CCCCCC">install ia32-libs with aptitude</span><br>
 
 
 
$ sudo aptitude –y install ia32-libs<br>
 
$ sudo aptitude –y install ia32-libs<br>
 
''提示:下图为安装过aptitude和ia32-libs后,再次执行安装命令的截图。''<br>
 
''提示:下图为安装过aptitude和ia32-libs后,再次执行安装命令的截图。''<br>
<span style="background:#CCCCCC">tips:following is the screenshots with re-execution of installation command after installation of aptitude and ia32-libs is finished。</span><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>
<span style="background:#CCCCCC">install mkimage tool</span><br>
 
 
 
$ sudo apt-get -y install uboot-mkimage<br>
 
$ sudo apt-get -y install uboot-mkimage<br>
 
''提示:下图为安装过mkimage工具后,再次执行安装命令的截图。''<br>
 
''提示:下图为安装过mkimage工具后,再次执行安装命令的截图。''<br>
<span style="background:#CCCCCC">tips:following is the screenshots with re-execution of installation command after installation of mkimage tool is finished。</span><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="background:#CCCCCC">install ncurses-dev</span><br>
 
 
<span style="color: red">说明:make menuconfig对其具有依赖性质。</span><br>
 
<span style="color: red">说明:make menuconfig对其具有依赖性质。</span><br>
<span style="background:#CCCCCC"><span style="color: red">instruction:make menuconfig is dependent on it。</span></span><br>
 
 
$ sudo aptitude -y install ncurses-dev<br>
 
$ sudo aptitude -y install ncurses-dev<br>
  
 
''提示:下图为安装过ncurses-dev工具后,再次执行安装命令的截图。''<br>
 
''提示:下图为安装过ncurses-dev工具后,再次执行安装命令的截图。''<br>
<span style="background:#CCCCCC">tips:following is the screenshots with re-execution of installation command after installation of ncurses-dev tool is finished。</span><br>
 
 
[[文件: my-rk32-ek314build_2.2.1.6.jpg]]<br>
 
[[文件: my-rk32-ek314build_2.2.1.6.jpg]]<br>
  
  
= '''编译u-boot(compile u-boot)'''=
+
= '''编译u-boot'''=
 
----
 
----
== '''进入u-boot源码目录(enter u-boot source code directory)'''==
+
== '''进入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>
  
  
== '''使配置文件生效(validate configured file)'''==
+
== '''使配置文件生效'''==
 
* 执行source命令<br>
 
* 执行source命令<br>
<span style="background:#CCCCCC">execute source command</span><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>
第134行: 第106行:
  
 
* 查看编译配置<br>
 
* 查看编译配置<br>
<span style="background:#CCCCCC">view compiler configuration</span><br>
 
 
 
$ echo $ARCH<br>
 
$ echo $ARCH<br>
 
$ echo $CROSS_COMPILE<br>
 
$ echo $CROSS_COMPILE<br>
  
 
''提示:可看到ARCH和CROSS_COMPILE被设置''<br>
 
''提示:可看到ARCH和CROSS_COMPILE被设置''<br>
<span style="background:#CCCCCC">tips:you can see that ARCH和CROSS_COMPILE is configured</span><br>
 
 
[[文件: my-rk32-ek314build_3.2.2.jpg]]<br>
 
[[文件: my-rk32-ek314build_3.2.2.jpg]]<br>
  
 
* 验证交叉编译工具配置<br>
 
* 验证交叉编译工具配置<br>
<span style="background:#CCCCCC">verify cross compiler tool configuration</span><br>
 
 
 
$${CROSS_COMPILE}gcc –v<br>
 
$${CROSS_COMPILE}gcc –v<br>
 
''提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:''<br>
 
''提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:''<br>
<span style="background:#CCCCCC">tips:you can see version information of cross compiler tool shown on terminal after execution of command.as below:</span><br>
 
 
[[文件: my-rk32-ek314build_3.2.3.jpg]]<br>
 
[[文件: my-rk32-ek314build_3.2.3.jpg]]<br>
  
  
== '''清除u-boot配置(remove u-boot configuration)'''==
+
== '''清除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 configuration)'''==
+
== '''u-boot配置'''==
 
* 评估板及对应的 u-boot 编译配置:<br>
 
* 评估板及对应的 u-boot 编译配置:<br>
<span style="background:#CCCCCC">evaluation board and its corresponding u-boot compiler configuration:</span><br>
 
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
!评估板主型号<br>(evaluation board main model)
+
!评估板主型号
!CPU类型-内存容量<br>(CPU type-memory capacity)
+
!CPU类型-内存容量
!对应的u-boot配置<br>(corresponding u-boot configuration)
+
!对应的u-boot配置
 
|-
 
|-
|rowspan=1|MY-RK3288-EK314
+
|rowspan=1|MYZR-RK3288-EK314
|RK3288(四核)- 2G <br>(RK3288(quad. core)- 2G)
+
|RK3288(四核)- 2G
 
|rk3288_defconfig
 
|rk3288_defconfig
 
|}
 
|}
  
* MY-RK3288-EK314-2G配置示例:<br>
+
* MYZR-RK3288-EK314-2G配置示例:<br>
<span style="background:#CCCCCC">MY-RK3288-EK314-2G configuration example:</span><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>
  
  
== '''编译(compilation)'''==
+
== '''编译'''==
 
* 执行编译<br>
 
* 执行编译<br>
<span style="background:#CCCCCC">execute compilation</span><br>
 
 
 
$ make<br>
 
$ make<br>
 
''提示:这里为了提高编译速度,在make后面加了“-j4”。这里编译的Linux主机是双核4线程的,所以“-j”后面用了4,也就是采用4线程编译。“-j”后面的数字可以根据系统资源分配,但是不应该超过编译主机最大支持的线程数。''<br>
 
''提示:这里为了提高编译速度,在make后面加了“-j4”。这里编译的Linux主机是双核4线程的,所以“-j”后面用了4,也就是采用4线程编译。“-j”后面的数字可以根据系统资源分配,但是不应该超过编译主机最大支持的线程数。''<br>
<span style="background:#CCCCCC">Tips:To speed up the compilation,add "-j4" after make.The Linux host used to compile is dual-core ,4 threads .So "-j" is followed by 4, which takes 4 threads to compile. The number behind "-j" is allocated based on system resources,but It should not exceed the maximum threads the host support。</span><br>
 
 
[[文件: my-rk32-ek314build_3.5.1.jpg]]<br>
 
[[文件: my-rk32-ek314build_3.5.1.jpg]]<br>
  
 
* 编译完成<br>
 
* 编译完成<br>
<span style="background:#CCCCCC">complete compilation</span><br>
 
 
''提示:u-boot编译过程大概需要十几秒钟的时间。''<br>
 
''提示:u-boot编译过程大概需要十几秒钟的时间。''<br>
<span style="background:#CCCCCC">tips:u-boot compilation process will take a few minustes or so。</span><br>
 
 
[[文件: my-rk32-ek314build_3.5.2.jpg]]<br>
 
[[文件: my-rk32-ek314build_3.5.2.jpg]]<br>
  
  
== '''目标文件(target file)'''==
+
== '''目标文件'''==
 
编译完成后通过ls命令即可看到编译得到的目标文件RK3288UbootLoader_V2.30.10.bin<br>
 
编译完成后通过ls命令即可看到编译得到的目标文件RK3288UbootLoader_V2.30.10.bin<br>
<span style="background:#CCCCCC">you can get the compiled file u-boot.bin with ls command after compilation</span><br>
 
 
 
$ ls<br>
 
$ ls<br>
 
[[文件: my-rk32-ek314build_3.6.1.jpg]]<br>
 
[[文件: my-rk32-ek314build_3.6.1.jpg]]<br>
  
  
= '''编译内核(compile kernel)'''=
+
= '''编译内核'''=
 
----
 
----
== '''进入内核源码目录(enter kernel source directory)'''==
+
== '''进入内核源码目录'''==
 
$ 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>
  
  
== '''使配置文件生效(validate configured file)'''==
+
== '''使配置文件生效'''==
 
* 执行source命令<br>
 
* 执行source命令<br>
<span style="background:#CCCCCC">execute source command</span><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>
<span style="background:#CCCCCC">view compiler configuration</span><br>
 
 
 
$ echo $ARCH<br>
 
$ echo $ARCH<br>
 
$ echo $CROSS_COMPILE<br>
 
$ echo $CROSS_COMPILE<br>
  
 
''提示:可看到ARCH和CROSS_COMPILE被设置''<br>
 
''提示:可看到ARCH和CROSS_COMPILE被设置''<br>
<span style="background:#CCCCCC">tips:you can see that ARCH和CROSS_COMPILE is configured</span><br>
 
 
[[文件: my-rk32-ek314build_4.2.2.jpg]]<br>
 
[[文件: my-rk32-ek314build_4.2.2.jpg]]<br>
  
 
* 验证交叉编译工具配置<br>
 
* 验证交叉编译工具配置<br>
<span style="background:#CCCCCC">verify cross compiler tool configuration</span><br>
 
 
 
$ ${CROSS_COMPILE}gcc –v<br>
 
$ ${CROSS_COMPILE}gcc –v<br>
  
 
''提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:''<br>
 
''提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:''<br>
<span style="background:#CCCCCC">tips:you can see version information of cross compiler tool shown on terminal after execution of command.as below:</span><br>
 
 
[[文件: my-rk32-ek314build_4.2.3.jpg]]<br>
 
[[文件: my-rk32-ek314build_4.2.3.jpg]]<br>
  
  
== '''准备配置内核(prepare for kernel configuration)'''==
+
== '''准备配置内核'''==
 
* 清除内核配置<br>
 
* 清除内核配置<br>
<span style="background:#CCCCCC">remove kernel configuration</span><br>
 
  
 
$ make distclean<br>
 
$ make distclean<br>
第245行: 第191行:
  
 
* 生成.config文件<br>
 
* 生成.config文件<br>
<span style="background:#CCCCCC">generated.config file</span><br>
+
说明:MYZR-RK3288-EK314系列评估板使用的配置文件是rk3288-myzr-linux_defconfig<br>
 
 
说明:MY-RK3288-EK314系列评估板使用的配置文件是rk3288-myzr-linux_defconfig<br>
 
<span style="background:#CCCCCC">instructions:configuration files used for MY-RK3288-EK314 seires of evaluation board is rk3288-myzr-linux_defconfig</span><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(compile kernel)'''==
+
== '''编译内核zImage和设备树dtb'''==
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
!评估板主型号<br>(evaluation board main model)
+
!评估板主型号
!显示屏类型<br>(lcd type)
+
!显示屏类型
!对应的设备树配置<br>(corresponding device tree configuration)
+
!对应的设备树配置
 
|-
 
|-
|rowspan=3|MY-RK3288-EK314
+
|rowspan=3|MYZR-RK3288-EK314
 
|LVDS(1024X600)
 
|LVDS(1024X600)
 
|rk3288-myzr_rh568_lvds_linux.img
 
|rk3288-myzr_rh568_lvds_linux.img
第275行: 第218行:
  
 
* 编译(以下是LVDS屏)<br>
 
* 编译(以下是LVDS屏)<br>
<span style="background:#CCCCCC">compile (for example:lvds lcd)</span><br>
 
 
$ make -j8 rk3288-myzr_rh568_lvds_linux.img<br>
 
$ make -j8 rk3288-myzr_rh568_lvds_linux.img<br>
  
 
说明:截图中使用了8线程编译。<br>
 
说明:截图中使用了8线程编译。<br>
<span style="background:#CCCCCC">instruction:8 threads compilation is used in the screenshots。</span><br>
 
 
[[文件: my-rk32-ek314build_4.4.1.jpg]]<br>
 
[[文件: my-rk32-ek314build_4.4.1.jpg]]<br>
  
 
* 编译完成<br>
 
* 编译完成<br>
<span style="background:#CCCCCC">complete compilation</span><br>
 
 
[[文件: my-rk32-ek314build_4.4.2.jpg]]<br>
 
[[文件: my-rk32-ek314build_4.4.2.jpg]]<br>
  
 
* 目标文件<br>
 
* 目标文件<br>
<span style="background:#CCCCCC">target file</span><br>
 
 
 
arch/arm/boot/uImage即为编译得到的目标文件,使用ls命令可查看文件信息。<br>
 
arch/arm/boot/uImage即为编译得到的目标文件,使用ls命令可查看文件信息。<br>
<span style="background:#CCCCCC">arch/arm/boot/zImage is the target file through compilation,you can view the file information with ls command。</span><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>
  
  
== '''编译模块(compile module)'''==
+
== '''编译模块'''==
 
* 编译<br>
 
* 编译<br>
<span style="background:#CCCCCC">compile</span><br>
 
 
 
$ make modules<br>
 
$ make modules<br>
 
说明:截图中使用了4线程编译。<br>
 
说明:截图中使用了4线程编译。<br>
<span style="background:#CCCCCC">instruction:4 threads compilation is used in the screenshots。</span><br>
 
 
[[文件: my-rk32-ek314build_4.5.1.jpg]]<br>
 
[[文件: my-rk32-ek314build_4.5.1.jpg]]<br>
  
 
* 编译完成<br>
 
* 编译完成<br>
<span style="background:#CCCCCC">complete compilation</span><br>
 
 
[[文件: my-rk32-ek314build_4.5.2.jpg]]<br>
 
[[文件: my-rk32-ek314build_4.5.2.jpg]]<br>
  
 
* 目标文件<br>
 
* 目标文件<br>
<span style="background:#CCCCCC">target file</span><br>
 
 
编译完成后各模块的.ko文件位于代码所在的目录,通过find命令可以找出编译完成的模块,参考命令如下:<br>
 
编译完成后各模块的.ko文件位于代码所在的目录,通过find命令可以找出编译完成的模块,参考命令如下:<br>
<span style="background:#CCCCCC">.ko file of each module is in the directory where code is located after compilation ,you can find the module compiled with find command after compilation,refering command as below:</span><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(pack linux-boot.img)'''=
+
= '''打包linux-boot.img'''=
 
----
 
----
== '''编译rockchip-mkbootimg(compile rockchip-mkbootimg)'''==
+
== '''编译rockchip-mkbootimg'''==
 
1) 创建应用程序目录 <br>
 
1) 创建应用程序目录 <br>
<span style="background:#CCCCCC">create application directory</span><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>
第328行: 第256行:
  
 
2) 解压和编译rockchip-mkbootimg<br>
 
2) 解压和编译rockchip-mkbootimg<br>
<span style="background:#CCCCCC">unpack and compile rockchip-mkbootimg</span><br>
 
 
 
$ tar jxf rockchip-mkbootimg.tar.bz2<br>
 
$ tar jxf rockchip-mkbootimg.tar.bz2<br>
 
$ cd rockchip-mkbootimg/<br>
 
$ cd rockchip-mkbootimg/<br>
第336行: 第262行:
  
  
== '''打包initrd.img(pack initrd.img)'''==
+
== '''打包initrd.img'''==
 
1) 压缩为img格式 <br>
 
1) 压缩为img格式 <br>
<span style="background:#CCCCCC">compresse to img format</span><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>
第346行: 第270行:
  
 
2) 显示结果<br>
 
2) 显示结果<br>
<span style="background:#CCCCCC">show results</span><br>
 
 
[[文件: my-rk32-ek314build_5.2.2.jpg]]<br>
 
[[文件: my-rk32-ek314build_5.2.2.jpg]]<br>
  
== '''打包linux-boot.img(pack 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>
  
  
= '''文件系统(file system)'''=
+
= '''文件系统'''=
文件系统包位于网盘对应的镜像文件夹中。支持的文件系统类型及下载方式可参照《MY-RK3288-EK314 烧录手册》。<br>
+
文件系统包位于网盘对应的镜像文件夹中。支持的文件系统类型及下载方式可参照《MYZR-RK3288-EK314 烧录手册》。<br>
<span style="background:#CCCCCC">file system package is located in image file folder in the network disk。as to type of file system supported and way of download please refer to《MY-RK3288-EK314 buring guide》。</span><br>
 
 
 
  
= '''打包批量文件relase_update.img(pack relase_update.img)'''=
+
= '''打包批量文件relase_update.img'''=
 
----
 
----
== '''编译打包工具(compile packaging tools)'''==
+
== '''编译打包工具'''==
 
 
 
$ 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>
第371行: 第291行:
  
  
== '''新建文件夹和复制镜像(new folder and copy image)'''==
+
== '''新建文件夹和复制镜像'''==
 
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>
<span style="background:#CCCCCC">The file of "test/Image/" corresponds to the file of "Image\linux", rk3288box-3.10-uboot-ubuntu.parameter.txt is renamed to parameter, RESERVED is the empty file, RK3288UbootLoader_V2.30.10.bin corresponds to RKLoader.bin, update-script and The recover-script is copied by the burning tool. The contents of the package-file are renamed according to the corresponding file, as follows:</span><br>
 
 
[[文件: my-rk32-ek314build_7.2.1.jpg]]<br>
 
[[文件: my-rk32-ek314build_7.2.1.jpg]]<br>
  
第385行: 第304行:
  
  
== '''打包relase_update.img文件(pack relase_update.img)'''==
+
== '''打包relase_update.img文件'''==
 
$ cd Image/<br>
 
$ cd Image/<br>
 
$ afptool -pack . ../update.img<br>
 
$ afptool -pack . ../update.img<br>
第391行: 第310行:
 
$ 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>

2020年10月23日 (五) 08:33的最新版本

主机环境

ubuntu14.04(64bit),已经真机编译验证过。

准备源码包


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-rk32-ek314build 2.1.1.1.jpg

创建 ~/my-rk3288/02_source 作为源码目录

$ mkdir ~/my-rk3288/02_source
My-rk32-ek314build 2.1.1.2.jpg

创建 ~/my-rk3288/03_tools 作为工具目录

$ mkdir ~/my-rk3288/03_tools
My-rk32-ek314build 2.1.1.3.jpg

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
My-rk32-ek314build 2.1.2.1.jpg

2)解压交叉编译工具

$ cd ~/my-rk3288/03_tools/
$ tar jxf gcc-arm-eabi-4.6.tar.bz2
My-rk32-ek314build 2.1.2.2.jpg


开发环境配置

安装需要的包

1)更新源列表

$ sudo apt-get update
My-rk32-ek314build 2.2.1.1.jpg
更新完成后如下图所示:

My-rk32-ek314build 2.2.1.2.jpg

2)安装aptitude包管理工具和ia32-libs
提示:如果编译主机的Linux是32位的,可以跳过此步骤。

  • 安装aptitude包管理工具

$ sudo apt-get –y install aptitude
My-rk32-ek314build 2.2.1.3.jpg

  • 使用aptitude安装ia32-libs

$ sudo aptitude –y install ia32-libs
提示:下图为安装过aptitude和ia32-libs后,再次执行安装命令的截图。
My-rk32-ek314build 2.2.1.4.jpg

3)安装mkimage工具
$ sudo apt-get -y install uboot-mkimage
提示:下图为安装过mkimage工具后,再次执行安装命令的截图。
My-rk32-ek314build 2.2.1.5.jpg

4)安装ncurses-dev
说明:make menuconfig对其具有依赖性质。
$ sudo aptitude -y install ncurses-dev

提示:下图为安装过ncurses-dev工具后,再次执行安装命令的截图。
My-rk32-ek314build 2.2.1.6.jpg


编译u-boot


进入u-boot源码目录

$ cd ~/my-rk3288/02_source/rk32-myzr_uboot_2014.10/
My-rk32-ek314build 3.1.1.jpg


使配置文件生效

  • 执行source命令

$ source ~/my-rk3288/03_tools/gcc-arm-eabi-4.6-env
My-rk32-ek314build 3.2.1.jpg

  • 查看编译配置

$ echo $ARCH
$ echo $CROSS_COMPILE

提示:可看到ARCH和CROSS_COMPILE被设置
My-rk32-ek314build 3.2.2.jpg

  • 验证交叉编译工具配置

$${CROSS_COMPILE}gcc –v
提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:
My-rk32-ek314build 3.2.3.jpg


清除u-boot配置

$ make distclean
My-rk32-ek314build 3.3.1.jpg


u-boot配置

  • 评估板及对应的 u-boot 编译配置:
评估板主型号 CPU类型-内存容量 对应的u-boot配置
MYZR-RK3288-EK314 RK3288(四核)- 2G rk3288_defconfig
  • MYZR-RK3288-EK314-2G配置示例:

$ make rk3288_defconfig
My-rk32-ek314build 3.4.1.jpg


编译

  • 执行编译

$ make
提示:这里为了提高编译速度,在make后面加了“-j4”。这里编译的Linux主机是双核4线程的,所以“-j”后面用了4,也就是采用4线程编译。“-j”后面的数字可以根据系统资源分配,但是不应该超过编译主机最大支持的线程数。
My-rk32-ek314build 3.5.1.jpg

  • 编译完成

提示:u-boot编译过程大概需要十几秒钟的时间。
My-rk32-ek314build 3.5.2.jpg


目标文件

编译完成后通过ls命令即可看到编译得到的目标文件RK3288UbootLoader_V2.30.10.bin
$ ls
My-rk32-ek314build 3.6.1.jpg


编译内核


进入内核源码目录

$ cd ~/my-rk3288/02_source/rk32-myzr_kernel_3.10/
My-rk32-ek314build 4.1.1.jpg


使配置文件生效

  • 执行source命令

$ source ~/my-rk3288/03_tools/gcc-arm-eabi-4.6-env
My-rk32-ek314build 4.2.1.jpg

  • 查看编译配置

$ echo $ARCH
$ echo $CROSS_COMPILE

提示:可看到ARCH和CROSS_COMPILE被设置
My-rk32-ek314build 4.2.2.jpg

  • 验证交叉编译工具配置

$ ${CROSS_COMPILE}gcc –v

提示:执行命令后可以看到终端显示出交叉编译工具的版本信息。如下图:
My-rk32-ek314build 4.2.3.jpg


准备配置内核

  • 清除内核配置

$ make distclean
My-rk32-ek314build 4.3.1.jpg

  • 生成.config文件

说明:MYZR-RK3288-EK314系列评估板使用的配置文件是rk3288-myzr-linux_defconfig
$ make rk3288-myzr-linux_defconfig
My-rk32-ek314build 4.3.2.jpg


编译内核zImage和设备树dtb

评估板主型号 显示屏类型 对应的设备树配置
MYZR-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

说明:截图中使用了8线程编译。
My-rk32-ek314build 4.4.1.jpg

  • 编译完成

My-rk32-ek314build 4.4.2.jpg

  • 目标文件

arch/arm/boot/uImage即为编译得到的目标文件,使用ls命令可查看文件信息。
$ ls arch/arm/boot/zImage -la
My-rk32-ek314build 4.4.3.jpg


编译模块

  • 编译

$ make modules
说明:截图中使用了4线程编译。
My-rk32-ek314build 4.5.1.jpg

  • 编译完成

My-rk32-ek314build 4.5.2.jpg

  • 目标文件

编译完成后各模块的.ko文件位于代码所在的目录,通过find命令可以找出编译完成的模块,参考命令如下:
$ find -name *.ko
My-rk32-ek314build 4.5.3.jpg


打包linux-boot.img


编译rockchip-mkbootimg

1) 创建应用程序目录
$ mkdir ~/my-rk3288/01_application
$ cd ~/my-rk3288/01_application
My-rk32-ek314build 5.1.1.jpg

2) 解压和编译rockchip-mkbootimg
$ tar jxf rockchip-mkbootimg.tar.bz2
$ cd rockchip-mkbootimg/
$ make && sudo make install
My-rk32-ek314build 5.1.2.jpg


打包initrd.img

1) 压缩为img格式
$ cd ~/my-rk3288/01_application/
$ tar jxf initrd.tar.bz2
$ make -C initrd/
My-rk32-ek314build 5.2.1.jpg

2) 显示结果
My-rk32-ek314build 5.2.2.jpg

打包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-rk32-ek314build 5.3.1.jpg


文件系统

文件系统包位于网盘对应的镜像文件夹中。支持的文件系统类型及下载方式可参照《MYZR-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/
My-rk32-ek314build 7.1.1.jpg


新建文件夹和复制镜像

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的内容重新按对应的文件重命名,如下:
My-rk32-ek314build 7.2.1.jpg

$ 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/
My-rk32-ek314build 7.2.2.jpg


打包relase_update.img文件

$ cd Image/
$ afptool -pack . ../update.img
$ cd ..
$ img_maker -rk32 RKLoader.bin update.img relase_update.img
My-rk32-ek314build 7.3.1.jpg