[LiteOS移植]目標(biāo)芯片STM32F1 分析與思考

      網(wǎng)友投稿 698 2022-05-30

      本篇講述如何分析官方或者其他友商提供的工程文件,在此基礎(chǔ)上寫出自己的工程文件,這是一種分析的方法,只有掌握了這樣的方法,你才能快速學(xué)習(xí)一個新的東西,會自己獨立思考問題,不是所有項目都有很好的技術(shù)支持,大部分都是靠自己,甚至說明文檔都很少,只能閱讀別人的代碼,從而知道其思想和內(nèi)部原理。

      由上至下整體分析

      拿到一份工程文件的第一件事不是直接去閱讀其源碼,如果直接去閱讀源碼可能會一頭霧水,應(yīng)該先分析其結(jié)構(gòu),在心中有個大的方向,再去閱讀源碼并更正心中的想法,這樣才能做到最高效,在閱讀的過程中還可以把覺得不好的地方記錄下來,在自己后面開發(fā)得工程中加以改善。

      我們這里以SDK/targets/STM32L431_BEAR工程文件為例,帶領(lǐng)大家閱讀和分析。

      Demos:存放操作系統(tǒng)之上,用戶邏輯代碼。

      GCC:存放Makefile文件、鏈接腳本、編譯過程中間文件。

      Hardware:存放平臺特有硬件驅(qū)動代碼(例如顯示屏和各類拓展板)。

      Inc:存放頭文件。

      OS_CONFIG:存放操作系統(tǒng)的配置文件。

      Src:存放單片機的外設(shè)初始化文件及main.c文件。

      uart_at:存放at使用的串口初始化和驅(qū)動代碼文件。

      .config:Kconfig生成的配置文件

      .config_old:沒使用到,可以忽略。

      [LiteOS移植]目標(biāo)芯片STM32F1 分析與思考

      Iot_config.h:Kconfig生成的配置頭文件(主要通過宏定義來使能一些組件)。

      Kconfig:Kconfig讀取該文件顯示圖形化配置選項。

      根據(jù)以上分析,我們首先要將通過STM32CubeMX生成的工程調(diào)整結(jié)構(gòu),盡量和上面相同,因為工程的編譯是依賴Makefile來進行,Makefile可以使用官方案例工程中提供的Makefile在GCC目錄中,其原理是根據(jù)目錄來指定需要被編譯的文件,所以我們將自己的工程結(jié)構(gòu)調(diào)整的盡可能與上面相同,便于適配Makefile,減少工作量。

      Demo目錄中有多個目錄,每一個目錄對應(yīng)一個用戶例程,我們可以如法炮制,根據(jù)自己的項目需求在Demo目錄中新建一個xxxx(需求名稱)的目錄,并在目錄中新建一個xxxx.c源文件,修改user_demo.mk,在其中添加上我們這個工程目錄中源文件的信息,后面才能選擇編譯。

      GCC目錄中存放多個鏈接腳本和Makefile文件,我們使用到的是Makefile、project.mk、os.ld這三個文件,重點修改project.mk和os.ld讓其適配我們的工程目錄和MCU型號。

      Hardware目錄中存放板載外設(shè)的驅(qū)動,例如板子上特有的LCD顯示屏、各種拓展板卡上的傳感器,例如溫度、濕度、光照傳感器的驅(qū)動代碼,我們可以移除沒有用到的驅(qū)動代碼,添加上自己開發(fā)板特有的傳感器驅(qū)動,供用戶代碼調(diào)用。

      Inc目錄存放單片機上各類外設(shè)的驅(qū)動代碼的頭文件,我們可以移除沒有使用到的文件,添加上用到的單片機外設(shè)的驅(qū)動頭文件,直接從STM32CubeMX生成的Makefile工程中的Inc目錄中復(fù)制過來即可。

      OS_CONFIG目錄中的文件用于控制LiteOS和調(diào)試信息的輸出,我們可以根據(jù)需求,進行一些修改,例如通過target_config.h文件設(shè)置最大支持的信號量個數(shù),是否采用硬件接管機制等等,一般不用設(shè)置,保持默認(rèn)即可。

      Src目錄中存放單片機上各類外設(shè)的驅(qū)動代碼以及main函數(shù)的入口文件main.c,該文件直接使用即可,可以從STM32CubeMX生成的Makefile工程中的Src目錄中復(fù)制一些用到的單片機外設(shè)驅(qū)動文件到該目錄中,移除一些沒有用到的文件。

      uart_at目錄中存放發(fā)送AT指令控制外部支持AT指令的模塊的串口驅(qū)動代碼,包括串口初始化、實現(xiàn)一個數(shù)據(jù)結(jié)構(gòu),用于保存接收到的數(shù)據(jù),供用戶代碼讀取等。

      其余文件均不用修改,.config和iot_config.h文件由Kconfig根據(jù)SDK配置自動生成。

      下一節(jié)開始調(diào)整工程結(jié)構(gòu)。

      LiteOS移植

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:2021年,財務(wù)軟件的未來更具想象力
      下一篇:華為云云原生王者之路集訓(xùn)營(黃金-第六章):Kubernetes持久化數(shù)據(jù)卷管理
      相關(guān)文章
      久久亚洲国产伦理| 亚洲无线一二三四区| 亚洲精品一二三区| 亚洲av片不卡无码久久| 亚洲视频在线一区二区三区| 亚洲人成影院在线| 久久亚洲sm情趣捆绑调教| 久久久久亚洲精品美女| 亚洲人成人77777网站| 亚洲国产AV无码专区亚洲AV| 日本亚洲欧洲免费天堂午夜看片女人员| 久久精品国产精品亚洲艾草网美妙| 亚洲国产精品狼友中文久久久| 亚洲国产专区一区| 浮力影院亚洲国产第一页| 亚洲色婷婷一区二区三区| 国产亚洲精品精华液| 亚洲AV无码久久精品成人| 亚洲午夜精品久久久久久人妖| 亚洲精品视频专区| 亚洲国产人成在线观看| 亚洲va在线va天堂成人| 亚洲色欲色欲www在线播放 | 亚洲国产欧洲综合997久久| 精品国产日韩久久亚洲| 亚洲熟妇无码八V在线播放| 亚洲精品国产综合久久久久紧| 亚洲国产欧美国产综合一区 | 久久精品国产精品亚洲艾草网| 婷婷久久久亚洲欧洲日产国码AV| 亚洲免费在线视频| 亚洲精品免费在线视频| 精品亚洲成在人线AV无码| 亚洲熟女乱色一区二区三区 | 久久亚洲私人国产精品vA | 国产亚洲精品高清在线| 亚洲春色在线视频| 亚洲第一精品电影网| jiz zz在亚洲| 亚洲国产精品一区二区第一页免| 中文字幕亚洲一区|