|
【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】第二彈 常用代碼目錄分析,
最近這段時(shí)間太忙了,以至于帖子一拖再拖。趕鴨子上架的先寫幾篇,哈哈哈~~~。
在我們拿到Hi3861的代碼目錄以后可能小白會(huì)對龐大的代碼體系有點(diǎn)抓狂,這里敘述幾個(gè)要點(diǎn),改代碼的時(shí)候只需要從以下幾個(gè)目錄入手,等用的熟悉了在去細(xì)細(xì)的琢磨鴻蒙的整個(gè)系統(tǒng)框架即可,切不可一蹴而就的想著一口氣吃個(gè)胖子,這樣會(huì)讓你失去琢磨整個(gè)體系的興趣,不要急慢慢來。
鴻蒙系統(tǒng)接口層:
base\iot_hardware\frameworks\wifiiot_lite\src
鴻蒙系統(tǒng)為了提供統(tǒng)一的系統(tǒng)接口在此封裝了系統(tǒng)層接口,這樣就可使得應(yīng)用層忽略低層硬件設(shè)備接口的不同導(dǎo)致的重復(fù)造輪子的問題。后續(xù)其他的設(shè)備接入到鴻蒙系統(tǒng)中只需要將鴻蒙接口層當(dāng)作一個(gè)中間件(連接器),做驅(qū)動(dòng)開發(fā)的同學(xué)將驅(qū)動(dòng)代碼封裝成鴻蒙系統(tǒng)接口,然后應(yīng)用開發(fā)就可以不用考慮低層設(shè)備到底是STM32還是Hi3861,只需要用系統(tǒng)API來做應(yīng)用邏輯開發(fā)即可。
HI3861驅(qū)動(dòng)層API:
vendor\hisi\hi3861\hi3861\platform\drivers
因?yàn)楹K疾]用將Hi3861的Datasheet開放出來(后續(xù)感覺也不會(huì)開放出來,海思的一貫作風(fēng),只有大客戶簽署了保密協(xié)議才會(huì)把SDK包給你),并且將低層代碼固化在了芯片中,所以這里提供了一些Hi3861的功能接口(實(shí)際上從這個(gè)接口往下用sourceInsight去扒拉扒拉是能看到寄存器操作的,有興趣的同學(xué)可以去琢磨下)。在某些鴻蒙沒有的功能接口的地方可以直接調(diào)用驅(qū)動(dòng)層API來實(shí)現(xiàn)一些功能,但是建議還是不要這樣操作。潤和的很多Demo代碼中使用的就是驅(qū)動(dòng)層API,這種做法是及其不正確的,他破壞了鴻蒙的架構(gòu)初衷,因此不推薦大家這樣做。
驅(qū)動(dòng)模塊使能:
vendor\hisi\hi3861\hi3861\build\config\usr_config.mk
整個(gè)工程中是通過gn來做項(xiàng)目管理的,類似于makefile。所以項(xiàng)目中的諸多功能也是可以通過宏的形式去管理的,這樣就方便了后續(xù)的一些功能定制,只需要做一些開宏處理就可以使用諸多的低層硬件功能。如果對宏定義不太理解或者不知道怎么用的話可以學(xué)習(xí)下這篇文章: https://blog.csdn.net/jmh1996/article/details/72832737
注意: 在操作硬件外設(shè)的時(shí)候切記要先在usr_config.mk中開宏,若不開程序是不會(huì)初始化外設(shè)硬件的。
引腳IO及其外設(shè)初始化:
vendor\hisi\hi3861\hi3861\app\wifiiot_app\init\app_io_init.c
這部分代碼實(shí)際上就是上面講到的宏定義實(shí)際控制的外設(shè),可以看到每個(gè)功能前面都有“#ifdef XXXX”這就是宏控制塊。
驅(qū)動(dòng)層例程:
vendor\hisi\hi3861\hi3861\app\demo\src
這個(gè)目錄下有對Hi3861的通用外設(shè)的簡單講解,在初次只用的時(shí)候如果不知道怎么用可以參考下這個(gè)目錄下的代碼,抄襲不可怕,誰還不是個(gè)CV工程師呢! |
|