完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Firefly-RK3399移植Ubuntu16.04的过程是怎样的?
如何在Firefly-RK3399上编译和移植Linux内核和Ubuntu16.04 rootfs? |
|
相关推荐
1个回答
|
|
< >
任务动机:了解Firefly-RK3399移植Ubuntu16.04的过程,为向Firefly-RK3399移植OpenEuler操作系统做准备。 任务描述:在Firefly-RK3399上编译和移植Linux内核和Ubuntu16.04 rootfs,升级固件。 1. Firefly-RK3399刷写官方Ubuntu16.04系统 下载ubuntu16.04镜像:http://www.t-firefly.com/doc/download/page/id/3.html 选择ubuntu(GPT),进入百度网盘后进入/ubuntu16.04/Public目录,选择一个版本下载。本例程下载FIREFLY-RK3399-UBUNTU16.04-GPT-20190910-1001.img.7z 解压之后,在pack目录下可以看到如下文件 AndroidTool是windows下的烧写工具,解压之后打开AndroidTool.exe 将typec线连接电脑和板子,然后按住(长按)**“ RECOVERY ”键,然后按一下“RESET”键,大约两秒之后松开)“ RECOVERY ”**键,界面会提示”发现一个LOADER设备“。 电机左上角的升级固件---固件---选择解压的FIREFLY-RK3399-UBUNTU16.04-GPT-20190910-1001.img文件,然后 设备通过HDMI连接显示屏,开机之后会显示已经更新为Ubuntu系统。 2. Ubuntu16.04固件系统解压 2.1 刷写工具AndroidTool.exe 在高级功能下选择固件:FIREFLY-RK3399-UBUNTU16.04-GPT-20190910-1001.img,然后解包。 解包之后文件在AndroidTool.exe所在目录下的output文件夹中。 3. Ubuntu18.06开发环境搭建及内核编译 3.1 编译环境 3.1.1 安装编译环境 sudo apt-get install build-essential lzop libncurses5-dev libssl-dev 如果使用的是 64 位的 Ubuntu,还需要安装: sudo apt-get install libc6:i386 3.1.2 安装 mkbootimg 工具 git clone https://github.com/neo-technologies/rockchip-mkbootimg.git cd rockchip-mkbootimg make && sudo make install 注:若没安装git 包,先安装git sudo apt install git 3.1.3 获取内核源码和安装交叉编译工具链 获取交叉编译工具: git clone https://TeeFirefly@gitlab.com/TeeFirefly/prebuilts.git 3.2 内核移植 3.2.1 下载内核 创建文件夹 mkdir openeuler cd project Firefly-RK3399 Linux 内核代码获取方式ː git clone https://TeeFirefly@gitlab.com/TeeFirefly/linux-kernel.git.(下载不成功,可以下载压缩包,然后解压。) 获取交叉编译工具: git clone https://TeeFirefly@gitlab.com/TeeFirefly/prebuilts.git. 内核与编译工具放在同一目录下 3.2.2 内核编译 linux 内核采用的config 文件为firefly_linux_defconfig, config 文件在~/linux-kernel/arch/arm64/configs/firefly_linux_defconfig,对应生成 kernel.img dts 文件为 rk3399-firefly-linux.dts 文件, dts 文件在~/ linux-kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-linux.dts, 对应生成resource.img 文件 编译内核 make ARCH=arm64 firefly_linux_defconfig make ARCH=arm64 rk3399-firefly-linux.img 内核编译供成功 4. Helloworld程序写入内核驱动 4.1 目标 创建一个 hello 的驱动,在开机的时候加载,并打印"Hello world" 4.2 简介 1,增加驱动文件 hello.c 和对应的 Makefile、Kconfig 2,修改上一级的 Makefile 与 Kconfig 3,使用 Make menuconfig 进行配置 4,编译,烧录和运行 1、在内核源码内的 drivers 文件夹里新建一个文件夹,文件夹命名自定义。 cd openeur/linux-kernel-gitlab-firefly/drivers/ mkdir hello cd hello vim hello.c hello.c的内容如下: vim Kconfig vim makefile 修改上一级的Makefile和Kconfig cd .. vim Kconfig 增加如图内标记的内容并保存。 vim Makefile 在Makefile文件中增加 :source “drivers/hello/Kconfig" 配置menuconfig cd .. make menuconfig 进入界面,选择“Device Drivers” 点击空格,使得 Hello World 变*****号,然后选择Exit退出。 如果出图片中的错误,那么需要调整终端窗口的大小 编译内核 make ARCH make ARCH=arm64 rk3399-firefly-linux.img 5. Ubuntu Rootfs镜像制作 5.1 安装qemu 5.2 获取Ubuntu—core Firefly-rk3399 ubuntu根文件系统是基于Ubuntu base 16.04来创建的。 可以到官方网站 http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ 下载 ubuntu-base-16.04.2-base-arm64.tar.gz。 下载完成之后,创建文件夹temp;并将下载到的文件系统解压到temp中。 mkdir temp sudo tar-xpf ubuntu-base-16.04.2-base-arm64.tar.gz -C temp 解压之后的文件内容如下: 5.3 修改根文件系统 准备网络 sudo cp -b /etc/resolv.conf temp/etc/resolv.conf 准备 qemu sudo cp /usr/bin/qemu-aarch64-static temp/usr/bin/ 增加软件源 sudo vim temp/etc/apt/sources.list 加入如下两行内容,保存后退出 deb http://ports.ubuntu.com/ubuntu-ports/ xenial main universe deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main universe 进入根文件系统 sudo chroot temp 5.4 更新与安装 更新源和升级 apt update apt upgrade 安装需要的功能(vim、git等) sudo apt install git 如果需要可以安装桌面(apt install xubuntu-desktop) 5.5 添加用户及设置密码 添加用户 useradd -s '/bin/bash' -m -G adm,sudo wzq 设置用户密码 passwd wzq 设置root密码 passwd root 退出根文件系统 exit 5.6 制作根文件系统 用dd工具创建镜像文件 dd if=/dev/zero of= rootfs.img bs=1M count=3000 格式化镜像文件 sudo mkfs.ext4 rootfs.img 挂载镜像并往里面拷入修改后的文件系统 mkdir rootfs sudo mount linuxroot.img rootfs/ sudo cp -rfp temp/* rootfs/ 缷载镜像 sudo umount rootfs/ 目前文件的rootds.img文件的大小为3.1G,这是定义的分区的大小,不能系统文件的实际大小,所以还要经过处理。 依次执行 e2fsck -p -f rootfs.img #检查并修复镜像文件 resize2fs -M rootfs.img #减小镜像文件不必要的大小 (图中红框为根文件系统制作的过程) 执行完成之后,镜像文件有664M。 6. 打包固件镜像 6.1 工具 打包固件镜像需要用到工具都在:AndroidTool文件夹里的rockdev文件夹。 6.2 文件 需要用到rockdev的AFPToll.exe、mkupdate.bat、package-file、recover-script、RKimageMaker.exe、update-script。 需要用到解包固件中的 MiniLoaderAll.bin0、parameter、uboot.img、trust.img 编译内核生成的内核kernel.img和resource.img 生成的rootfs.img 将相关的固件放进Image文件夹中(新建一个),将Image文件放进rockdev目录下,Image文件夹目录如下: 6.3 修改配置 修改mkupdate.dat文件 修改 package-file 文件 6.4 运行 双击mkupdate.dat文件,运行 首先生成了backup.image 然后生成了firmware.img 打包完成,生成update.img文件。 update.img文件在rockdev文件夹。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1567 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
1790 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
4465 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 16:57 , Processed in 0.734122 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号