安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

树莓派4B运行鸿蒙系统增加HDF模块

5月9日 寒霜坞投稿
  前言
  HDF驱动子系统是OpenHarmony重要的特色功能之一,其主要的功能是实现驱动程序在多内核多平台的物联网环境,实现一次驱动开发,多端部署。之前移植OHOS3。0使用了传统的linux驱动,比较遗憾,今天尝试将HDF驱动子系统加入编译框架。开始前先了解几个名词。
  HCS(HDFConfigurationSource)是HDF驱动框架的配置描述源码,JSON存储。
  HCGEN(HDFConfigurationGenerator)是HCS配置转换工具,可以将HDF配置文件HCS转换为二进制HCB
  HCB(HDFConfigurationBinary)二进制文件,驱动可使用HDF框架提供的配置解析接口获取配置。内核打补丁
  如何在内核加入HDF驱动,linux内核下主要实现是下面两个目录:
  driversadapterkhdflinux和driversframework
  这两个目录是通过链接的方式加入到内核编译的,流程如下
  kernellinuxbuildkernel。mk:75(hide)cd(KERNELSRCTMPPATH)patchp1(HDFPATCHFILE)patchp1(DEVICEPATCHFILE)
  可以参考3516的HDF补丁:kernellinuxpatcheslinux5。10hi3516dv300patchhdf。patchpatchingfiledriversKconfigpatchingfiledriversMakefilepatchingfiledrivershdfMakefilepatchingsymboliclinkdrivershdfframeworkpatchingsymboliclinkdrivershdfkhdfpatchingsymboliclinkincludehdf添加到linux内核的补丁drivershdfframeworkdriversframework驱动子系统驱动框架、配置管理、配置解析、驱动通用框架模型、硬件通用平台能力接口等drivershdfkhdfdriversadapterkhdflinux在linux内核中部署OpenHarmony驱动框架drivershdfMakefile由hdf。patch提供includehdfdriversframeworkinclude驱动框架对外提供能力的头文件内核配置
  只是打上补丁还不行,还得在内核的编译配置文件中加入HDF选项。最开始的做法就是参考3516的配置选择,但是发现有些配置会导致编译失败。测试发现下面的配置是可以编译成功的。〔〕EnableHDFmanager(2)SetHDFsupportplatform〔〕EnableHDFplatformdriver〔〕EnableHDFplatformmipidsidriver〔〕EnableHDFplatformgpiodriver〔〕EnableHDFplatformi2cdriver〔〕EnableHDFplatformwatchdogdriver〔〕hi35xxpwmdriver〔〕EnableHDFplatformpwmdriver〔〕EnableHDFplatformuartdriver〔〕EnableHDFplatformsdiodriver〔〕EnableHDFplatformemmcdriver〔〕EnableHDFplatformmmcdriver〔〕EnableHDFplatformspidriver〔〕EnableHDFplatformrtcdriver〔〕EnableHDFlinuxtest〔〕EnableHDFDisplaydriver〔〕EnableHDFLcdkitdriver〔〕EnableHDFIcn9700driver〔〕EnableHDFSt7789driver〔〕EnableHDFinputdriver〔〕EnableHDFtp5P5GT911driver〔〕EnableHDFtp2P35FT6236driver〔〕EnableHDFwifi〔〕EnableHDFBluetooth〔〕EnableHDFsensordriver〔〕EnableHDFaccelsensordriver〔〕EnableHDFgyrosensordriver〔〕EnableHDFbarometersensordriver〔〕EnableHDFhallsensordriver〔〕EnableHDFstoragedriver〔〕EnableHDFUSBPNPNotifydriver〔〕EnableFGENERICdriver〔〕EnableHDFAudiodriver〔〕EnableHDFvibratordriver〔〕EnableHDFlinearvibratordriver〔〕EnableHDFdsoftbusdriverCONFIGDRIVERSHDFyCONFIGHDFSUPPORTLEVEL2CONFIGDRIVERSHDFPLATFORMyCONFIGDRIVERSHDFPLATFORMMIPIDSIyCONFIGDRIVERSHDFPLATFORMGPIOyCONFIGDRIVERSHDFPLATFORMI2CyCONFIGDRIVERSHDFPLATFORMWATCHDOGyCONFIGPWMHI35XXyCONFIGDRIVERSHDFPLATFORMPWMyCONFIGDRIVERSHDFPLATFORMUARTyCONFIGDRIVERSHDFPLATFORMSDIOisnotsetCONFIGDRIVERSHDFPLATFORMEMMCisnotsetCONFIGDRIVERSHDFPLATFORMMMCyCONFIGDRIVERSHDFPLATFORMSPIyCONFIGDRIVERSHDFPLATFORMRTCyCONFIGDRIVERSHDFTESTyCONFIGDRIVERSHDFDISPyCONFIGDRIVERSHDFLCDKITisnotsetCONFIGDRIVERSHDFLCDICN9700yCONFIGDRIVERSHDFLCDST7789isnotsetCONFIGDRIVERSHDFINPUTyCONFIGDRIVERSHDFTP5P5GT911yCONFIGDRIVERSHDFTP2P35FT6236yCONFIGDRIVERSHDFWIFIisnotsetCONFIGDRIVERSHDFBTisnotsetCONFIGDRIVERSHDFSENSORyCONFIGDRIVERSHDFSENSORACCELisnotsetCONFIGDRIVERSHDFSENSORGYROisnotsetCONFIGDRIVERSHDFSENSORBAROMETERisnotsetCONFIGDRIVERSHDFSENSORHALLisnotsetCONFIGDRIVERSHDFSTORAGEyCONFIGDRIVERSHDFUSBPNPNOTIFYisnotsetCONFIGDRIVERSHDFUSBFGENERICisnotsetCONFIGDRIVERSHDFAUDIOisnotsetCONFIGDRIVERSHDFVIBRATORyCONFIGDRIVERSHDFVIBRATORLINEARyCONFIGDRIVERSHDFDSOFTBUSisnotsetendofDeviceDrivers
  〔〕EnableHDFlinuxtest是需要设置的,如果没有设置CONFIGDRIVERSHDFTEST,目录结构就出问题了,会报这样的错误。drivershdfkhdfMakefile:22:PRODUCTPATHvendorraspberrypiRPI4BscriptsMakefile。build:44:drivershdfkhdf。。。。。。。。vendorraspberrypiRPI4BhdfconfigMakefile:Nosuchfileordirectorymake〔5〕:Noruletomaketargetdrivershdfkhdf。。。。。。。。vendorraspberrypiRPI4BhdfconfigMakefile。Stop。CC〔M〕driversnetwirelessmac80211hwsim。omake〔4〕:〔scriptsMakefile。build:497:drivershdfkhdf。。。。。。。。vendorraspberrypiRPI4Bhdfconfig〕Error2make〔3〕:〔scriptsMakefile。build:497:drivershdfkhdf〕Error2make〔2〕:〔scriptsMakefile。build:497:drivershdf〕Error2make〔2〕:Waitingforunfinishedjobs。。。。
  下面3个选项要关闭,不然会报下面的错误。
  〔〕EnableHDFplatformsdiodriver〔〕EnableHDFplatformemmcdriver〔〕EnableHDFwifidrivers。。。。。。。。。。。。driversadapterkhdflinuxplatformsdiosdioadapter。o:InfunctionHi35xxLinuxSdioRescan:sdioadapter。c:(。text0x20):undefinedreferencetohisisdiorescansdioadapter。c:(。text0x34):undefinedreferencetohimcigetmmchostdrivers。。。。。。。。。。。。driversadapterkhdflinuxplatformsdiosdioadapter。o:InfunctionHi35xxLinuxSdioFindFunc:sdioadapter。c:(。text0xc84):undefinedreferencetohimcigetmmchostsdioadapter。c:(。text0xc9c):undefinedreferencetohimcigetmmchostsdioadapter。c:(。text0xcb4):undefinedreferencetohimcigetmmchostdrivers。。。。。。。。。。。。driversadapterkhdflinuxplatformemmcemmcadapter。o:InfunctionHi35xxLinuxEmmcBind:emmcadapter。c:(。text0x214):undefinedreferencetohimcigetmmchostdrivers。。。。。。。。。。。。devicehisilicondriverswifidriverhi3881oaloalsdiohost。o:Infunctionsdiocarddetectchange:oalsdiohost。c:(。text0x2ce8):undefinedreferencetohisisdiorescanmake〔1〕:〔Makefile:1179:vmlinux〕Error1make〔1〕:LeavingdirectoryhomeliangziliohosoutKERNELOBJkernelsrctmplinux5。10make:〔kernel。mk:80:homeliangziliohosoutKERNELOBJkernelsrctmplinux5。10archarmbootzImage〕Error2ninja:buildstopped:subcommandfailed。编译过程
  为了方便测试可以单独进行内核编译,比如我的编译命令是这样的。。build。shproductnameRPI4Bccachebuildtargetraspberrypiproducts
  可以分析下HDF这部分的编译过程。
  linux5。10drivershdfMakefile,hdf。patch会添加这个Makefile,将khdf文件夹加入编译。obj(CONFIGDRIVERSHDF)khdf
  linux5。10drivershdfkhdfMakefileexportHDFROOT:drivershdfobj(CONFIGDRIVERSHDF)osalobj(CONFIGDRIVERSHDF)networkobj(CONFIGDRIVERSHDF)configSUPPORTLEVELSTDH:(shell〔(CONFIGHDFSUPPORTLEVEL)ge2〕echotrue)(warningPRODUCTPATH(PRODUCTPATH))会检查PRODUCTPATH变量ifeq((PRODUCTPATH),)(errorPRODUCTPATHnot)endif这里有条注释指明了。hcs配置文件的存放路径forL2,hcsconfigshouldinvendorproductcompanyproductnameconfigkhdfifeq((SUPPORTLEVELSTDH),true)SUBDIR:khdfendifHDFtest的配置会使hcs目录结构不一样,我当时没有设置CONFIGDRIVERSHDFTEST就掉这个坑里了。ifeq((CONFIGDRIVERSHDF),y)ifeq((CONFIGDRIVERSHDFTEST),y)obj(CONFIGDRIVERSHDF)。。。。。。。。(PRODUCTPATH)hdfconfig(SUBDIR)hdftestobj(CONFIGDRIVERSHDF)testelseobj(CONFIGDRIVERSHDF)。。。。。。。。(PRODUCTPATH)hdfconfig(SUBDIR)endifendif。。。后面按照配置添加一些编译目录。。。
  driversadapterkhdflinuxMakefile:会调用obj(CONFIGDRIVERSHDF)。。。。。。。。(PRODUCTPATH)hdfconfig(SUBDIR)hdftest这是OHOS3。0默认的HCS文件存放路径。官方的注释也说明了,所以将设备对应的。hcs存放到vendorraspberrypiRPI4Bhdfconfigkhdf文件夹,参考3516的vendorhisiliconHi3516DV300hdfconfigkhdfhdf。hcs就可了。includedeviceinfodeviceinfo。hcsincludeplatformi2cconfig。hcsincludeplatformhi35xxwatchdogconfig。hcsincludeplatformhi35xxpwmconfig。hcsincludeplatformhi35xxuartconfig。hcsincludeplatformsdioconfig。hcsincludeplatformemmcconfig。hcsincludeplatformhi35xxspiconfig。hcsincludeinputinputconfig。hcsincludewifiwlanplatform。hcsincludewifiwlanchiphi3881。hcsincludesensorsensorconfig。hcsincludeaudioaudioconfig。hcsincludeaudiocodecconfig。hcsincludeaudiodaiconfig。hcsincludeaudiodmaconfig。hcsincludeaudiodspconfig。hcsincludevibratorvibratorconfig。hcsincludevibratorlinearvibratorconfig。hcsincludelcdlcdconfig。hcsroot{modulehisilicon,hi35}
  参考3516的vendorhisiliconHi3516DV300hdfconfigkhdfMakefile
  其中:PRODUCTPATH环境变量的来源:kernellinuxbuildkernelmodulebuild。sh:42:exportPRODUCTPATH4ifeq((LOCALHCSROOT),)LOCALHCSROOT:(PRODUCTPATH)endifSOURCEROOT:(abspath。。。。。。。。。。)HCGENDIR:(abspath(SOURCEROOT)driversframeworktoolshcgen)HCGEN:(HCGENDIR)buildhcgenLOCALHCSROOT:(abspath(dir(realpath(lastword(MAKEFILELIST)))))HCSDIR:(LOCALHCSROOT)ifneq((TARGETBOARDPLATFORM),)HCSDIR:(LOCALHCSROOT)(TARGETBOARDPLATFORM)elseifneq((CONFIGARCHHI3516DV300),)HCSDIR:(LOCALHCSROOT)endififneq((CONFIGARCHHI3518EV300),)HCSDIR:(LOCALHCSROOT)endifendif(infoHCSDIR(HCSDIR))HCBFLAGS:biaHCSOBJ:hdfhcshex。oHCSOBJSRC:(subst。o,。c,(notdir(HCSOBJ)))CONFIGGENHEXSRC:(addprefix(LOCALHCSROOT),(HCSOBJSRC))CONFIGHCSSRC:(substhcshex。o,。hcs,(addprefix(HCSDIR),(HCSOBJ)))(obj)(HCSOBJ):(CONFIGGENHEXSRC)(Q)(CC)(cflags)(Q)(CONFIGGENHEXSRC):(LOCALHCSROOT)hcshex。c:(HCSDIR)。hcs(HCGEN)(Q)echogenhdfbuiltinconfig(Q)if〔!d(dir)〕;thenmkdirp(dir);fi(Q)(HCGEN)(HCBFLAGS)o(substhex。c,,())(CONFIGGENSRCS):(CONFIGOUTDIR)。c:(HCSDIR)。hcs(HCGEN)(Q)echogenhdfdriverconfig(Q)if〔!d(dir)〕;thenmkdirp(dir);fi(Q)(HCGEN)(HCGEN):(HIDE)makeC(HCGENDIR)obj(CONFIGDRIVERSHDF)(HCSOBJ)查看结果
  编译完成后,可以上传内核镜像到开发板,来查看HDF驱动框架是否启动成功。
  加入HDF前lsdevparametershwrngtty1tty28tty46tty7triggerinputtty10tty29tty47tty8autofskmsgtty11tty3tty48tty9binderlinux,cmatty12tty30tty49ttyAMA0blockloopcontroltty13tty31tty5ttyS0busmemtty14tty32tty50ttyprintkcachefilesmemcgtty15tty33tty51unixcharnulltty16tty34tty52urandomconsoleporttty17tty35tty53vchiqcpuctlptmxtty18tty36tty54vcscpusetptstty19tty37tty55vcs1drirandomtty2tty38tty56vcsafdrawctltty20tty39tty57vcsa1freezersndtty21tty4tty58vcsufscklogsstderrtty22tty40tty59vcsu1fullstdintty23tty41tty6vgaarbitergpiochip0stdouttty24tty42tty60vndbindergpiochip1systemtty25tty43tty61watchdoggraphicsttytty26tty44tty62watchdog0hwbindertty0tty27tty45tty63zero
  加入HDF后lsdevHDFPLATFORMI2CMANAGERloopcontroltty24tty54HDFPLATFORMUART1memtty25tty55HDFTESTmemcgtty26tty56I2CTESTnulltty27tty57parametersporttty28tty58triggerptmxtty29tty59autofsptstty3tty6binderrandomtty30tty60blockrawctltty31tty61bussampleservicetty32tty62cachefilessndtty33tty63charstderrtty34tty7consolestdintty35tty8cpuctlstdouttty36tty9cpusetsystemtty37ttyAMA0devmgrttytty38ttyS0dritty0tty39ttyprintkfdtty1tty4unixfreezertty10tty40urandomfscklogstty11tty41vchiqfulltty12tty42vcsgpiochip0tty13tty43vcs1gpiochip1tty14tty44vcsagraphicstty15tty45vcsa1hdfbltty16tty46vcsuhdfinputhosttty17tty47vcsu1hdfmiscvibratortty18tty48vgaarbiterhdfsensormanageraptty19tty49vndbinderhwbindertty2tty5watchdoghwrngtty20tty50watchdog0inputtty21tty51zerokmsgtty22tty52linux,cmatty23tty53
  基本算是启动成功了,接下来考虑打算用HDF的方式添加一下设备。来验证HDF驱动框架是否运转正常。
投诉 评论 转载

树莓派4B运行鸿蒙系统增加HDF模块前言HDF驱动子系统是OpenHarmony重要的特色功能之一,其主要的功能是实现驱动程序在多内核多平台的物联网环境,实现一次驱动开发,多端部署。之前移植OHOS3。0使……用新疆好地方APP收寄快递真方便最近,新疆好地方APP成了我日常生活的好帮手,交通出行、社保医保、公积金、生活缴费等很多业务都能在这里一站办理,而且是指尖办理,非常方便好用。年底了,打算给老家的亲戚邮寄……小程序开发价格开发一个商城小程序要多少钱?如今,越来越多的商家发现了私域流量的重要性,很多商家开始关注腾讯推出的小程序,纷纷想开发一个属于自己的小程序,用自己的小程序来做生意。那么开发……2021917APPSTORE苹果IOS限时免费APP关注我每日稳定更新。所有限免APP下载均为免费,若显示收费,不要下载说明限时免费已过。再请注意的是下载的时候认准APP图标logo,不要下错了。1、MP3转换器视频……集体阻击iPhone13?22号是什么日子?国内五家厂商要开大家知道9月22号是哪天不?没错,就是中秋后一天,大伙放完中秋假的上班第一天!逗一逗,海盗也不知道是啥情况,今天一天,至少有5家厂商官宣在9月22号这天有新动作,海盗也不敢问,……挖矿木马每月产生数量高达百万伪装吃鸡工具中新网客户端北京3月11日电(记者吴涛)11日,腾讯发布的一份报告显示,尽管以比特币为代表的虚拟加密币在过去几年经历了过山车行情,但在过去的一年,挖矿木马样本每月产生的数量高达……SOGO崇光百货35周年店庆开始啦!MK包4折Furla包半崇光百货年店庆日正式开启活动日期:4月22日至5月14日第一期主要是包包、手表、手饰、服务、鞋阿宝大概的看了一下,包包、手表、男士美鞋值得入手不啰嗦啦!……如何挑选一台好的智能电视?随着618年终大促马上快要在各个平台开始进行了,对各种自己喜爱的电器,包括手机,冰箱,电视等都可以从各大网站上购买6月18是有打折优惠了,所以能够以最低额的价钱拿到最好的物品。……聊聊泰山会和湖畔大学据泰山会有关原主要成员透露,目前泰山会已不复存在。泰山会是国内较为神秘、较为著名的商会之一,有人形容它是共济会,或许这个名称更贴切一些。网络资料泰山会由联想控……最前线苹果或推出多屏幕iPhone,有望早于折叠款iPhon文卜玉凤编辑苏建勋信奉实用主义的苹果,这次将在手机背后添加副屏用来显示信息,分担主屏功耗。据《经济日报》援引业界人士的消息报道称,苹果携手电子纸(ePaper……振奋人心!国产芯片取得新进展,相继传来3个好消息芯片国产化的大潮下,国内的半导体产业链屡次有好消息传出。尤其是在各互联网大厂、科技巨头们入局的情况下,国产芯片的发展已然驶入快车道。vivo:自研影像芯片作为国内的头部手……日新月异,太空餐都在进步!一起来看看航天员们都靠什么饱腹?前几天我们聊了一下神十三航天员返回地球的第一顿饭都吃些啥,那大家知道以前在太空之旅期间,航天员们都靠什么饱腹吗?大家要知道在太空失重环境下,食品一不小心就会满舱乱飞,一些……
小派科技推出全新消费版VR头显,5KPlus和5KXR京东首四维图新(002405)电子导航起家五位一体布局肆意FUN一下QCYT17蓝牙耳机,小巧便携,音质给力科技倒逼让中国人潜能爆发,研发速度会加快,你赞成这个说法吗?你能把自己经历过的目前科学也无法解释的怪异事情说来听听吗?市值低于300万美元的前3名被低估的元宇宙币折叠屏怎么做才能防水?中国电信麦芒11(8GB128GB5G版)参数大全售价1699元,小米上线全新晾衣神器,带加热烘干哦攸信在全国统一大市场中能起到什么作用?安装使用充电桩如何避免纠纷iPhone12价格大跳水!低至4799元,还用等iPhon

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利