RK3568------Openharmony 3.2-Release 文件系统打包

RK3568------Openharmony 3.2-Release 文件系统打包


前言

上一篇文章总结了如何在自己的板子上移植Openharmony 3.2-Release。适配自己的板子后,我准备调试硬件驱动,这里就会涉及到需要写一些测试程序(后续系统中需要的三方应用需要打包到文件系统中,同样适用此需求),在板子上验证外设驱动的功能是否正确。


一、遇到的问题

其实写测试程序很简单,我这里遇到的问题就是如何将这些测试程序放至自己的板子里。Ohos官方提供了一个工具hdc(https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/subsystems/subsys-toolchain-hdc-guide.md),它可以收发文件至远端设备,但是在板子上使用有一个前提就是依赖USB的驱动,前面说了是移植过来自己的板子,USB的驱动还没调试,所以目前是无法使用hdc工具
在这里插入图片描述

二、解决思路

对于面临的问题,我能想到的思路有3种方式:

  1. 调试USB驱动

既然hdc工具依赖USB的驱动,而本身我的板子也需要调试USB驱动,那么在我的计划列表中只需将USB驱动优先级排在第一位即可,调通USB驱动就可以用hcd解决问题

  1. 将测试程序代码加入到Ohos体系中一起编译

通过阅读官方文档https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-pkg-3568-helloworld.md了解到我们可以添加一个应用程序到ohos中解决问题

  1. 重新打包文件系统镜像

在板子上查看/system/bin或/vendor/bin,我们可以看到很多可执行程序,从而思考这些可执行程序是如何产生的?如何存在在文件系统中的?我是否可以仿照此形式将我们的测试程序放到文件系统中,重新打包文件系统镜像解决问题

三、方案实现

针对3种解决问题的思路,我做了以下评估

  1. 方案一看似最简单直接,实际上与我面临的问题产生了鸡生蛋,蛋生鸡的矛盾。一方面不能直接上传测试程序,我只能通过反复修改编译烧写内核才能调试验证驱动,这样操作繁琐浪费时间。一方面hdc工具不是我目前所必须得工具。最后就是其他外设驱动的验证,我可以通过测试程序很快做验证。故此方案一我不作为解决问题的方式,不在此实现,留到后调试USB驱动时在考虑
  2. 方案二只需按照官方文档的Demo,添加自己的测试程序即可,好处是我需要学习掌握如何添加应用程序到ohos中,解决问题的同时掌握ohos构建规则。缺点是反复编译,烧录浪费时间
  3. 方案三只需把自己的测试程序Bin文件放进文件夹,重新编译打包文件系统镜像,单独烧写新镜像即可解决问题,好处是节省时间,缺点是需要仔细阅读ohos的编译脚本,打包脚本,知道ohos如何工作的

1. 通过新增子系统—部件—模块实现测试程序上传至板子

按照官方文档,添加子系统—部件—模块即可。官方文档说的很详细,节省篇幅我这里不做赘述,只展示一下我自己根据官方修改的地方

指定应用程序安装的位置(根据实际情况修改)

在这里插入图片描述

查看编译结果 //out/rk3568/packages/phone/vendor/bin
在这里插入图片描述

2. 通过重新打包文件系统镜像实现测试程序上传至板子

  1. 打包镜像流程分析

查看//build/ohos/images/build_image.py

在这里插入图片描述
这是一个python脚本,虽然我不懂python的语法,但是开发语言殊途同归,通过标记处可以看到调用mk_images来打包

查看 //build/ohos/images/mkimage/mkimages.py

在这里插入图片描述
这里通过文件类型来选择使用哪种脚本打包

查看 //build/ohos/images/mkimage/mkextimage.py
在这里插入图片描述
这里说明通过这两个函数格式化一个文件系统,然后将文件系统重新打包成镜像

分析到这里基本上我们已经知道ohos是如何打包的,接下来就是想办法知道函数里面的参数具体是什么,我是直接在脚本里加了两处打印,通过打印获取执行参数

在这里插入图片描述
这里我为什么要让他异常退出,是因为在正常执行的过程中,他是不打印的,只要报错才会打印,我怀疑是他执行脚本的时候输出重定向了,但是我没有找到证据。所以我直接采用简单粗暴的方式,让他异常退出

通过打印 我获取到了他的参数

mke2fs  -I 256 -O ^has_journal -m 0 -L /vendor -M /vendor -t ext4 -b 4096 packages/phone/images/vendor.img 65535

out/rk3568/clang_x64/thirdparty/e2fsprogs/e2fsdroid -e -C build/ohos/images/mkimage/dac.txt -f out/rk3568/packages/phone/vendor -a /vendor out/rk3568/packages/phone/images/vendor.img

删除images中的vendor.img,然后执行mke2fs,格式化以后,在//out/rk3568/packages/phone/vendor/bin中,添加你想添加的文件,然后执行e2fsdroid 就会重新打包文件系统镜像了


总结

本人之前一直从事应用开发,借着这次电鸿的契机进行系统级开发的学习,将我在工作中的遇到的问题及解决思路记录并分享,希望可以与诸君共勉
目前网上技术讨论群大都是鸿蒙的应用开发,总结此类文章也是希望将同样进行鸿蒙设备开发的同僚召集到一起,一起讨论学习。如果有同样在进行鸿蒙设备开发的朋友,可以加我的联系方式,期待您的消息

在这里插入图片描述

  • 26
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: roc-rk3568-pc是一款基于RK3568芯片的台式电脑板,它能够提供高性能、低功耗、多媒体处理以及AI加速等特性。roc-rk3568-pc实现了PC级性能和功能,可以运行Linux和Android操作系统,同时支持多种显示接口和存储接口。 例如,roc-rk3568-pc支持双频WiFi和蓝牙,可以通过HDMI、DP、VGA等接口连接显示器,还可以使用USB3.0、SATA、NVMe等接口连接存储设备。此外,roc-rk3568-pc还配备了四个USB 2.0接口、两个USB 3.0接口、一个千兆网口、一个SPI Flash等。 对于开发者和爱好者来说,roc-rk3568-pc提供了完整的软件开发包(SDK),包括操作系统、编译器、驱动程序、应用程序等。同时,roc-rk3568-pc还有丰富的软件生态系统和社区支持,大大降低了开发门槛和开发成本。 总之,roc-rk3568-pc是一款高性能、全功能、易开发的台式电脑板,适用于各种应用场景,例如家庭娱乐、远程办公、物联网等。 ### 回答2: ROC-RK3568-PC例程是一个基于ROC-RK3568平台设计的针对PC设备的系统应用程序。该例程主要提供了一个使用ROC-RK3568平台的PC设备的示例,用户可通过该例程学习ROC-RK3568平台的基本应用,相应的硬件配置和软件编程技术。 针对ROC-RK3568-PC例程,用户需要掌握一定的嵌入式系统开发技术。首先,用户需要了解ROC-RK3568平台的基本知识,并安装相应的开发环境和编译器。在编写程序的过程中,用户需要熟悉C/C++语言和Linux操作系统,同时掌握设备驱动和应用程序的编写方法,用于实现安装、媒体播放、网络通信、GUI开发等功能。 ROC-RK3568-PC例程的主要任务是提供一个基本的嵌入式系统应用程序示例,让开发者通过学习和修改代码,快速掌握ROC-RK3568平台的开发和应用。该例程的编写需要开发者对ROC-RK3568平台熟悉到一定程度,需要有一定的软件编码能力和嵌入式系统设计经验。同时,用户还需要具备较好的沟通能力和团队协作能力,与其他成员共同完成开发任务。 总的来说,ROC-RK3568-PC例程是一个有实际应用价值的例程,对于想要深入了解嵌入式系统开发的开发者,学习和掌握该例程的编写技术是非常有益的。 ### 回答3: ROC-RK3568-PC例程是指基于ROC-RK3568芯片的PC开发板的样例程序。ROC-RK3568是一款高性能的处理器芯片,可以广泛应用于智能家居、工业控制、远程监控等领域。ROC-RK3568-PC是采用该芯片设计的一款开发板,可以为开发者提供丰富的硬件接口,并支持多种操作系统,如Ubuntu、Android等。 ROC-RK3568-PC例程提供了各种各样的代码示例和应用程序,可以帮助开发者更好地理解和使用ROC-RK3568芯片,实现自己的应用程序。例如,样例程序包括了基于Qt的UI界面设计、GPIO控制、I2C读写、串口通信、网络通信、摄像头采集等功能。此外,还提供了蓝牙配对、TCP/IP通信、远程控制等应用程序,可以帮助开发者快速搭建自己的应用系统。 对于需要使用ROC-RK3568芯片进行开发的开发者来说,ROC-RK3568-PC例程是一个非常有用的参考,可以加快开发进度,提高开发效率。自定义应用程序时,只需要根据自己的需求进行修改或者扩展即可。ROC-RK3568-PC例程提供了良好的参考和基础,为开发者快速实现自己所需的功能提供了便利。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值