电子产业一站式赋能平台

PCB联盟网

搜索
查看: 611|回复: 0
收起左侧

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】第二弹 常用代码目录分析

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2020-11-13 09:57:34 | 显示全部楼层 |阅读模式
【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】第二弹 常用代码目录分析,   





最近这段时间太忙了,以至于帖子一拖再拖。赶鸭子上架的先写几篇,哈哈哈~~~。

在我们拿到Hi3861的代码目录以后可能小白会对庞大的代码体系有点抓狂,这里叙述几个要点,改代码的时候只需要从以下几个目录入手,等用的熟悉了在去细细的琢磨鸿蒙的整个系统框架即可,切不可一蹴而就的想着一口气吃个胖子,这样会让你失去琢磨整个体系的兴趣,不要急慢慢来。


鸿蒙系统接口层:



base\iot_hardware\frameworks\wifiiot_lite\src





鸿蒙系统为了提供统一的系统接口在此封装了系统层接口,这样就可使得应用层忽略低层硬件设备接口的不同导致的重复造轮子的问题。后续其他的设备接入到鸿蒙系统中只需要将鸿蒙接口层当作一个中间件(连接器),做驱动开发的同学将驱动代码封装成鸿蒙系统接口,然后应用开发就可以不用考虑低层设备到底是STM32还是Hi3861,只需要用系统API来做应用逻辑开发即可。






HI3861驱动层API:



vendor\hisi\hi3861\hi3861\platform\drivers

因为海思并没用将Hi3861的Datasheet开放出来(后续感觉也不会开放出来,海思的一贯作风,只有大客户签署了保密协议才会把SDK包给你),并且将低层代码固化在了芯片中,所以这里提供了一些Hi3861的功能接口(实际上从这个接口往下用sourceInsight去扒拉扒拉是能看到寄存器操作的,有兴趣的同学可以去琢磨下)。在某些鸿蒙没有的功能接口的地方可以直接调用驱动层API来实现一些功能,但是建议还是不要这样操作。润和的很多Demo代码中使用的就是驱动层API,这种做法是及其不正确的,他破坏了鸿蒙的架构初衷,因此不推荐大家这样做。


驱动模块使能:

vendor\hisi\hi3861\hi3861\build\config\usr_config.mk

整个工程中是通过gn来做项目管理的,类似于makefile。所以项目中的诸多功能也是可以通过宏的形式去管理的,这样就方便了后续的一些功能定制,只需要做一些开宏处理就可以使用诸多的低层硬件功能。如果对宏定义不太理解或者不知道怎么用的话可以学习下这篇文章: https://blog.csdn.net/jmh1996/article/details/72832737
注意: 在操作硬件外设的时候切记要先在usr_config.mk中开宏,若不开程序是不会初始化外设硬件的。


引脚IO及其外设初始化:







vendor\hisi\hi3861\hi3861\app\wifiiot_app\init\app_io_init.c





这部分代码实际上就是上面讲到的宏定义实际控制的外设,可以看到每个功能前面都有“#ifdef XXXX”这就是宏控制块。






驱动层例程:



vendor\hisi\hi3861\hi3861\app\demo\src

这个目录下有对Hi3861的通用外设的简单讲解,在初次只用的时候如果不知道怎么用可以参考下这个目录下的代码,抄袭不可怕,谁还不是个CV工程师呢!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表