@

一、git下载九鼎SDK

在ubuntu16中,通过:

git clone https://gitlab.com/9tripod/x3288_linux_new.git
git clone https://gitlab.com/9tripod/x3399_linux_new.git

获取自己开发板的SDK到Ubuntu中,获得根目录x3399_linux_new。

二、安装所需的软件包:

1、

sudo apt-get update

2、

sudo apt-get install git gnupg flex bison gperf libsdl1.2-dev libwxgtk3.0-dev build-essential zip curl zlib1g-dev gcc-multilib g++-multilib genromfs libc6-dev-i386 libncurses5-dev x11proto-core-dev libx11-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip gperf lsb-core lib32z1-dev lib32ncurses5-dev lzop liblz4-tool proot libssl1.0.0 libssl-dev genext2fs

三、安装 kernel 及 u-boot 编译需要依赖的软件包

apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip device-tree-compiler

四、安装文件系统需要依赖的软件包

apt-get install lib32stdc++-4.9-dev lib32z1

五、安装 Buildroot 编译需要依赖的软件包

apt-get install libfile-which-perl sed make binutils gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc libmpc3 git repo texinfo pkg-config cmake tree

六、编译uboot

在x3399_linux_new目录下执行 ./mk.sh -u

编译uboot后的打印:

--------pack uboot.img--------

load addr is 0x200000!

pack input /test/doc/x3399/x3399_linux_new/u-boot/u-boot.bin

pack file size: 955619

crc = 0xf23a6d50

pack uboot.img success!

pack uboot okay! Input: /test/doc/x3399/x3399_linux_new/u-boot/u-boot.bin

--------pack loader--------

out:rk3399_loader_v1.23.119.bin

fix opt:rk3399_loader_v1.23.119.bin

merge success(rk3399_loader_v1.23.119.bin)

/test/doc/x3399/x3399_linux_new/u-boot

pack loader okay! Input: /test/doc/x3399/x3399_linux_new/rkbin/RKBOOT/RK3399MINIALL.ini

--------pack trust.img--------

out:trust.img

merge success(trust.img)

/test/doc/x3399/x3399_linux_new/u-boot

pack trust okay! Input: /test/doc/x3399/x3399_linux_new/rkbin/RKTRUST/RK3399TRUST.ini

'/test/doc/x3399/x3399_linux_new/u-boot/rk3399_loader_v1.23.119.bin' -> '/test/doc/x3399/x3399_linux_new/output/MiniLoaderAll.bin'

'/test/doc/x3399/x3399_linux_new/u-boot/uboot.img' -> '/test/doc/x3399/x3399_linux_new/output/uboot.img'

'/test/doc/x3399/x3399_linux_new/u-boot/trust.img' -> '/test/doc/x3399/x3399_linux_new/output/trust.img'

七、编译kernel

x3399_linux_new目录下执行./mk.sh -k

编译kernel后的打印:

Pack to resource.img successed! Image: resource.img (with

x3399-linux.dtb logo.bmp logo_kernel.bmp) is ready Image: boot.img

(with Image resource.img) is ready Image: zboot.img (with Image.lz4

resource.img) is ready

'/test/doc/x3399/x3399_linux_new/kernel/boot.img' ->

'/test/doc/x3399/x3399_linux_new/output/boot.img'

7.1 单独编译内核的命令:

执行./mk.sh -k等效于执行以下几个指令:

1、在 x3399_linux_new/kernel/ 执行:

make ARCH=arm64 x3399_linux_defconfig CROSS_COMPILE=aarch64-linux-gnu-
make ARCH=arm64 x3399-linux.img CROSS_COMPILE=aarch64-linux-gnu- -j4

2、在 x3399_linux_new/ 执行:

cp -v kernel/boot.img output/boot.img

最后的boot.img就是烧写用的镜像。

7.2 命令解析

对7.1中的指令解析如下:

make ARCH=arm64 x3399-linux.img CROSS_COMPILE=aarch64-linux-gnu- -j4

上面这句指令进行的操作由x3399_linux_new/kernel/arch/arm64/Makefile决定的,等效于:

make rockchip/x3399-linux.dtb kernel.img//make dtb和img

上面这句指令又可以拆为以下3部分指令:

//1
make rockchip/x3399-linux.dts//得到 x3399-linux.dtb scripts/mkkrnlimg arch/arm64/boot/Image kernel.img//Image打包为kernel.img
//2
scripts/resource_tool /arch/arm64/boot/dts/rockchip/x3399-linux.dtb//打包设备树和图片等 生成resource.img
//3
scripts/mkbootimg --kernel arch/arm64/boot/Image --ramdisk ramdisk.img --second resource.img -o boot.img//打包三个镜像为boot.img

八、编译recovery

x3399_linux_new目录下执行./mk.sh -r

九、编译文件系统

x3399_linux_new目录下执行 ./mk.sh -b

十、整体一起编译

x3399_linux_new目录下执行./mk.sh -a

会编译出以上所有镜像。

十一、打包成统一镜像

x3399_linux_new目录下执行./mk.sh -U

update-linux.img 为整个 QT 系统升级文件的单一映像,包括了 uboot,内核,文件系统等。

注意,生成 update-linux.img 的先决条件是已经成功编译了 uboot,内核和 linux 文件系统,缺一不可。

十二、各镜像含义

MiniLoaderAll.bin:uboot 镜像文件,复制自 uboot 生成的“loader.bin”文件。

parameter.txt: 分区文件

uboot.img:uboot 镜像文件,由 uboot 编译得到的 bin 文件打包得到。

trust.img:uboot 镜像文件,同样由 rk 提供的 bin 文件打包得到,uboot.img 和MiniLoaderAll.bin 以及 trust.img 的生成打包过程,有兴趣可通过研究编译脚本理解其原理。

misc.img:分区镜像,负责启动模式切换和急救模式的参数传递。

recovery.img:急救模式映像。

boot.img:内核镜像文件,将内核 Image 文件和 resource.img 打包得到,这一点和 Android的 boot.img 不同。

rootfs.img:文件系统分区镜像,对应 rootfs 分区,这里可烧写 SDK 编译得到的 Linux系统,也可烧写 Ubuntu 或 debian 文件系统等。

oem.img:用于给厂家使用,存放厂家的 APP 或数据。只读。oem 的生成可参考编译脚本,生成的源目录见 SDK 源码的 device/rockchip/oem/目录。

userdata.img:存放用户数据,用户可将需要的文件放置到 device/rockchip/userdata/目录下,然后打包烧写。在板子启动的系统中,此分区占用剩余的空间。

十三、程序下载

对于烧写过boot各个镜像的开发板,可以单独下载某一part的镜像。

13.1 进入loader模式

板子开机状态下,按住VOL+按键不松手,再按一下RESET键,等到瑞芯微开发工具提示“发现一个LOADER设备”,松开VOL+

13.2 设备分区表

点击“设备分区表”,可获取板子EMMC存储镜像地址信息,也就是分区信息。

13.3 烧写

点击路径后面那一列,选择你需要烧写的镜像,点击“执行”,会下载镜像到对应地址中。烧写完成会自动重启。

九鼎RK3399笔记一:Linux平台手册的更多相关文章

  1. 笔记整理--Linux平台MYSQL的C语言

    Linux平台MYSQL的C语言API全列表 - 第三只眼的专栏 - 博客频道 - CSDN.NET - Google Chrome (2013/8/18 22:28:58)   Linux平台MYS ...

  2. linux平台下防火墙iptables原理(转)

    原文地址:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646466.html iptables简介 netfilter/iptables( ...

  3. Thrift在Windows及Linux平台下的安装和使用示例

    本文章也同时发表在个人博客Thrift在Windows及Linux平台下的安装和使用示例上. thrift介绍 Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的R ...

  4. linux笔记:linux软件包管理,软件安装位置

    linux软件包简介 软件包分类:1.源码包(用C语言等编写的源代码,没有进行编译):脚本安装包(对源码包进行了安装优化的源码包)优点:开源,可修改可以自由选择所需的功能编译安装,更适合自己的系统,稳 ...

  5. 笔记整理--Linux多线程

    Unix高级环境编程系列笔记 (2013/11/17 14:26:38) Unix高级环境编程系列笔记 出处信息 通过这篇文字,您将能够解答如下问题: 如何来标识一个线程? 如何创建一个新线程? 如何 ...

  6. Linux平台网络配置-----C语言

    上一期我们已经介绍了VM虚拟机安装CentOS 7系统的步骤过程,这次就来看看使用Linux对初学者有什么障碍? 零基础学习C语言---Linux平台配置网络 用VM虚拟机启动Linux系统时出现的问 ...

  7. Linux平台搭建-----C语言

    下面内容是新手上路,各位高手路过勿喷!因为我第一次发布,可能页面设置或者其他做的不好,还请见谅~该文章只是作为我学习C语言的笔记以及记录学习进程的. 零基础学习C语言---搭建Linux平台开发环境 ...

  8. shell 脚本实战笔记(9)--linux自动批量添加用户

    前言: 添加linux用户帐号,这个相对简单, 在面对集群, 许多机器的时候, 我们该如何去做和实现? 这篇短文, 简单讲解一些思路, 尽可能地涉及周边的一些知识点. 不光是运维人员会面临这个问题, ...

  9. Linux平台Boost的编译方法

    本博客(http://blog.csdn.net/livelylittlefish)贴出作 者(三二一@小鱼)相关研究.学习内容所做的笔记,欢迎广大朋友指正! Linux平台Boost的编译方法 Bo ...

随机推荐

  1. FLink迟到数据的处理之三

    Flink迟到的数据更新窗口计算结果,窗口销毁后的迟到数据输出到测输出流 主程序: //TODO 使用迟到的数据更新窗口的计算结果 public static void main(String[] a ...

  2. Java四舍五入保留n位小数的常用写法

    1. 使用BigDecimal double v = 1.233; double res = new BigDecimal(v).setScale(2, RoundingMode.HALF_UP).d ...

  3. 使用VMware安装win10虚拟机

    (1)打开VMware: (2)打开左上角的文件,点击新建虚拟机: (3)选择典型,下一步: (4)选择稍后安装操作系统,下一步: (5)选择win10×64,下一步: (6)可随意修改虚拟机名称,位 ...

  4. 面向过程编程+模块&导入

    面向过程编程+模块&导入 一.面向过程编程(理论+简单代码) 面向过程编程就好比在设计一条产品流水线 首先我们来认识下,什么是面向过程?如果咬文嚼字的话可以这样来理解,面向过程就是面向解决问题 ...

  5. Redis 源码简洁剖析 12 - 一条命令的处理过程

    命令的处理过程 Redis server 和一个客户端建立连接后,会在事件驱动框架中注册可读事件--客户端的命令请求.命令处理对应 4 个阶段: 命令读取:对应 readQueryFromClient ...

  6. 4、架构--NFS实践、搭建web服务、文件共享

    笔记 1.晨考 1.数据备份的方式有哪些 全量和增量 2.数据备份的命令有哪些,都有哪些优点缺点 cp : 本地,全量复制 scp :远程,全量复制 rsync :远程,增量复制 3.rsync的参数 ...

  7. 日行一算(Table-文字输出)

    题目 +---+---+---+ | | | | +---+---+---+ | | | | +---+---+---+ | | | | +---+---+---+ 题目描述 上图是一个Mysql查询 ...

  8. C# 给Word每一页设置不同图片水印

    Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法.下面,将以C#代码为例,对W ...

  9. 零基础自学Python十天的时候,写的一款猜数字小游戏,附源码和软件下载链接!

    自学一门语言最重要的是要及时给自己反馈,那么经常写一些小程序培养语感很重要,写完可以总结一下程序中运用到了哪些零散的知识点. 本程序中运用到的知识点有: 1.输入输出函数 (input.print) ...

  10. RENIX流量发送模式——网络测试仪实操

    信而泰的RENIX平台支持5种传输模式, 如下图所示. 模式一: continuous Continuous:连续发送流 持续发送方式是默认的发送模式,  它不会自动的停止, 会一直发送, 直到用户手 ...