基于RK3588 ubuntu系统的交叉编译方式

一、rk3588支持buildroot和ubuntu作为rootfs。

如果我们使用ubuntu作为rootfs,

1、选择官网下载ubuntu rootfs,以下为下载路径

此ubuntu roofs,是在ubuntu20,04基础上增加相应rk的库文件移植所得(如:VPU GPU,多媒体等硬件支持功能)

创建 Ubuntu 根文件系统 — Firefly Wiki

Firefly | 让科技更简单,让生活更智能

基于RK3588 ubuntu系统的交叉编译方式_第1张图片

 2、由于yocto的工具链和ubuntu使用的工具链有一定差异,主要是glibc的不同,导致编译出来依赖不一致,故如果使用ubuntu作为rootfs,那么必须使用ubuntu的编译工具进行编译。参考以下链接:

创建 Ubuntu 根文件系统 — Firefly Wi

将rootfs.img先进行挂载,在进行chroot 使用qemu切换环境编译后,此时即可以进行编译,也就是此可以在开发板上编译的,可能在x86桌面ubuntu上进行编译,

sudo apt-get install qemu-user-static
sudo cp /usr/bin/qemu-aarch64-static temp/usr/bin/
sudo cp -b /etc/resolv.conf temp/etc/resolv.conf

https://doc.embedfire.com/linux/imx6/base/zh/latest/building_image/building_rootfs.html?highlight=buildroot

定制适用于ARM平台的Ubuntu rootfs(根文件系统)_szembed的博客-CSDN博客

ch-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 mount -o bind /dev/pts ${2}dev/pts        
    sudo chroot ${2}
}
function umnt(){
    echo "UNMOUNTING"
    sudo umount ${2}proc
    sudo umount ${2}sys
    sudo umount ${2}dev/pts
    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 bothparameters were missing"
    echo ""
    echo "1'st parameter can be one ofthese: -m(mount) OR -u(umount)"
    echo "2'nd parameter is the full pathof rootfs directory(with trailing '/')"
    echo ""
    echo "For example: ch-mount -m/media/sdcard/"
    echo ""
    echo 1st parameter : ${1}
    echo 2nd parameter : ${2}
fi

mount rootfs.img tmp_ubuntufs

./ch-mount.sh -m tmp_ubuntufs

1、此时将进入qemu的ubuntu文件系统,此时在此界面可以进行编译或者修改文件系统,增加ros等功能。

2、修改后,使用exit 退出此文件系统。

./ch-mount.sh -u tmp_ubuntufs    #卸载挂载信息

umount   mp_ubuntufs  #卸载文件系统

此时即可以进行ubuntu文件系统的修改

你可能感兴趣的:(RK3588驱动系统开发,linux)