文档更新说明
免责声明
本文档虽力求准确,但可能存在错误或遗漏,用户需谨慎评估适用性;我们保留随时修订的权利,且不保证旧版本内容的有效性,为了得到最新版本的产品信息,请定时访问立创开发板官网进行资料的更新下载。本文档版权及最终解释权归深圳嘉立创科技集团股份有限公司所有。请务必注意以上声明,自行评估风险并决策,我们对使用本文档产生的任何问题概不负责。感谢您的包容与支持。
前言
下面我们来介绍泰山派开发板的Linux系统SDK以及编译方法,同时大家也可以参考:
《Rockchip_Developer_Guide_Linux_Software_CN.pdf》
此文档非常详细的讲解瑞芯微LINUX的SDK编译以及使用。
《Rockchip_Developer_Guide_Linux_Software_CN.pdf》下载
📌 在 下载中心
->百度网盘
->第04章.【立创·泰山派】参考资料
->【瑞芯微】官方资料
->Linux
文件夹中
WARNING
📌 如果你是新手非常建议跟着训练营的教程【胖妞手机】来会更加详细!
准备工作
电脑配置:编译Linux系统相比Android对电脑的要求就没那么高了,下面是我的电脑配置,理论上比我配置差都可以编译,具体根据大家实际情况来。
虚拟机配置: ubnutu版本信息:NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
2
3
4
5
6
7
8
9
10
11
12
下载SDK
开发板资料我们通过网盘提供,其中SDK资料目录如下大家自行下载:
- 上面目录中的xxxxxxxx表示日期
- 目录中的SDK会不定期更新,大家每次下载的都是最新的
- Linux系统非常庞大所以提供的SDK也可能存在BUG,如果大家发现可以及时联系我们
将tspi_linux_sdk_xxxxxxxx.tar.gz 上传到ubuntu虚拟机中,目录随便大家自己定但目录路径不能包含中文,且需保证至少有100G的容量,最终编译完成后整个SDK大小会到80G左右,上传的方式有很多种比如samba、共享文件夹、sftp等这里使用sftp上传。
解压SDK
在tspi_linux_sdk_xxxxxxxx.tar.gz所在的目录运行解压命令:
tar -zxvf tspi_linux_sdk_xxxxxxxx.tar.gz
命令解释:
tar:解压命令 。
-z:使用 gzip 压缩算法进行解压或压缩。
-x:表示提取(解压)文件。
-v:显示详细的操作信息,即在解压过程中显示文件列表。
-f:指定要操作的文件名。
tspi_linux_sdk_xxxxxxxx.tar.gz:被解压对象。
2
3
4
5
6
7
8
解压
tar -zxvf tspi_linux_sdk_20230916.tar.gz
解压后得到tspi_android_sdk_20230909:
ls
结果
tspi_linux_sdk_20230916 tspi_linux_sdk_20230916.tar.gz
SDK目录解读
进入刚刚解压好的tspi_linux_sdk_20230916
cd tspi_linux_sdk_20230916
查看SDK目录内容如下:
tspi_linux_sdk_20230916# ls
app buildroot debian envsetup.sh IMAGE Makefile prebuilts rkflash.sh tools yocto
br.log build.sh device external kernel mkfirmware.sh rkbin rockdev u-boot
2
3
app
: 存放上层应⽤ app,主要是 qcamera/qfm/qplayer/settings 等⼀些应⽤程序。buildroot
: 基于 buildroot (2018.02-rc3) 开发的根⽂件系统。debian
: 基于 debian 10 开发的根⽂件系统,⽀持部分芯⽚。device/rockchip
: 存放各芯⽚板级配置和 Parameter ⽂件,以及⼀些编译与打包固件的脚本和预备⽂件。IMAGE
: 存放每次⽣成编译时间、XML、补丁和固件⽬录。external
: 存放第三⽅相关仓库,包括⾳频、视频、⽹络、recovery 等。kernel
: 存放 kernel 4.4 或 4.19 开发的代码。prebuilts
: 存放交叉编译⼯具链。rkbin
: 存放 Rockchip 相关的 Binary 和⼯具。rockdev
: 存放编译输出固件。tools
: 存放 Linux 和 Windows 操作系统环境下常⽤⼯具。u-boot
: 存放基于 v2017.09 版本进⾏开发的 uboot 代码。yocto
: 基于 yocto gatesgarth 3.2 开发的根⽂件系统,⽀持部分芯⽚。
编译环境配置
这里我们演示直接在ubuntu18.04下编译,因为大家的编译环境都有所不同可能会有意想不到的错误,如果你的环境无法编译通过可以使用Docker环境进行编译参考【Docker】编译环境搭建,如果你使用的是Docker方式可以跳过本章节自己进行SDK编译 编译Linux SDK需要安装下列库:(注意不是全部复制粘贴)
sudo apt-get install git ssh make gcc libssl-dev liblz4-tool expect \
g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \
qemu-user-static live-build bison flex fakeroot cmake gcc-multilib \
g++-multilib unzip device-tree-compiler ncurses-dev
2
3
4
运行如下:
泰山派SDK板级配置
开始编译前需要先设置泰山派的板级配置,配置方法有两种: 方法一:
./build.sh device/rockchip/rk356x/BoardConfig-rk3566-tspi-v10.mk
运行如下:
方法二:./build.sh lunch
运行命令选择BoardConfig-rk3566-tspi-v10.mk,这里序列号是3,所以我们选择3并回车
查看配置是否生效 ./build.sh -h kernel
运行后可以看到配置文件正是tisp,证明配置生效
编译buildroot
全编译
选择buildrot操作系统
export RK_ROOTFS_SYSTEM=buildroot
运行自动全编译命令
./build.sh all # 只编译模块代码(u-Boot,kernel,Rootfs,Recovery)
# 需要再执⾏./mkfirmware.sh 进⾏固件打包
2
第一次编译需要选择电源
编译成功:
虽然编译完成了但是我们还需在执行固件打包./mkfirmware.sh
root@lckfb:/home/lckfb_tspi/linux/tspi_linux_sdk_20230916/rockdev# ls
boot.img misc.img parameter.txt rootfs.img update.img
MiniLoaderAll.bin oem.img recovery.img uboot.img userdata.img
2
3
下载
单独编译
u-boot编译
#U-Boot编译命令
./build.sh uboot
#查看U-Boot详细编译命令
./build.sh -h uboot
2
3
4
编译成功输出:
kernel编译
#Kernel编译命令
./build.sh kernel
#查看Kernel详细编译命令
./build.sh -h kernel
2
3
4
编译成功输出如下:
Recovery编译命令
#Recovery编译命令
./build.sh recovery
#查看Recovery详细编译命令
./build.sh -h recovery
2
3
4
注:Recovery是⾮必需的功能,有些板级配置不会设置
buildroot编译
Rootfs 编译 进⼊⼯程⽬录根⽬录执⾏以下命令⾃动完成 Rootfs 的编译及打包:
./build.sh rootfs
编译后在 Buildroot ⽬录 output/rockchip_rk3566/images下⽣成 rootfs.ext4。
模块编译 ⽐如 qplayer 模块,常⽤相关编译命令如下:
- 编译 qplayer
SDK$make qplayer
- 重编 qplayer
SDK$make qplayer-rebuild
- 删除 qplayer
SDK$make qplayer-dirclean
或者
SDK$rm -rf /buildroot/output/rockchip_rk3566/build/qlayer-1.0
2
3
编译Debian
选择debian操作系统
export RK_ROOTFS_SYSTEM=debian
运行自动全编译命令
./build.sh all # 只编译模块代码(u-Boot,kernel,Rootfs,Recovery)
# 需要再执⾏./mkfirmware.sh 进⾏固件打包
2
编译成功:
虽然编译完成了但是我们还需在执行固件打包./mkfirmware.sh
root@lckfb:/home/lckfb_tspi/linux/tspi_linux_sdk_20230916/rockdev# ls
boot.img misc.img parameter.txt rootfs.img update.img
MiniLoaderAll.bin oem.img recovery.img uboot.img userdata.img
2
3
下载
下载分散镜像
烧录工具使用请参考【立创·泰山派RK3566开发板】镜像烧录教程,导入配置文件:
并把路径改成自己编译后所生成的文件路径
下载update.img
如果需要下载update.img的话需要运行下面命令生成或者更新update.img
./build.sh updateimg
Ubuntu 根文件系统制作
方法一:手动制作ubuntu18.04:
准备工作
安装 qemu
在 Linux PC 主机上安装模拟器:
sudo apt-get install qemu-user-static
下载和解压 ubuntu-core
下载地址:ubuntu cdimg ,选择下载 ubuntu-base-18.04.5-base-arm64.tar.gz
。
下载完之后,创建临时文件夹并解压根文件系统:
filex@filex-virtual-machine:~/ubuntu18_4$ mkdir temp
filex@filex-virtual-machine:~/ubuntu18_4$ tar -xpf ubuntu-base-18.04.5-base-arm64.tar.gz -C temp/
2
修改根文件系统
准备工作
准备网络:
filex@filex-virtual-machine:~/ubuntu18_4$ cp -b /etc/resolv.conf temp/etc/resolv.conf
准备 qemu:
filex@filex-virtual-machine:~/ubuntu18_4$ cp /usr/bin/qemu-aarch64-static temp/usr/bin/
18.4进入根文件系统进行操作:
filex@filex-virtual-machine:~/ubuntu18_4$ vim rootfs-mount.sh
#!/bin/bash
function mnt() {
echo "MOUNTING"
sudo mount -t proc /proc ${2}/proc
sudo mount -t sysfs /sys ${2}/sys
sudo mount -o bind /dev ${2}/dev
sudo chroot ${2}
}
function umnt() {
echo "UNMOUNTING"
sudo umount ${2}/proc
sudo umount ${2}/sys
sudo umount ${2}/dev
}
if [ "$1" == "-m" ] && [ -n "$2" ] ;
then
mnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
umnt $1 $2
else
echo ""
echo "Either 1'st, 2'nd or both parameters were missing"
echo ""
echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"
echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
echo ""
echo "For example: ch-mount -m /media/sdcard/"
echo ""
echo 1st parameter : ${1}
echo 2nd parameter : ${2}
fi
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
添加权限
filex@filex-virtual-machine:~/ubuntu18_4$ sudo chmod +x rootfs-mount.sh
进入
filex@filex-virtual-machine:~/ubuntu18_4$ sudo bash rootfs-mount.sh -m temp
以上是18.04.5需要这么操作否则apt-get update会出现错误
Get:4 http://ports.ubuntu.com/ubuntu-ports bionic-security InRelease [88.7 kB]
0% [1 InRelease gpgv 242 kB]gpgv: Signature made Thu Apr 26 23:38:40 2018 UTC
gpgv: using RSA key 3B4FE6ACC0B21F32
gpgv: Good signature from "Ubuntu Archive Automatic Signing Key (2012)
autolinkftpmaster@ubuntu.comautolink
"
terminate called after throwing an instance of 'std::runtime_error'
what(): random_device::random_device(const std::string&)
qemu: uncaught target signal 6 (Aborted) - core dumped
Aborted (core dumped)
2
3
4
5
6
7
8
9
10
11
更新及安装(这个时候是在vmware 的ubuntu中虚拟机执行我们arm上的ubuntu)
root@filex-virtual-machine:/# apt-get update
root@filex-virtual-machine:/# apt upgrade
预制自己需要的功能
root@filex-virtual-machine:/# apt install vim
root@filex-virtual-machine:/# apt install git
2
apt-get install ssh
apt-get install ethtool
apt-get install rsyslog
apt-get install bash-completion
apt-get install htop
apt-get install net-tools
apt-get install wireless-tools
apt-get install network-manager
apt-get install iputils-ping
--------下面建议必须装---------
apt-get install vim #语言包
apt-get install language-pack-en-base #这个必须要否则无法生成/etc/network/interfaces配网文件
apt-get install ifupdown
#ping
apt-get install inetutils-ping #串口
apt-get install cutecom #录音
apt-get install audacity #摄像头
apt-get install v4l-utils
apt-get install cheese #浏览器
apt-get install chromium-browser
wifi
apt-get install wpasupplicant
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
安装 xubuntu:(如果不需要界面可以不执行这一步)
root@filex-virtual-machine:/# apt-get install xubuntu-desktop
配置网络
注意!!
校园网这类的网络要联网的话只能用NAT模式链接!
vim /etc/network/interfaces
source-directory /etc/network/interfaces.d #以太网
auto eth0
iface eth0 inet dhcp
#wifi
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_config.conf
2
3
4
5
6
7
8
vim /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114
2
3
添加用户及设置密码
添加用户:
root@filex-virtual-machine:/# useradd -s '/bin/bash' -m -G adm,sudo lckfb
给用户设置密码:
root@filex-virtual-machine:/# passwd tspi
给root用户设置密码:
root@filex-virtual-machine:/# passwd root
修改完自己的根文件系统就可以退出了。
root@filex-virtual-machine:/# exit
filex@filex-virtual-machine:~/ubuntu18_4$ sudo bash rootfs-mount.sh -u temp
制作根文件系统
查看我们制作的temp大小
filex@filex-virtual-machine:~/ubuntu18_4$ sudo du -h --max-depth=1
3.5G ./temp
4.0K ./rootfs
3.5G .
2
3
4
制作自己的根文件系统,大小依据自己的根文件系统而定,注意依据 temp 文件夹的大小来修改 count 值,因为我们这里的大小为3.5G所以count=5000*bs=1M保证大于我们的temp
mkdir rootfs
dd if=/dev/zero of=linuxroot.img bs=1M count=6000
mkfs.ext4 linuxroot.img
sudo mount linuxroot.img rootfs/
sudo cp -rfp temp/* rootfs/
sudo umount rootfs/
e2fsck -p -f linuxroot.img
resize2fs -M linuxroot.img
2
3
4
5
6
7
8
这样 linuxroot.img
就是最终的根文件系统映像文件了。
下载
烧录工具使用请参考【立创·泰山派RK3566开发板】镜像烧录教程,导入配置文件:
并把路径改成自己编译后所生成的文件路径
这里比较特殊的点是rootfs
需要改成上面制作好的ubuntu文件系统linuxroot.img
路径