赞
踩
上一篇文章总结了如何在自己的板子上移植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种方式:
- 调试USB驱动
既然hdc工具依赖USB的驱动,而本身我的板子也需要调试USB驱动,那么在我的计划列表中只需将USB驱动优先级排在第一位即可,调通USB驱动就可以用hcd解决问题
- 将测试程序代码加入到Ohos体系中一起编译
通过阅读官方文档https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-pkg-3568-helloworld.md了解到我们可以添加一个应用程序到ohos中解决问题
- 重新打包文件系统镜像
在板子上查看/system/bin或/vendor/bin,我们可以看到很多可执行程序,从而思考这些可执行程序是如何产生的?如何存在在文件系统中的?我是否可以仿照此形式将我们的测试程序放到文件系统中,重新打包文件系统镜像解决问题
针对3种解决问题的思路,我做了以下评估
按照官方文档,添加子系统—部件—模块即可。官方文档说的很详细,节省篇幅我这里不做赘述,只展示一下我自己根据官方修改的地方
指定应用程序安装的位置(根据实际情况修改)
查看编译结果 //out/rk3568/packages/phone/vendor/bin
查看//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 就会重新打包文件系统镜像了
本人之前一直从事应用开发,借着这次电鸿的契机进行系统级开发的学习,将我在工作中的遇到的问题及解决思路记录并分享,希望可以与诸君共勉
目前网上技术讨论群大都是鸿蒙的应用开发,总结此类文章也是希望将同样进行鸿蒙设备开发的同僚召集到一起,一起讨论学习。如果有同样在进行鸿蒙设备开发的朋友,可以加我的联系方式,期待您的消息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。