openEuler 20.03 LTS面向RK3399移植系列(2)—初战Firefly RK3399

任务动机:完成openEuler面向RK3399开发板的移植。

任务描述:按照固件烧写准备,固件获取,固件打包和烧写的步骤实现openEuler面向RK3399开发板的移植,整理过程和相关命令记录到文档。

1. 固件烧写准备

        ​Firefly RK3399的打包固件升级工具AndroidTool中,包含一个rockdev的文件夹,打包固件是会用到该文件夹下的几个工具(mkupdate.bat、AFPTool.exe、RKImageMaker.exe)。​ Firefly RK3399升级固件所需的各部分文件包括:MiniLoaderAll.bin、parameter.txt uboot.img trust.img kernel.img resource.img等。在接下来部分将逐一介绍每个文件的获取。

1596420015073

2. 固件获取

2.1 uboot.img、MiniloaderAll.bin、parameter.txt、trust.img的获取

在AndroidTool_Relese目录里面打开AndroidTool.exe

1596120356458

1596120366132

       连接设备,切换到loader模式(将typec线连接电脑和板子,然后按住(长按)RECOVERY键,然后按一下RESET键,大约两秒之后松开)RECOVERY键,界面会提示发现一个LOADER设备)。

1596120398919

      选择高级功能--在固件后选择镜像,打开已经下载好的固件包镜像(FIREFLY-RK3399-UBUNTU16.04-GPT-20190910-1001.img),如下图所示

1596120456775

        点击"解包",等待解压完成。固件镜像文件都在AndroidTool目录里的"Output"文件夹里面,之后制作固件镜像将会在这个文件夹里面uboot.img、MiniloaderAll.bin、parameter.txt、trust.img四个文件,如下图所示

//Output/Android/img_rk3399_firefly/..(MiniloaderAll.bin、parameter.txt、uboot.img、trust.img)

1596120470082

2.2 kernel.img和resource.img

2.2.1 下载openeuler4.19版本内核

https://gitee.com/openeuler/kernel/tree/4.19.90-2005.2.0/

git clone git@gitee.com:openeuler/kernel.git

2.2.2 下载RK4.19版本内核

git clone git@github.com:rockchip-linux/kernel.git

2.2.3 内核文件拷贝

(1)将Rk-4.19内核源码的rk3399pro_npu_defconfig文件copy进openeuler内核的~/arch/arm64/configs文件夹中

(2)将Rk-4.19内核源码的~/arch/arm64/Makefile文件替换openeuler内核的~/arch/arm64/Makefile

(3)替换arm64/boot/dts目录下的:rockchip

(4)在根目录下增加RK-4.19中多余的单个文档与图片。

2.2.4 安装依赖

apt-get install build-essential gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu bc libssl-dev -y

微信图片_20200719200451

2.2.5 环境配置

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-

微信图片_20200719200447

2.2.6 编译

make ARCH=arm64 rk3399pro_npu_defconfig

1596888644581

make ARCH=arm64 rk3399-firefly-linux.img

1596968797904

常见错误1:scripts缺少文件; 替换RK-4.9的scripts文件夹到openeuler中。

继续编译

make ARCH=arm64 rk3399-firefly-linux.img

常见错误2:dt-bindings文件夹的文件找不到,替换RK-4.9的dt-bindings文件夹到openeuler中。

1596968746592

make ARCH=arm64 rk3399-firefly-linux.img

1596854442226

生成成功

1596854477283

2.3 rootfs.img

2.3.1 创建RPM数据库

mkdir ${WORKDIR}/rootfs
mkdir -p ${WORKDIR}/rootfs/var/lib/rpm
rpm --root ${WORKDIR}/rootfs/ --initdb

// 下载openeuler发布包
rpm -ivh --nodeps --root ${WORKDIR}/rootfs/ http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/Packages/openEuler-release-20.03LTS-33.oe1.aarch64.rpm

会在 ${WORKDIR}/rootfs 下生成三个文件夹: etc/ usr/ var/ 。

2.3.2 安装必要软件

(1)安装yum源

mkdir ${WORKDIR}/rootfs/etc/yum.repos.d 

curl -o ${WORKDIR}/rootfs/etc/yum.repos.d/openEuler-20.03-LTS.repo https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo 

(2)安装dnf

dnf --installroot=${WORKDIR}/rootfs/ install dnf --nogpgcheck -y 
 
dnf --installroot=${WORKDIR}/rootfs/ makecache

dnf --installroot=${WORKDIR}/rootfs/ install -y alsa-utils wpa_supplicant vim net-tools iproute iputils NetworkManager openssh-server passwd hostname ntp bluez pulseaudio-module-bluetooth

2.3.3 添加配置文件

(1)添加hosts

 cp /etc/hosts ${WORKDIR}/rootfs/etc/hosts 

(2)网络相关:设置DNS

cp -L /etc/resolv.conf ${WORKDIR}/rootfs/etc/resolv.conf

编辑添加 nameserver:

vim ${WORKDIR}/rootfs/etc/resolv.conf

内容:

nameserver 8.8.8.8
nameserver 114.114.114.114

(3)网络相关(设置IP自动获取)

mkdir ${WORKDIR}/rootfs/etc/sysconfig/network-scripts
vim ${WORKDIR}/rootfs/etc/sysconfig/network-scripts/ifup-eth0

//内容
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=851a6f36-e65c-3a43-8f4a-78fd0fc09dc9
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
DEVICE=eth0

2.3.4 rootfs设置

chroot ${WORKDIR}/rootfs /bin/bash

(1)设置root密码

passwd root

(2)设置主机名

 echo openEuler > /etc/hostname 

(3)退出

 exit 

2.3.5 制作跟文件系统镜像

将上述rootfs文件夹拷贝到本地ubuntu18.04系统下。

用dd工具创建镜像文件:

dd if=/dev/zero of=rootfs.img bs=1M count=3000

格式化镜像文件

sudo mkfs.ext4 rootfs.img

挂载镜像并往里面考入修改后的文件系统

mkdir rootfs

sudo mount rootfs.img rootfs/

sudo cp -rfp temp/* rootfs/

卸载镜像

sudo umount rootfs/

制作完成之后在目录下生成rootfs.img

3. 固件打包和烧写

3.1 文件准备

(1)将生成的uboot.img、MiniloaderAll.bin、parameter.txt、trust.img、kerne.img、resource.img以及rootfs,img拷贝至 **//AndroidTool/rockdev/Image ** 文件夹下,如下图所示:

1596362186579

(2)修改mkupdate.dat文件 

1596362207840

(3)修改 package-file文件

1596362214832

3.2 制作镜像

双击运行mkupdate.dat

首先生成了backup.image

1596362234719

然后生成了firmware.img

1596362243423

打包完成,生成update.img文件。

1596362247822

1596362247822

生成的update.imgrockdev文件夹。

1596362252740

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
openeuler 20.03 lts sp2是openEuler操作系统的一个版本。openEuler是一个由华为发起的开源操作系统项目,旨在构建一个面向服务器、桌面和嵌入式设备的通用操作系统。该项目基于Linux内核并采用开放合作模式,鼓励社区参与,并且通过开发者、用户和贡献者的合作不断完善改进。 openeuler 20.03 lts sp2是openEuler的长期支持版本,意味着该版本将得到长期维护和支持,以保证系统的稳定性和安全性。SP2表示该版本是第二个服务打包版本,通常会包含一些功能改进和错误修复。 在openeuler 20.03 lts sp2中,用户可以期待以下特点和优势: 1. 卓越的稳定性:作为长期支持版本,openeuler 20.03 lts sp2会持续提供系统的稳定性和安全性,以确保用户可以长期使用和维护该版本。 2. 先进的安全性:openeuler 20.03 lts sp2会包含安全补丁和新的安全功能,以防止潜在的安全漏洞,并保护用户的数据安全。 3. 新功能改进:openeuler 20.03 lts sp2也会引入一些新的功能和改进,以提高用户的体验和系统的性能,同时也支持更多的硬件和软件。 4. 社区合作:openEuler开源项目鼓励社区参与,在openeuler 20.03 lts sp2中也会有社区贡献者的参与,共同推动系统的发展和改进。 总之,openeuler 20.03 lts sp2是一个稳定、安全且具有先进功能的操作系统版本,适用于各种服务器、桌面和嵌入式设备的使用场景。用户可以在长期支持和社区合作的基础上,享受到系统的优势和持续的维护支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值