【嵌入式】ARM原生编译并烧录瑞芯微嵌入式linux(从零到一)
·
宿主机:MacBook Pro M3 Max
虚拟机:Orbstack Ubuntu 24.04 LTS ARM64版本
设备:rockchip rk3566
uboot、kernel: rockchip官方SDK
rootfs:ubuntu24.04.4 base
一、环境配置(虚拟机操作)
执行以下命令安装依赖,确保编译环境正常:
sudo apt update
sudo apt upgrade -y
sudo apt install -y git build-essential bc bison flex libssl-dev libncurses5-dev device-tree-compiler checkinstall libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev swig lz4 wget
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
tar -xvf Python-2.7.18.tgz
cd Python-2.7.18
./configure --enable-optimizations CFLAGS=-fPIC
sudo make altinstall
cd ..
sudo rm -rf Python-2.7.18
# 建立python2软链接,解决部分工具依赖问题
sudo ln -s /usr/local/bin/python2.7 /usr/bin/python
sudo ln -s /usr/local/bin/python2.7 /usr/bin/python2
二、下载Rockchip官方SDK(虚拟机操作)
cd ~
git clone https://github.com/rockchip-linux/u-boot.git
git clone https://github.com/rockchip-linux/kernel.git --depth 1 --branch develop-6.6
#具体内核版本可自选
git clone https://github.com/rockchip-linux/rkbin.git
三、制作U-Boot(虚拟机操作)
cd ~/u-boot
vim include/command.h
// 原代码
int cmd_process(int flag, int argc, char * const argv[],
// 修改后
enum command_ret_t cmd_process(int flag, int argc, char * const argv[],
vim common/edid.c
// 原代码
u8 dbl, hdmi_len, video_len = 0;
// 修改后
u8 dbl, hdmi_len = 0, video_len = 0;
./make.sh rk3566 CROSS_COMPILE=aarch64-linux-gnu-
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make u-boot.itb -j32
# 说明:-j32可根据宿主机性能调整,建议不超过24,避免资源占用过高
四、制作Kernel(虚拟机操作)
cd ~/kernel
# 说明:需提前准备tspi相关DTS文件,执行以下命令拷贝并修改波特率
cp tspi* ./arch/arm64/boot/dts/rockchip/* # 修改泰山派debug波特率为115200并拷贝
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make rockchip_linux_defconfig
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make tspi-rk3566-user-v10-linux.img -j32
五、制作Rootfs(虚拟机操作)
cd ~
sudo wget https://cdimage.ubuntu.com/ubuntu-base/releases/24.04/release/ubuntu-base-24.04.4-base-armhf.tar.gz
sudo mkdir ubuntu2404-rootfs
sudo tar -xvpf ubuntu-base-24.04.4-base-armhf.tar.gz -C ubuntu2404-rootfs
sudo cp /etc/resolv.conf ./ubuntu2404-rootfs/etc/resolv.conf
# 挂载系统目录,为chroot环境做准备
sudo mount -o bind /dev ./ubuntu2404-rootfs/dev
sudo mount -o bind /proc ./ubuntu2404-rootfs/proc
sudo mount -o bind /sys ./ubuntu2404-rootfs/sys
sudo mount -o bind /run ./ubuntu2404-rootfs/run
sudo chroot ./ubuntu2404-rootfs /bin/bash
挂载镜像中命令
apt update
apt upgrade -y
apt install -y sudo udev vim wget net-tools ethtool ifupdown iputils-ping openssh-server git
#根据硬件情况安装驱动
passwd root
# 说明:执行后按提示输入密码,建议记录密码,用于后续登录
exit
回到虚拟机中继续执行
sudo umount -l ./ubuntu2404-rootfs/run
sudo umount -l ./ubuntu2404-rootfs/sys
sudo umount -l ./ubuntu2404-rootfs/proc
sudo umount -l ./ubuntu2404-rootfs/dev
sudo dd if=/dev/zero of=ubuntu2404_base.img bs=1M count=4096
sudo mkfs.ext4 -F -L rootfs ubuntu2404_base.img # 修正原命令卷标错误
mkdir -p mnt
sudo mount -o loop ubuntu2404_base.img mnt/
sudo cp -rfp ./ubuntu2404-rootfs/* mnt/
sudo umount mnt/
rm -rf mnt/
sudo e2fsck -p -f ubuntu2404_base.img
sudo resize2fs -M ubuntu2404_base.img
六、烧录前准备(宿主机操作)
# 说明:将以下文件拷贝到同一目录(建议通过Orbstack共享文件夹传递)
cp rk356x_spl_loader_v1.23.114.bin .
cp u-boot.itb .
cp boot.img .
cp ubuntu2404_base.img .
vim parameter.txt
将以下内容写入parameter.txt(直接复制粘贴):
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3566
MACHINE_ID: 007
MANUFACTURER: KINDAVID
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00020000@0x00008000(boot),0x00c00000@0x00040000(rootfs)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
七、设备烧录(宿主机操作)
说明:Mac需提前通过brew安装rkdeveloptool(brew install rkdevelop),设备进入maskrom模式后连接Mac。
rkdeveloptool ld
# 说明:执行后确认设备已识别
rkdeveloptool db rk356x_spl_loader_v1.23.114.bin
rkdeveloptool ef
rkdeveloptool gpt parameter.txt
rkdeveloptool ppt
rkdeveloptool ul rk356x_spl_loader_v1.23.114.bin
rkdeveloptool wl 0x4000 u-boot.itb
rkdeveloptool wl 0x8000 boot.img
rkdeveloptool wl 0x40000 ubuntu2404_base.img
rkdeveloptool rd
# 说明:rd命令执行后设备重启,烧录完成
更多推荐
所有评论(0)