RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127783966

红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

瑞芯微开发专栏

上一篇:《RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像》
下一篇:敬请期待…


前言

  buildroot虽然灵活,但是基于实际情况,本身是侧重驱动和应用定制开发的只定制一次文件系统投入有点多,还不如直接ubunt自己交叉编译依赖库,做一些库的移植裁剪。
  于是本篇就使用ubuntu系统了,至于其他库自己下源码在宿主机交叉编译号后,再拷贝过去或者直接在板子上编译也行(只是会比较慢),但是意义不大,因为开发过程肯定是用宿主机,不然核心板编译太慢,在编译上会花费不少可以省去的时间。


为什么选择ubuntu

  核心板方案上已经提供适配好的基础uboot和kernel,这个时候不同文件系统 uboot和内核时一样的,做驱动差别也不大,而且笔者做移植交叉编译应用和库都较多,且不同平台都做,直接裁剪移植,所以对于笔者来说,选择ubuntu是更好的方式,缺什么下源码三部曲交叉编译,而使用buildroot构建势必有点绕远路,所以选择了ubuntu,后续对ubuntu进行裁剪,如去掉桌面,然后开发移植库和应用。


RK系列SDK简要介绍

目录结构

  一个通用 Linux SDK (RV系类的sdk没有对工程目录包含有 buildroot、 debian、 app、 kernel、 u-boot、 device、 docs、 external等目录。
  以下是RK系类的目录分类:

  • app:存放上层应用 app,主要是 qcamera/qfm/qplayer/settings 等一些应用程序。
  • buildroot:基于 buildroot (2018.02-rc3) 开发的根文件系统。
  • debian:基于 debian 10 开发的根文件系统,支持部分芯片。
  • device/rockchip:存放各芯片板级配置和 Parameter 文件,以及一些编译与打包固件的脚本和预备文件。
  • docs:存放芯片模块开发指导文档、 平台支持列表、 芯片平台相关文档、 Linux 开发指南等。
  • IMAGE:存放每次生成编译时间、 XML、 补丁和固件目录。
  • external:存放第三方相关仓库,包括音频、 视频、 网络、 recovery 等。
  • kernel:存放 kernel 4.4 或 4.19 开发的代码。
  • prebuilts:存放交叉编译工具链。
  • rkbin:存放 Rockchip 相关的 Binary 和工具。
  • rockdev:存放编译输出固件。
  • tools:存放 Linux 和 Windows 操作系统环境下常用工具。
  • u-boot:存放基于 v2017.09 版本进行开发的 uboot 代码。
  • yocto:基于 yocto gatesgarth 3.2 开发的根文件系统,支持部分芯片
      相对于以上的,对比下RV1109&RV1126的SDK目录,如下图:
      在这里插入图片描述

Ubuntu

  Ubuntu 是一个流行的 Linux 发行版, 是基于 Debian 的 unstable 版本加强而来, 以“最好的 Linux 桌面系统” 而闻名, 近些年 Ubuntu 也推出了 Ubuntu Enterprise Linux, 在企业 Linux 应用市场占有率也有较大提高。

  • 优点: 技术支持较好, 用户界面友好, 硬件的兼容性好, 采用基于 Deb 的 ATP 包管理系统。
  • 缺点: 技术支持和更新服务是需要付费的, 服务器软件生态系统的规模和活力方面稍弱 。
      (参考厂家手册)

源码准备

  从开发版提供的资料中拿到uboot,kernel,rootfs:

  • uboot:uboot是引导程序,芯片运行跑起来,然后引入kernel
  • kernel:linux的内核是加载后将会移植运行在内存中的核心
  • rootfs:这是文件系统,文件系统是kernel运行时需要加载一些驱动,库,存储等相关的其他一切相关的东西;
      编译uboot,kernel,然后制作文件系统:
      在这里插入图片描述
      (注意:buildroot也是要下载编译的,因为打包ubuntu镜像的时候需要使用到buildroot里面的脚本环境,所以此处也要先做buildroot系统再做ubuntu系统,具体查看“入坑一”)
      (注意:一定要从购买开发板或者核心板的厂家获取,已经做好了ddr等外设的适配,包括开发板的外设,这是我们后续学习移植的基础,千万不要想着从零开始做,这个是不现实的,目前也没有人和公司这么做)
      (注意:Ubuntu文件系统,是真的文件系统,而buildroot文件系统时buildroot工具构建的文件系统,Yocto也是;Debian和Ubuntu则是真文件系统)

编译ubuntu

步骤一:安装buildroot依赖环境

  虚拟机安装编译buildroot环境,以下跟来回验证了:

sudo apt-get install uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop \
git-core curl u-boot-tools mtd-utils android-tools-fsutils openjdk-8-jdk device-tree-compiler \
gdisk m4 libz-dev git gnupg flex bison gperf libsdl1.2-dev libesd-java libwxgtk3.0-dev \
squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool \
libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev \
lib32ncurses5-dev lib32readline-dev gcc-multilib libswitch-perl libssl-dev unzip \
zip liblz4-tool repo git ssh make gcc libssl-dev liblz4-tool vim expect \
g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \
qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \
unzip device-tree-compiler python-pip libncurses5-dev rsync subversion \
sed make binutils  build-essential  gcc  g++  wget python libncurses5 bzr cvs git mercurial \
patch gzip bzip2 perl tar cpio unzip rsync file bc wget qemu-user-static live-build -y \
python3.8 python3.8-dev

  在这里插入图片描述

步骤二:下载解压uboot-kernel,ubuntu

  下载解压,做这个开发确实很需要磁盘大小,而且传输也费时间,加上用虚拟机,专门加装了1024GBSSD作为专门开发的。
  在这里插入图片描述
  然后传送到ubuntu上,使用samba服务,参考博文《linux实用技巧:ubuntu18.04安装samba服务器实现局域网文件共享》

步骤三:移动解压uboot-kernel

  在这里插入图片描述

tar xvf uboot_kernel_20220512.tar.gz

  在这里插入图片描述
  (疑问:只用了3分钟,因为之前是系统ssd,这次是专门配的1024ssd单独盘么?)
  在这里插入图片描述

步骤四:使用ubuntu系统

  注意:rk3568支撑多个系统,按照SDK文档指定系统是相似的操作。
  我们使用ubuntu文件系统,将ubuntu_20220511.tar.gz直接解压到rk356x_linux的文件夹:

cd ~/work/sdk
tar xvf buildroot_20220510.tar.gz -Ca rk356x_linux/

  在这里插入图片描述
  很快,如下图:
  在这里插入图片描述

步骤五:查看编译命令单独编译uboot,kernel和ubuntu

   在这里插入图片描述
  编译uboot:
  在这里插入图片描述
  编译kernel:
  在这里插入图片描述
  编译文件系统ubuntu,这里要先选择厂商的配置:

./build.sh BoardConfig-rk3568-evb1-ddr4-v10.mk
./build.sh ubuntu

   在这里插入图片描述

  然后错误:
  在这里插入图片描述

  具体查看“入坑一”,这里可以看出方案上先基于buildroot做的,然后再buildroot下去做其他的打包。
  编译好buildroot后,继续使用ubuntu

./build.sh ubuntu

  在这里插入图片描述
  在这里插入图片描述
  至此,ubuntu的固件编译完成,但是我们没有适配屏幕的。

步骤六:适配屏幕

  屏幕,笔者使用的是厂家提供的lvds10.1寸屏幕,已经做好了驱动在sdk中,但是需要配置设备树:

cd /home/topeet/Linux/rk356x_linux/
gedit kernel/arch/arm64/boot/dts/rockchip/topeet_screen_choose.dtsi

  在这里插入图片描述

  知识点:适配屏幕是修改了内核的设备树,而没有修改文件系统。
  在这里插入图片描述

步骤七:编译整体

  由于uboot,kernel是没有争议的,但是文件系统是由好几个参数,所以要根据开发文档来,有个环境变量RK_ROOTFS_SYSTEM,他是什么则是什么系统,由此可见,他实际上是build编译文件系统的参数:
  编译:

export RK_ROOTFS_SYSTEM=ubuntu
./build.sh all

  在这里插入图片描述
  在这里插入图片描述
  5分钟编完。

步骤八:打包mkfirmware.sh

./mkfirmware.sh

  在这里插入图片描述
  在这里插入图片描述


入坑

入坑一:编译ubuntu镜像打包错误

问题

  找不到buildroot下的一个脚本。
  在这里插入图片描述

原因

  在这里插入图片描述

  要先编译buildroot

解决

  先走buildroot编译流程,再走编译ubuntu流程
  在这里插入图片描述
  具体的编译buildroot问题,需要看《RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像》。


上一篇:《RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像》
下一篇:敬请期待…


若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127783966

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619492.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Uniapp集成熊猫播放器

先源码分析 后续增加集成的例子 相关链接 官方文档:https://www.yuque.com/lahuayouyiliushuiwuqing/csqxe2插件地址:https://ext.dcloud.net.cn/plugin?id=6715 源码分析删掉不需要的组件 不知道路径问题

wordpress html音乐,【WordPress插件】QPlayer音乐播放器插件html5音乐插件

音乐播放器,这个大家不陌生了,wordpress也是可以直接插入的,但是不够美观,而且只支持本地的,今天给大家推荐一款自动解析各大音乐网站的播放器,界面美观,支持歌词显示。 使用方法: D…

QPlayer2-资源网各大程序背景音乐插件

介绍: QPlayer2一款简洁小巧的HTML5底部悬浮音乐播放器,支持网易云音乐解析,由GitHub用户Jrohy开发,最新版本为v1.3.4.2,更新于三年前,已不再更新。 如今,MoeShin将代码优化后制成QPlayer2&…

三款QPlayer2-背景音乐插件

简介: 一款简洁小巧的 HTML5 底部悬浮音乐播放器,支持云音乐,现已支持WordPress、Typecho、Z-Blog。 网盘下载地址: http://kekewangLuo.net/iTqbm3fJQ6y0 图片:

week6刷题

题解: 使用二分查找 class Solution { public:int minArray(vector<int>& numbers) {int low 0;int high numbers.size() - 1;while (low < high) {int pivot low (high - low) / 2;if (numbers[pivot] < numbers[high]) {high pivot;}else if (numbers…

[组图]一切从零开始 Symbian智能机之软件入门(转)

购买NOKIA智能手机的朋友们会发现&#xff0c;NOKIA采用的是一种叫做Symbian的操作系统。Symbian由摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出资组建的一个合资公司&#xff0c;专门研发手机操作系统。而Symbian操作系统的前身是EPOC&#xff0c;而EPOC是Electro…

S60十大优秀软件

众所周知&#xff0c;智能手机是手机发展的一大趋势。由业界老大诺基亚领衔的symbian智能手机在市场上独占鳌头。占据绝对多数的市场份额。symbian智能操作系统中由以S60平台应用最广&#xff0c;最受消费者青睐。很多消费者选购了基于S60平台的symbian智能后&#xff0c;面对数…

2021高考放榜,还能无脑选计算机专业吗?

前言 古语有云&#xff1a;“久旱逢甘霖&#xff0c;他乡遇故知&#xff0c;洞房花烛夜&#xff0c;金榜题名时。”此为人生四大乐事也。 前段时间高考刚落下帷幕&#xff0c;虽说人生中最重要的考试已经过去 &#xff0c;但如何填报志愿也不能掉以轻心&#xff0c;这不仅关乎…

DebugInfo 模型功能系统介绍 文本上色 文本与表格对齐 分隔线 秒表计算器 语义日期

背景 今天系统性的为大家介绍一下 DebugInfo 模块。这个模块提供了一些丰富的基本功能的封装&#xff0c;希望能给有需要的人带来些许帮助。 文本上色 DebugInfo 模块引入了 colorama提供文本颜色支持。 # -*- coding:UTF-8 -*-# region 引入必要依赖 from DebugInfo.DebugI…

时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)

时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价) 目录 时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现基于TSO-XGBoost金枪鱼算…

视频播放花屏问题

h264裸流播放视频&#xff0c;出现如下画面有可能是屏的线序问题

音视频问题汇总--视频花屏

最近工作上碰到两个问题&#xff0c;都是播放时候出现花屏现象&#xff0c;因此汇总一下&#xff0c;方便后续防止踩坑。 问题一 第一个是设备播放特定文件时出现花屏现象。 碰见类似问题&#xff0c;一般会进行问题怀疑点预设&#xff0c;初步猜想可能发生的原因&#xff1a;…

Compose - 交互组合项

按钮 Button OutLinedButton带外边框、TextButton只是文字、IconButton只是图标形状。 Button(onClick { }, //点击回调modifier Modifier,enabled true, //启用或禁用interactionSource MutableInteractionSource(),elevation ButtonDefaults.elevatedButtonElevation( /…

各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient

之前的一篇博客《网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient》&#xff0c;我们介绍了RTSP流的检测和分析工具EasyRTSPClient&#xff0c;可以说已经是深入了我的平时运维工作中了&#xff0c;当我们发现有任何RTSP源或者摄像…

PPStream、PPlive等播放器花屏之解决办法

PPStream、PPlive等播放器花屏之解决办法 解决方法1&#xff1a;打开“Windows Meida Player”播放器&#xff0c;找到“工具”->“选项”->“性能”->“视频加速”&#xff0c;把“完全”滑块放到中间&#xff08;如果仍不行可调整到无&#xff09;&#xff0c;然后按…

传奇花屏Win10登陆游戏时花屏的解决方法

随着win10的流行&#xff0c;原来很多传奇版本不能适应&#xff0c;必竟传奇是一款比较老的游戏&#xff0c;很多电脑现在初装都已经是Win10了&#xff0c;win10系统&#xff0c;玩单机时点开始游戏就出现花屏&#xff0c;换分辩率800X600没有用。 Win10系统花屏是因为登陆器不…

用户观看视频业务出现花屏故障

组网情况 如图所示&#xff0c;Switch的一端和组播服务器相连&#xff0c;并且将GE1/0/0加入Eth-Trunk 0&#xff0c;另一端下挂用户终端&#xff0c;并且将GE1/0/2加入Eth-Trunk 1。在Switch上部署了组播业务&#xff0c;下挂用户终端可以进行视频点播。 现象描述 用户终端…

ffmpeg解码花屏

问题&#xff1a; 解码为YUV420转为Bitmap后显示在屏幕上时&#xff0c;有三分之二为花屏&#xff1a;如图&#xff1a; 首先用h264Visa分析帧&#xff1a; 已经读出了sps等信息&#xff0c;这些信在解码第一帧时被写入环境变量中&#xff0c;所以下边的帧不需要sps了 而且在…

《Zookeeper》源码分析(二十三)之 客户端的命令处理过程

目录 客户端的命令处理过程1. ZooKeeper.create()2. ClientCnxn.submitRequest()3. SendThread.run()4. ClientCnxnSocket.doTransport()5. SendThread.readResponse() 客户端的命令处理过程 以创建节点命令为例&#xff0c;整个过程流程如下&#xff1a; CliCommand命令在抽…

自己动手完成数据恢复

简易数据恢复 数据恢复数据恢复原理FAT文件系统 NTFS文件系统在NTFS文件系统中的原理分析对于文件删除有一段时间时&#xff1a; 基于软件的文件恢复总结 数据恢复 数据恢复是一个很大的概念&#xff0c;包括文件恢复&#xff0c;分区恢复&#xff0c;分区格式化恢复&#xff0…