瑞芯微Rockchip开发者社区
登录
直播中
他在笑
9年用户
723经验值
擅长:可编程逻辑 电源/新能源 制造/封装
私信
关注
[问答]
Linux平台手册的知识点汇总,绝对实用
开启该帖子的消息推送
RK3399
Linux平台手册的知识点汇总,绝对实用
回帖
(1)
陈荣锦
2022-3-7 09:33:14
一、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 l***-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 单独编译内核的命令:
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
x3399_linux_new/
cp -v kernel/boot.img output/boot.img
最后的boot.img就是烧写用的镜像
7.2 命令解析
make ARCH=arm64 x3399-linux.img CROSS_COMPILE=aarch64-linux-gnu- -j4
这句指令进行的操作由x3399_linux_new/kernel/arch/arm64/Makefile决定的:
make x3399-linux.img
==
make rockchip/x3399-linux.dtb kernel.img//两个make命令
//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 烧写
点击路径后面那一列,选择你需要烧写的镜像,点击“执行”,会下载镜像到对应地址中。烧写完成会自动重启。
一、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 l***-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 单独编译内核的命令:
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
x3399_linux_new/
cp -v kernel/boot.img output/boot.img
最后的boot.img就是烧写用的镜像
7.2 命令解析
make ARCH=arm64 x3399-linux.img CROSS_COMPILE=aarch64-linux-gnu- -j4
这句指令进行的操作由x3399_linux_new/kernel/arch/arm64/Makefile决定的:
make x3399-linux.img
==
make rockchip/x3399-linux.dtb kernel.img//两个make命令
//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 烧写
点击路径后面那一列,选择你需要烧写的镜像,点击“执行”,会下载镜像到对应地址中。烧写完成会自动重启。
举报
更多回帖
rotate(-90deg);
回复
相关问答
RK3399
外部中断的
知识点
汇总
,
绝对
实用
2022-01-21
859
STM32时钟分频系数的
知识点
汇总
,
绝对
实用
2021-12-15
2275
STM32端口复用与串口通信得
知识点
汇总
,错过
绝对
后悔
2021-12-15
935
JTAG调试的
知识点
汇总
,
绝对
实用
2021-12-24
910
STM32定时器中断的
知识点
汇总
,
绝对
实用
2022-01-20
723
4412arm中断的
知识点
汇总
,
绝对
实用
2022-02-07
1209
GDB的
知识点
汇总
,
绝对
实用
2021-12-24
842
STM32 USART奇偶校验控制的
知识点
汇总
,错过
绝对
后悔
2021-12-10
1356
STM32时钟树的基础
知识点
汇总
,
绝对
实用
2022-02-14
1014
三极管的
知识点
汇总
,
绝对
实用
2022-02-15
1129
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分