当前位置:   article > 正文

RK3568------Openharmony 3.2-Release 文件系统打包_openharmony 上传文件到开发板

openharmony 上传文件到开发板

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
  • 1
  • 2
  • 3

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


总结

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

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/876849
推荐阅读
相关标签
  

闽ICP备14008679号