完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
任务动机:完成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等。在接下来部分将逐一介绍每个文件的获取。 2. 固件获取 2.1 uboot.img、MiniloaderAll.bin、parameter.txt、trust.img的获取 在AndroidTool_Relese目录里面打开AndroidTool.exe 连接设备,切换到loader模式(将typec线连接电脑和板子,然后按住(长按)RECOVERY键,然后按一下RESET键,大约两秒之后松开)RECOVERY键,界面会提示发现一个LOADER设备)。 选择高级功能--在固件后选择镜像,打开已经下载好的固件包镜像(FIREFLY-RK3399-UBUNTU16.04-GPT-20190910-1001.img),如下图所示 点击"解包",等待解压完成。固件镜像文件都在AndroidTool目录里的"Output"文件夹里面,之后制作固件镜像将会在这个文件夹里面uboot.img、MiniloaderAll.bin、parameter.txt、trust.img四个文件,如下图所示 //Output/Android/img_rk3399_firefly/..(MiniloaderAll.bin、parameter.txt、uboot.img、trust.img) 2.2 kernel.img和resource.img 2.2.1 下载openeuler4.19版本内核 git clone :openeuler/kernel.git 2.2.2 下载RK4.19版本内核 git clone :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 2.2.5 环境配置 export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- 2.2.6 编译 make ARCH=arm64 rk3399pro_npu_defconfig make ARCH=arm64 rk3399-firefly-linux.img 常见错误1:scripts缺少文件; 替换RK-4.9的scripts文件夹到openeuler中。 继续编译 make ARCH=arm64 rk3399-firefly-linux.img 常见错误2:dt-bindings文件夹的文件找不到,替换RK-4.9的dt-bindings文件夹到openeuler中。 make ARCH=arm64 rk3399-firefly-linux.img 生成成功 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/ 会在 ${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 (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 ** 文件夹下,如下图所示: (2)修改mkupdate.dat文件 (3)修改 package-file文件 3.2 制作镜像 双击运行mkupdate.dat 首先生成了backup.image 然后生成了firmware.img 打包完成,生成update.img文件。 生成的update.img在rockdev文件夹。 |
|
|
|
任务动机:完成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等。在接下来部分将逐一介绍每个文件的获取。 2. 固件获取 2.1 uboot.img、MiniloaderAll.bin、parameter.txt、trust.img的获取 在AndroidTool_Relese目录里面打开AndroidTool.exe 连接设备,切换到loader模式(将typec线连接电脑和板子,然后按住(长按)RECOVERY键,然后按一下RESET键,大约两秒之后松开)RECOVERY键,界面会提示发现一个LOADER设备)。 选择高级功能--在固件后选择镜像,打开已经下载好的固件包镜像(FIREFLY-RK3399-UBUNTU16.04-GPT-20190910-1001.img),如下图所示 点击"解包",等待解压完成。固件镜像文件都在AndroidTool目录里的"Output"文件夹里面,之后制作固件镜像将会在这个文件夹里面uboot.img、MiniloaderAll.bin、parameter.txt、trust.img四个文件,如下图所示 //Output/Android/img_rk3399_firefly/..(MiniloaderAll.bin、parameter.txt、uboot.img、trust.img) 2.2 kernel.img和resource.img 2.2.1 下载openeuler4.19版本内核 git clone :openeuler/kernel.git 2.2.2 下载RK4.19版本内核 git clone :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 2.2.5 环境配置 export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- 2.2.6 编译 make ARCH=arm64 rk3399pro_npu_defconfig make ARCH=arm64 rk3399-firefly-linux.img 常见错误1:scripts缺少文件; 替换RK-4.9的scripts文件夹到openeuler中。 继续编译 make ARCH=arm64 rk3399-firefly-linux.img 常见错误2:dt-bindings文件夹的文件找不到,替换RK-4.9的dt-bindings文件夹到openeuler中。 make ARCH=arm64 rk3399-firefly-linux.img 生成成功 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/ 会在 ${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 (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 ** 文件夹下,如下图所示: (2)修改mkupdate.dat文件 (3)修改 package-file文件 3.2 制作镜像 双击运行mkupdate.dat 首先生成了backup.image 然后生成了firmware.img 打包完成,生成update.img文件。 生成的update.img在rockdev文件夹。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1924 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
2406 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
5193 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 11:54 , Processed in 0.555780 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号