《RT-Thread實時操作系統(tǒng)內(nèi)核、驅(qū)動和應(yīng)用開發(fā)技術(shù)》全套教學(xué)課件_第1頁
《RT-Thread實時操作系統(tǒng)內(nèi)核、驅(qū)動和應(yīng)用開發(fā)技術(shù)》全套教學(xué)課件_第2頁
《RT-Thread實時操作系統(tǒng)內(nèi)核、驅(qū)動和應(yīng)用開發(fā)技術(shù)》全套教學(xué)課件_第3頁
《RT-Thread實時操作系統(tǒng)內(nèi)核、驅(qū)動和應(yīng)用開發(fā)技術(shù)》全套教學(xué)課件_第4頁
《RT-Thread實時操作系統(tǒng)內(nèi)核、驅(qū)動和應(yīng)用開發(fā)技術(shù)》全套教學(xué)課件_第5頁
已閱讀5頁,還剩857頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第1章RT-Thread嵌入式系統(tǒng)概述與開發(fā)基礎(chǔ)

1.1RT-Thread嵌入式系統(tǒng)概述全套可編輯PPT課件RT-Thread嵌入式系統(tǒng)概述RT-Thread,全稱RealTime-Thread,誕生于2006年,是國內(nèi)以開源中立、社區(qū)化發(fā)展起來的一款高可靠實時操作系統(tǒng),由睿賽德科技負責開發(fā)維護和運營。因其十五年的沉淀積累,專業(yè)化的運營推廣,其高可靠性、安全、高可伸縮性和中間組件豐富易用等特性極大地滿足了市場需求。目前已經(jīng)成為市面上裝機量最大(超20億臺)、開發(fā)者數(shù)量最多(超15萬)軟硬件生態(tài)最好的操作系統(tǒng)之一,被廣泛應(yīng)用于航空、電力、軌道交通、車載、工業(yè)自動化、消費電子等眾多行業(yè)領(lǐng)域。RT-Thread不僅僅是一個單一的實時性操作系統(tǒng),也是一個完備的應(yīng)用系統(tǒng),包含嵌入式系統(tǒng)所需的各種組件:如TCP/IP協(xié)議棧,文件系統(tǒng),C庫接口,以及GUI界面等。它還具有體積小、啟動快速、占用資源小、實時性高等特點,可用于家電、消費電子、醫(yī)療設(shè)備、工控等領(lǐng)域。1.1.1RT-Thread操作系統(tǒng)RT-Thread嵌入式系統(tǒng)概述RT-Thread系統(tǒng)底層主要采用C語言編寫,性能優(yōu)秀,目前已經(jīng)適配市面上眾多開發(fā)板,移植方便。針對資源受限的微處理器系統(tǒng),可以使用平臺工具,裁剪出僅需3KFlash,1.2KRAM存儲空間的NANO版本;對于資源豐富的設(shè)備,可以使用在線的軟件包配置工具,實現(xiàn)快速的模塊化裁剪,通過導(dǎo)入的軟件安裝包實現(xiàn)類似語音交互、多媒體、滑動控制等復(fù)雜功能。RT-Thread文檔資料豐富,官網(wǎng)文檔中心包含系統(tǒng)簡介、內(nèi)核、設(shè)備與驅(qū)動、組件及開發(fā)工具等內(nèi)容,每部分內(nèi)容都包含說明和案例,并提供詳細的API參考手冊,以供開發(fā)者學(xué)習和參考。RT-Thread(Real-TimeThread)是一個實時嵌入式操作系統(tǒng)(RTOS),經(jīng)過多年的發(fā)展,它已經(jīng)成為一種受歡迎的嵌入式系統(tǒng)選擇。以下是RT-Thread系統(tǒng)的一些關(guān)鍵發(fā)展階段:1.1.1RT-Thread操作系統(tǒng)RT-Thread嵌入式系統(tǒng)概述1.1.2RT-Thread發(fā)展歷程1.項目起源RT-Thread的項目始于2006年,最初是由中國開發(fā)者Bernie開發(fā)的一個小型嵌入式實時操作系統(tǒng)。起初,它是為了滿足一些嵌入式系統(tǒng)項目的需求而創(chuàng)建的。2.開源發(fā)布RT-Thread于2007年在中國大陸首次開源發(fā)布。開源使得更多的開發(fā)者可以參與項目,共同推動系統(tǒng)的發(fā)展。3.內(nèi)核架構(gòu)改進在項目的早期階段,RT-Thread的內(nèi)核采用了比較傳統(tǒng)的單內(nèi)核設(shè)計。隨著時間的推移,項目逐漸轉(zhuǎn)向了微內(nèi)核架構(gòu),這使得系統(tǒng)更加靈活和可定制。RT-Thread嵌入式系統(tǒng)概述4.多線程支持和實時性改進為了適應(yīng)更多實時應(yīng)用場景,RT-Thread增加了對多線程的支持,并優(yōu)化了系統(tǒng)的實時性能。5.設(shè)備驅(qū)動和硬件平臺支持RT-Thread引入了設(shè)備驅(qū)動框架,使得用戶可以方便地添加和管理硬件設(shè)備的驅(qū)動程序。同時,項目逐步增加了對不同硬件平臺的支持,包括各種處理器架構(gòu)。6.軟件包管理系統(tǒng)引入了軟件包管理系統(tǒng),使用戶能夠方便地選擇和管理他們所需的軟件組件,從而簡化系統(tǒng)的配置和定制。1.1.2RT-Thread發(fā)展歷程RT-Thread嵌入式系統(tǒng)概述RT-Thread經(jīng)歷了從初始的小型項目到一個功能豐富、靈活且受歡迎的嵌入式系統(tǒng)的演變。它的發(fā)展受到了全球嵌入式開發(fā)者社區(qū)的積極參與和推動。1.1.2RT-Thread發(fā)展歷程RT-Thread嵌入式系統(tǒng)概述RT-Thread是一個實時嵌入式操作系統(tǒng)(RTOS),其原理與架構(gòu)主要包括以下幾個方面:1.1.3RT-Thread原理與架構(gòu)1.微內(nèi)核架構(gòu)RT-Thread采用微內(nèi)核設(shè)計,將系統(tǒng)內(nèi)核分為核心部分和可選的模塊。核心部分包括調(diào)度器、任務(wù)管理和基礎(chǔ)服務(wù),而其他功能如文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧等則是作為可選模塊以插件形式存在。這種設(shè)計使得系統(tǒng)更加輕量、模塊化,用戶可以根據(jù)應(yīng)用需求選擇加載不同的功能模塊。RT-Thread嵌入式系統(tǒng)概述1.1.3RT-Thread原理與架構(gòu)2.多線程支持RT-Thread支持多線程操作,允許在一個應(yīng)用程序中同時運行多個任務(wù)。每個線程有自己的獨立的堆棧和上下文,這有助于提高系統(tǒng)的并發(fā)性和靈活性。3.實時性RT-Thread注重實時性能,通過實時調(diào)度器實現(xiàn)對任務(wù)的高效調(diào)度。實時性能對于嵌入式系統(tǒng)來說至關(guān)重要,尤其是在對響應(yīng)時間有嚴格要求的應(yīng)用中,如工業(yè)控制和汽車電子系統(tǒng)等。4.設(shè)備驅(qū)動框架RT-Thread提供了設(shè)備驅(qū)動框架,允許用戶方便地添加和管理硬件設(shè)備的驅(qū)動程序。這有助于提高系統(tǒng)對外部硬件的兼容性,同時使得硬件抽象更容易實現(xiàn)。RT-Thread嵌入式系統(tǒng)概述1.1.3RT-Thread原理與架構(gòu)5.軟件包管理系統(tǒng)RT-Thread引入了軟件包管理系統(tǒng),使得用戶可以方便地選擇和管理他們所需的軟件組件。這些軟件包包括各種驅(qū)動、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧等,有助于簡化系統(tǒng)的配置和定制。6.中斷服務(wù)機制嵌入式系統(tǒng)通常需要處理中斷,RT-Thread提供了中斷服務(wù)機制,用于處理外部事件和實時響應(yīng)。這對于與外設(shè)通信、傳感器輸入等操作至關(guān)重要。7.支持多種處理器架構(gòu)RT-Thread被設(shè)計為可以移植到多種處理器架構(gòu)上,包括ARM、MIPS、PowerPC等。這使得它適用于不同類型的硬件平臺。RT-Thread嵌入式系統(tǒng)概述1.1.3RT-Thread原理與架構(gòu)8.系統(tǒng)調(diào)度器RT-Thread的系統(tǒng)調(diào)度器負責任務(wù)的調(diào)度和管理,確保任務(wù)按照其優(yōu)先級和時間片輪轉(zhuǎn)的方式執(zhí)行。這有助于實現(xiàn)任務(wù)的合理分配和實時性能的優(yōu)化。9.內(nèi)存管理RT-Thread提供了內(nèi)存管理機制,包括動態(tài)內(nèi)存分配和釋放。這對于嵌入式系統(tǒng)來說很重要,因為資源是有限的。10.社區(qū)支持和開源RT-Thread是一個開源項目,擁有龐大的開發(fā)者社區(qū)。社區(qū)的支持和貢獻推動了系統(tǒng)的不斷改進和更新。RT-Thread嵌入式系統(tǒng)概述1.1.3RT-Thread原理與架構(gòu)RT-Thread以其微內(nèi)核架構(gòu)、實時性能和靈活性為特點,為嵌入式系統(tǒng)提供了一個強大的操作系統(tǒng)平臺。其開源性質(zhì)和活躍的社區(qū)生態(tài)也使得它成為嵌入式開發(fā)者首選的RTOS之一。RT-Thread嵌入式系統(tǒng)概述1.1.4RT-Thread應(yīng)用領(lǐng)域RT-Thread嵌入式系統(tǒng)在各種應(yīng)用領(lǐng)域都有廣泛的應(yīng)用,以下是一些RT-Thread在嵌入式系統(tǒng)中常見的應(yīng)用領(lǐng)域:1.工業(yè)自動化RT-Thread在工業(yè)控制系統(tǒng)中被廣泛應(yīng)用,用于實時控制和監(jiān)控。它的實時性和多線程支持使得它適合處理工業(yè)自動化中的實時任務(wù),如運動控制和傳感器數(shù)據(jù)采集。2.醫(yī)療設(shè)備在醫(yī)療領(lǐng)域,RT-Thread用于控制和監(jiān)測各種醫(yī)療設(shè)備,包括呼吸機、心電圖儀、血壓計等。RT-Thread嵌入式系統(tǒng)概述1.1.4RT-Thread應(yīng)用領(lǐng)域3.物聯(lián)網(wǎng)(IoT)設(shè)備RT-Thread適用于物聯(lián)網(wǎng)設(shè)備,如智能家居系統(tǒng)、智能傳感器和嵌入式物聯(lián)網(wǎng)網(wǎng)關(guān)。其輕量級設(shè)計使得它能夠在資源受限的設(shè)備上運行。4.汽車電子系統(tǒng)在汽車領(lǐng)域,RT-Thread可以用于車載控制系統(tǒng)、嵌入式信息娛樂系統(tǒng)、駕駛輔助系統(tǒng)等。5.家電和消費電子RT-Thread可用于控制家用電器,如智能電視、智能空調(diào)、智能冰箱等。其多線程支持和可移植性使得它適用于各種不同的嵌入式設(shè)備。RT-Thread嵌入式系統(tǒng)概述1.1.4RT-Thread應(yīng)用領(lǐng)域6.網(wǎng)絡(luò)設(shè)備RT-Thread可以用于網(wǎng)絡(luò)設(shè)備,如路由器、交換機和網(wǎng)絡(luò)攝像頭。其支持網(wǎng)絡(luò)協(xié)議棧和設(shè)備驅(qū)動框架使得它適用于處理網(wǎng)絡(luò)通信任務(wù)。7.軍事和航空航天在軍事和航空航天領(lǐng)域,對實時性和可靠性的要求非常高。RT-Thread可以應(yīng)用于飛行控制系統(tǒng)、導(dǎo)彈控制系統(tǒng)等。8.能源管理在能源領(lǐng)域,RT-Thread可以用于監(jiān)控和控制能源設(shè)備,如太陽能控制系統(tǒng)、風力發(fā)電控制系統(tǒng)等。RT-Thread嵌入式系統(tǒng)概述1.1.4RT-Thread應(yīng)用領(lǐng)域9.教育和研究RT-Thread也廣泛應(yīng)用于嵌入式系統(tǒng)的教育和研究領(lǐng)域。和研究人員可以使用RT-Thread來學(xué)習和研究實時嵌入式系統(tǒng)的開發(fā)。RT-Thread在各個領(lǐng)域的應(yīng)用表現(xiàn)出了很大的靈活性,這使得它成為許多嵌入式系統(tǒng)項目的首選。其開源性質(zhì)和豐富的社區(qū)支持也為開發(fā)者提供了更多的資源和工具。第1章RT-Thread嵌入式系統(tǒng)概述與開發(fā)基礎(chǔ)

1.2RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)RT-Thread與市場上已有的RTOS如FreeRTOS、uC/OS的主要區(qū)別之一是,它不僅僅是一個實時內(nèi)核,還具備豐富的中間層組件,如下圖所示。

RT-Thread系統(tǒng)架構(gòu)RT-Thread系統(tǒng)架構(gòu)具體包括以下部分:

RT-Thread系統(tǒng)架構(gòu)內(nèi)核層:RT-Thread內(nèi)核,是RT-Thread的核心部分,包括了內(nèi)核系統(tǒng)中對象的實現(xiàn),例

如多線程及其調(diào)度、信號量、郵箱、消息隊列、內(nèi)存管理、定時器等;libcpu/BSP(芯片移植相關(guān)文件/板級支持包)與硬件密切相關(guān),由外設(shè)驅(qū)動和CPU移植構(gòu)成。組件與服務(wù)層:組件是基于RT-Thread內(nèi)核之上的上層軟件,例如虛擬文件系統(tǒng)、FinSH命令行界面、網(wǎng)絡(luò)框架、設(shè)備框架等。采用模塊化設(shè)計,做到組件內(nèi)部高內(nèi)聚,組件之間低耦合。RT-Thread軟件包:運行于RT-Thread物聯(lián)網(wǎng)操作系統(tǒng)平臺上,面向不同應(yīng)用領(lǐng)域的通用軟件組件,由描述信息、源代碼或庫文件組成。RT-Thread提供了開放的軟件包平臺,這里存放了官方提供或開發(fā)者提供的軟件包,該平臺為開發(fā)者提供了眾多可重用軟件包的選擇,這也是RT-Thread生態(tài)的重要組成部分。。RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)1.ZI-ARMEmbed本書所依托的開發(fā)平臺為嵌入式原型機ZI-ARMEmbed,集成了ARMCortex-M4STM32F407控制器,2.8寸真彩LCD液晶屏,可配置的無線通信模塊(支持ZigBee/WiFi/Lora/4G等);集成光照強度傳感器、三軸傳感器、空氣質(zhì)量傳感器、大氣壓力傳感器、人體紅外傳感器、震動傳感器、火焰?zhèn)鞲衅?、霍爾傳感器、燃氣傳感器、RGB和LED燈、步進電機傳感器、風扇傳感器、鎖定檢測光柵傳感器、電磁鎖傳感器、溫濕度傳感器、指紋模塊等;板載信號指示燈:電源、電池、網(wǎng)絡(luò)、數(shù)據(jù),四路功能按鍵,四路LED燈,集成鋰電池接口,集成電源管理芯片,支持電池的充電管理和電量測量;板載USB串口,Ti仿真器接口,ARM仿真器接口;集成以太網(wǎng);集成四路RJ45工業(yè)接口,提供ARM芯片功能輸出,硬件包含O、ADC3.3V、ADC5V、UART、RS485、兩路繼電器等功能,提供四路3.3V、5V、12V電源輸出。

RT-Thread硬件開發(fā)平臺RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

RT-Thread硬件開發(fā)平臺ZI-ARMEmbed嵌入式原型機系統(tǒng)ZI-ARMEmbed引腳對照表RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

RT-Thread硬件開發(fā)平臺2.STM32處理器STM32系列微控制器是一系列基于ARMCortex-M內(nèi)核的嵌入式微控制器,是ST(意法半導(dǎo)體)公司以ARM公司的Cortex-M0、Cortex-M3、Cortex-M4和Coretex-M7四種RISC內(nèi)核開發(fā)的系列產(chǎn)品STM32系列芯片型號與內(nèi)核對應(yīng)關(guān)系STM32系列的微控制器在指令集方面是向后兼容的,而相同封裝的芯片,大部分引腳的功能也相同(少數(shù)電源與新增功能引腳有區(qū)別),用戶可以在不修改印制電路板的條件下,根據(jù)需要更換不同資源(FLASH、RAM),甚至不同內(nèi)核的芯片來完善自己的設(shè)計工作。RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

ZI-ARMEmbed硬件平臺連接1.仿真器連接將ARM仿真器與嵌入式原型機板卡的ARM調(diào)試口相連接,仿真器USB端與電腦相連接仿真器連接RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

ZI-ARMEmbed硬件平臺連接2.串口連接1)使用MiniUSB線將嵌入式原型機板卡與PC機相連。串口連接2)在PC機上右鍵點擊“我的電腦”,點擊“管理”進入計算機管理頁面。3)點擊“設(shè)備管理器”,找到端口(COM和LPT),查看串口的端口號:比如COM5(每臺電腦串口端口號可能都不一樣)。若沒有找到端口則有兩種可能,第一種是沒有按照實驗要求使用USB線連接硬件與PC機(重新檢查連接即可),另一種為沒有安裝串口驅(qū)動(串口第一次使用需要安裝驅(qū)動,安裝時只需要根據(jù)相應(yīng)提示進行下去就可以),驅(qū)動目錄在DISK-Packages\53-常用驅(qū)動程序\USB串口驅(qū)動目錄下安裝CP210x_Drivers-win7.zip或者CH340_Drivers.zip即可(根據(jù)自己實際的硬件去選擇不同的驅(qū)動)。RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

MobaXterm串口工具1.串口配置1)安裝MobaXterm軟件,雙擊MobaXterm.exe文件即可啟動。安裝MobaXterm2)啟動軟件之后點擊“Session”新建會話,會話類型選擇“Serial”串口,在“Serialport”選擇對應(yīng)的串口號(Serialport:COM5,每個電腦可能不一樣),串口設(shè)置(波特率-數(shù)據(jù)位-停止位-校驗位-流控制):115200-8-1-None-None。設(shè)置完成之后點擊“OK”即可。串口設(shè)置RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

MobaXterm串口工具2.串口使用1)嵌入式原型開發(fā)套件硬件上電啟動后,會輸出串口打印消息。2)在MobaXterm工具的串口終端可以看到啟動消息,并進入到FinSH控制臺,如圖1.12所示。FinSH控制臺RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

J-FlashARM燒寫工具1.軟件安裝J-FlashARM軟件,可以將hex文件燒寫到ARM內(nèi)核的單片機(如stm32f407)中。雙擊安裝包文件,默認安裝。(路徑:DISK-Packages\02-嵌入式接口技術(shù)\JLinkARM\Setup_JLinkARM_V462.exe)。特別說明:安裝J-FlashARM軟件時,如果已經(jīng)安裝了IARforARM軟件,會彈出如下提示框。J-FlashARM軟件安裝1此提示框提示是否需要更換掉IARforARM軟件安裝路徑下的JLinkARM.dll文件。點擊SelectAll按鈕,勾選IAREmbeddedWorkbenchforARM(DLLV4.62in“…\IAR\bin”)選項點擊OK按鈕,按照默認,完成安裝。J-FlashARM軟件安裝2RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

J-FlashARM燒寫工具2.軟件配置1)安裝完成后,可以在開始菜單欄的SEGGER文件夾下找到J-FlashARM軟件。2)根據(jù)實際的硬件需要進行配置:打開該程序后,進入如圖1.15所示界面,點擊“Options->Projectsettings”,進入設(shè)置界面。設(shè)置界面RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

J-FlashARM燒寫工具2.軟件配置選擇“TargetInterface”選項卡,在界面的第一個下拉框列表中選擇“SWD”選擇“SWD”選擇“CPU”選項卡,選中第一行的“Device”選項,在Device選項框中選擇“STSTM32F407VE”(如果是燒寫RF2無線模組,對應(yīng)的Devices選擇“STSTM32F103CB”),設(shè)置完畢最后點擊“確定”。選擇“STSTM32F407VE”RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

J-FlashARM燒寫工具2.軟件配置3)設(shè)置完成后,點擊“Target->Connect”測試與硬件的連接是否正常。測試與硬件的連接連接成功后,在該界面下的LOG窗口下會顯示“Connectedsuccessfully”。連接成功RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

J-FlashARM燒寫工具3.燒寫固件1)點擊“File”->Opendatafile,打開要燒寫入嵌入式原型機板卡的hex文件。燒寫固件1RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

J-FlashARM燒寫工具3.燒寫固件2)然后點擊“Target->Erasechip”,擦除單片機的Flash扇區(qū)。燒寫固件2RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)

J-FlashARM燒寫工具3.燒寫固件3)最后點擊“Target->Program&Verify”,將hex文件燒寫到嵌入式原型機板卡的MCU中。燒寫固件3RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)1.2.2開發(fā)設(shè)計與實踐本項目使用J-FlashARM軟件燒錄鏡像文件,使用嵌入式原型機板卡的LCD屏幕顯示人機交互界面,K1~K4四個功能按鍵用于用戶輸入,功能按鍵對傳感器和無線設(shè)備參數(shù)進行操作。RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)1.2.3開發(fā)步驟與驗證(1)準備嵌入式原型機板卡ZI-ARMEmbed、ARM仿真器、MiniUSB線。(2)完成仿真器、串口(MiniUSB線)、12V電源的連接。(3)使用MobaXterm工具創(chuàng)建串口終端并打開,串口設(shè)置(波特率-數(shù)據(jù)位-停止位-校驗位-流控制):115200-8-1-None-None。

硬件部署

程序下載(1)運行J-FlashARM軟件打開鏡像hex文件。(2)點擊J-FlashARM軟件“Target->Program&Verify”,將hex文件燒寫到板卡的STM32F407芯片中。(3)拔掉ARM仿真器,按下復(fù)位鍵啟動程序。RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)1.嵌入式原型機板卡程序下載成功之后,LCD屏幕點亮,并顯示傳感器狀態(tài)信息,可以通過K1、K2、K3、K4共四個功能按鍵與系統(tǒng)進行交互。其中【K1】進行翻頁,【K2】進行選擇和取消選擇,【K3】/【K4】進行上下移動。頁面1顯示的各種采集類傳感器數(shù)據(jù),頁面2顯示的是各種控制類傳感器狀態(tài)及開關(guān)操作,頁面3顯示的是各種安防類傳感器狀態(tài),頁面4顯示的是無線設(shè)備參數(shù)。頁面1:各種采集類傳感器數(shù)據(jù)。

驗證效果各種采集類傳感器數(shù)據(jù)RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)1.嵌入式原型機板卡頁面2:各種控制類傳感器狀態(tài)及開關(guān)操作。

驗證效果各種控制類傳感器狀態(tài)及開關(guān)操作頁面3:各種安防類傳感器狀態(tài)。各種安防類傳感器狀態(tài)頁面4:無線設(shè)備參數(shù)。無線設(shè)備參數(shù)RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)2.FinSH控制臺1)程序啟動后在MobaXterm工具的串口終端可以看到啟動消息,并進入到FinSH控制臺。2)在MobaXterm串口終端FinSH控制臺輸入“help”命令(輸入之前需要把輸入法切換到英文),輸出系統(tǒng)可使用的命令,在控制臺中使用這些不同的命令可得到不同的輸出信息。3)可以參照實驗步驟去操作嵌入式原型機板卡的功能,進一步加深對板子的認識。

驗證效果RT-Thread嵌入式系統(tǒng)開發(fā)基礎(chǔ)本小節(jié)首先學(xué)習了RT-Thread系統(tǒng)架構(gòu)、J-FlashARM燒寫工具,然后使用嵌入式原型機板卡的LCD屏幕顯示人機交互界面,K1~K4四個功能按鍵用于用戶輸入,功能按鍵對傳感器和無線設(shè)備參數(shù)進行操作與開發(fā)。1.2.4小結(jié)第1章RT-Thread嵌入式系統(tǒng)概述與開發(fā)基礎(chǔ)

1.3RT-ThreadStudio應(yīng)用開發(fā)RT-ThreadStudio應(yīng)用開發(fā)嵌入式系統(tǒng)集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE)是一種用于嵌入式系統(tǒng)開發(fā)的集成工具,它提供了一套功能強大的工具和資源,以幫助開發(fā)人員創(chuàng)建、編譯、調(diào)試和測試嵌入式系統(tǒng)的軟件和硬件。以下是一些常見的嵌入式系統(tǒng)IDE:KeilμVision:Keil是一家知名的嵌入式工具提供商,其μVisionIDE廣泛用于開發(fā)ARMCortex-M微控制器和其他嵌入式系統(tǒng)。它包括編譯器、調(diào)試器、仿真器和各種插件。IAREmbeddedWorkbench:IARSystems的EmbeddedWorkbench是另一個受歡迎的IDE,用于多種不同的嵌入式平臺,包括ARM、MSP430和Renesas等。RT-ThreadStudio應(yīng)用開發(fā)AtmelStudio:AtmelStudio是MicrochipTechnology(之前是AtmelCorporation)為其AVR和SAM微控制器提供的IDE。它集成了編譯器、調(diào)試工具和AtmelSTART用于快速啟動項目的庫。Eclipse:Eclipse是一個免費的、開源的IDE平臺,可通過各種插件擴展以支持不同的嵌入式系統(tǒng)開發(fā)。它通常需要額外的插件來支持特定的硬件架構(gòu)和編程語言。PlatformIO:PlatformIO是一個用于嵌入式開發(fā)的開源IDE,支持多種平臺和硬件架構(gòu),包括Arduino、ESP8266、ESP32、STM32等。CodeComposerStudio:CodeComposerStudio是德州儀器(TexasInstruments)為其TivaC和CCS系列微控制器提供的集成開發(fā)環(huán)境。RT-ThreadStudio應(yīng)用開發(fā)RT-ThreadStudio:是一個基于RT-Thread(Real-TimeThread)實時操作系統(tǒng)的集成開發(fā)環(huán)境(IDE),專門設(shè)計用于嵌入式系統(tǒng)和物聯(lián)網(wǎng)設(shè)備。本節(jié)要求掌握的知識點如下:1.了解RT-ThreadStudio軟件簡介。2.掌握RT-ThreadStudio新建工程。3.掌握RT-ThreadStudio編譯、調(diào)試及程序下載基本開發(fā)方法。RT-ThreadStudio應(yīng)用開發(fā)RT-ThreadStudio是由RT-Thread團隊開發(fā)的一款集成開發(fā)環(huán)境(IDE),專門用于支持和開發(fā)基于RT-Thread實時操作系統(tǒng)的嵌入式應(yīng)用程序。它提供了一套工具,幫助開發(fā)人員更容易地創(chuàng)建、調(diào)試和部署嵌入式系統(tǒng)。以下是一些RT-ThreadStudio的關(guān)鍵特點和功能:1.基于EclipseRT-ThreadStudio的基礎(chǔ)是EclipseIDE,這是一個流行的開源綜合性IDE平臺。這使得RT-ThreadStudio可以利用Eclipse生態(tài)系統(tǒng)中的豐富插件和工具。2.支持多種處理器架構(gòu)RT-ThreadStudio支持多種處理器架構(gòu),包括ARM、MIPS、RISC-V等。這使得它適用于不同類型的嵌入式系統(tǒng)。1.3.1RT-ThreadStudio分析RT-ThreadStudio應(yīng)用開發(fā)3.RT-Thread集成IDE集成了RT-Thread操作系統(tǒng),提供了對RT-ThreadAPI的直觀支持,簡化了RT-Thread項目的創(chuàng)建和配置。4.圖形化配置工具RT-ThreadStudio提供了圖形化配置工具,允許開發(fā)人員通過界面配置RT-Thread操作系統(tǒng),而無需手動編輯配置文件。5.全面的調(diào)試支持支持多種調(diào)試工具,包括GDB調(diào)試器,使開發(fā)人員能夠進行全面的調(diào)試和性能分析。6.項目管理工具提供了項目管理工具,方便開發(fā)人員管理復(fù)雜的嵌入式項目,包括代碼組織、構(gòu)建和部署。1.3.1RT-ThreadStudio分析RT-ThreadStudio應(yīng)用開發(fā)RT-ThreadStudio旨在簡化嵌入式系統(tǒng)的開發(fā)流程,提高開發(fā)效率,特別是對于使用RT-Thread操作系統(tǒng)的項目,如圖1.27所示。1.3.1RT-ThreadStudio分析圖1.27RT-ThreadStudioRT-ThreadStudio應(yīng)用開發(fā)安裝部署RT-ThreadStudio開發(fā)環(huán)境,使用RT-ThreadStudio新建工程,編譯和下載程序;熟悉RT-ThreadStudio開發(fā)環(huán)境的常用操作,熟悉RT-ThreadStudio程序調(diào)試。1.3.2開發(fā)設(shè)計與實踐RT-ThreadStudio應(yīng)用開發(fā)1)準備嵌入式原型機板卡ZI-ARMEmbed、ARM仿真器、MiniUSB線。2)完成仿真器、串口(MiniUSB線)、12V電源的連接。3)使用MobaXterm工具創(chuàng)建串口終端并打開,串口設(shè)置(波特率-數(shù)據(jù)位-停止位-校驗位-流控制):115200-8-1-None-None。1.3.3開發(fā)步驟與驗證

硬件部署RT-ThreadStudio應(yīng)用開發(fā)1)RT-ThreadStudio的軟件包已經(jīng)存放在隨書資源包里面,也可以從官方/studio.html下載純凈版,但是開發(fā)過程中推薦使用隨書資源包中的安裝包,該安裝包已經(jīng)集成了必備的系統(tǒng)內(nèi)核和芯片BSP包。2)將RT-ThreadStudio.zip壓縮包放在任意目錄下解壓,不要有中文路徑,使用右鍵以管理員的身份運行studio.exe?;蛘哂益Istudio.exe選擇屬性,在屬性頁面的兼容性中勾選“以管理員的身份運行此程序”,如圖1.28所示。1.3.3開發(fā)步驟與驗證

安裝軟件RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

安裝軟件圖1.28安裝RT-ThreadStudio1RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

安裝軟件圖1.29安裝RT-ThreadStudio2軟件打開后如圖1.29所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

安裝軟件圖1.30安裝RT-ThreadStudio3

打開RT-ThreadStudio軟件后,在工具欄找到“

”圖標,名稱為“SDKManager”,可以進行SDK軟件包管理,如圖1.30所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

安裝軟件圖1.31安裝RT-ThreadStudio44)本開發(fā)中的硬件主芯片為STM32F407,RT-Thread采用4.1.0版本。需要保障SDKManager管理器中RT-Thread_Source_Code對應(yīng)的4.1.0版本內(nèi)核、Chip_Support_Packages對應(yīng)的STM32F4已經(jīng)安裝,安裝后的截圖如下所示,提供的軟件包中這些組件是默認安裝好的,如圖1.31和1.32所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

安裝軟件圖1.32安裝RT-ThreadStudio5RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.33新建工程11.新建工程1)打開RT-ThreadStudio軟件,在菜單欄選擇“文件->新建->RT-Thread項目”創(chuàng)建RT-Thread項目(或者“文件->新建->項目->RT-Thread項目”),如圖1.33所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.34新建工程22)根據(jù)如下的配置選項進行設(shè)置:工程名:02-Template;RT-Thread:4.1.0;廠商:STM;系列:STM32F4;子系列:STM32F407;芯片:STM32F407VE;調(diào)試器:J-Link;接口:SWD。設(shè)置完成后,點擊完成即可創(chuàng)建02-Template工程,如圖1.34所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.35新建工程33)創(chuàng)建好的02-Template工程完成后如圖1.35所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.36工程編譯12.工程編譯1)點擊工具欄“

”構(gòu)建按鈕完成項目的編譯,如圖1.36所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用2)在控制臺窗口提示編譯完成并沒有報錯即表示程序編譯成功。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.37工程下載13.工程下載1)如果需要將程序下載到硬件板卡,可點擊工具欄“

”下載按鈕,即可完成程序的下載,如圖1.37所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用2)在控制臺窗口提示執(zhí)行完畢并沒有報錯即表示完成程序的下載。3)程序下載完成后,按下硬件板卡的復(fù)位鍵即可運行新的程序,在MobaXterm串口終端可以看到程序的啟動打印信息。\|/-RT-ThreadOperatingSystem/|\4.1.0buildOct13202217:33:302006-2022CopyrightbyRT-Threadteam[D/main]HelloRT-Thread!msh>[D/main]HelloRT-Thread![D/main]HelloRT-Thread!RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.38調(diào)試按鈕啟動調(diào)試功能4.工程調(diào)試1)如果需要進行程序調(diào)試,可點擊工具欄“

”調(diào)試按鈕啟動調(diào)試功能,如圖1.38所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.39工具欄2)進入調(diào)試功能后,工具欄中出現(xiàn)如圖1.39所示調(diào)試使用按鈕。下面是部分按鈕的使用解釋。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用工具欄圖標圖標的功能表示程序啟動。表示程序暫停,暫停后點擊程序啟動繼續(xù)運行。表示調(diào)試停止,點擊后調(diào)試程序退出,退出調(diào)試模式。表示單步跳入,程序跳入,比如跳入一個函數(shù)內(nèi)部。表示單步跳過,程序不會跳入具體函數(shù)內(nèi)部,可理解單行調(diào)試。表示單步返回,當進入函數(shù)內(nèi)部時,使用此按鈕單步跳出該函數(shù),進入外部函數(shù)。表示指令步進模式,選擇此模式后,可實現(xiàn)匯編代碼的單步調(diào)試。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.40添加斷點3)斷點:在調(diào)試模式下,在程序需要的位置雙擊序號處即可添加斷點,如圖1.40所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.41取消斷點點擊工具欄“”繼續(xù)按鈕全速運行程序,程序運行到斷點處會停止運行。在右側(cè)的斷點管理器中可以查看到所有的斷點,這里可以將不需要的斷點取消掉,如圖1.41所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.42跟蹤變量14)變量:在右側(cè)分欄中找到變量窗口,這個窗口中默認顯示當前所在函數(shù)中的所有變量,如圖1.42所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.43跟蹤變量2也可以手動輸入你想查閱的變量名,在表達式窗口中輸入表達式即可。如下輸入count變量,如圖1.43所示RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.44工具欄5)外設(shè)寄存器:由于RTT軟件的問題,要查看寄存器的數(shù)值時需要這里配置CSP包的版本,在新建工程時選擇的版本是0.2.2,所以下面就需要修改配置路徑。點擊工具欄“

”調(diào)試配置按鈕,如圖1.44所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.45配置工程1在SVDPath欄中找到filepath,將里面的0.2.0修改為的版本0.2.2,如圖1.45和1.46所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.46

配置工程2RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用圖1.47查看寄存器修改完成后點擊確定,這時候重新啟動調(diào)試按鈕即可正常顯示寄存器的數(shù)值。點擊相應(yīng)的寄存器,會在狀態(tài)欄中顯示具體的寄存器值,如圖1.47所示。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

工具使用6)程序調(diào)試完后,點擊工具欄“

”停止圖標退出調(diào)試狀態(tài)。RT-ThreadStudio應(yīng)用開發(fā)1.3.3開發(fā)步驟與驗證

驗證效果1)關(guān)閉RT-ThreadStudio軟件,拔掉仿真器。按下嵌入式原型機板卡電源按鍵重新開機上電。2)本項目創(chuàng)建了一個初始工程,在MobaXterm串口終端默認每秒打印一次“HelloRT-Thread!”消息。\|/-RT-ThreadOperatingSystem/|\4.1.0buildOct13202217:33:302006-2022CopyrightbyRT-Threadteam[D/main]HelloRT-Thread!msh>[D/main]HelloRT-Thread![D/main]HelloRT-Thread!3)也可以參考實驗步驟3熟悉RT-ThreadStudio軟件的使用和調(diào)試,自行設(shè)置程序斷點,進行單步調(diào)試,觀察程序中不同窗口的具體數(shù)值,深入了解工具的使用。RT-ThreadStudio應(yīng)用開發(fā)1.3.4小結(jié)本小節(jié)學(xué)習了RT-ThreadStudio基本開發(fā)工具,利用掌握RT-ThreadStudio進行新建工程、編譯、調(diào)試及程序下載基本開發(fā)方法。第1章RT-Thread嵌入式系統(tǒng)概述與開發(fā)基礎(chǔ)

1.4RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.RT-Thread系統(tǒng)啟動流程RT-Thread啟動代碼統(tǒng)一入口為rtthread_startup(),芯片啟動文件在完成必要工作(如初始化時鐘、配置中斷向量表、初始化堆棧等)后,最終會在程序跳轉(zhuǎn)時,跳轉(zhuǎn)至RT-Thread的啟動入口中。RT-Thread的啟動流程如下:1)全局關(guān)中斷,初始化與系統(tǒng)相關(guān)的硬件。2)打印系統(tǒng)版本信息,初始化系統(tǒng)內(nèi)核對象(如定時器、調(diào)度器)。3)初始化用戶main線程(同時會初始化線程棧),在main線程中對各類模塊依次進行初始化。4)初始化軟件定時器線程、初始化空閑線程。5)啟動調(diào)度器,系統(tǒng)切換到第一個線程開始運行(如main線程),并打開全局中斷。1.4.1RT-Thread系統(tǒng)移植原理分析RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)2.啟動文件(zonesion/common/LIB/Libraries/startup_stm32f407xx.S)

啟動文件(startup.s)由芯片廠商提供,位于芯片固件庫中。每款芯片都有相對應(yīng)的啟動文件,在不同開發(fā)環(huán)境下啟動文件也不相同。當系統(tǒng)加入RT-Thread之后,會將RT-Thread的啟動放在調(diào)用main()函數(shù)之前。1.4.1RT-Thread系統(tǒng)移植原理分析RT-Thread啟動在startup.s中主要完成初始化時鐘、配置中斷向量表;完成全局/靜態(tài)變量的初始化工作;初始化堆棧;庫函數(shù)的初始化;程序的跳轉(zhuǎn)等內(nèi)容。3.libcpu(rt-thread/libcpu)

RT-Thread的libcpu抽象層向下提供了一套統(tǒng)一的CPU架構(gòu)移植接口,這部分接口包含了全局中斷開關(guān)函數(shù)、線程上下文切換函數(shù)、時鐘節(jié)拍的配置和中斷函數(shù)、Cache等等內(nèi)容,RT-Thread支持的cpu架構(gòu)在源碼的libcpu文件夾下。RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)4.上下文切換(rt-thread/libcpu/arm/cortex-m4/context_gcc.S)

上下文切換(context_xx.s)表示CPU從一個線程切換到另一個線程、或者線程與中斷之間的切換等。在上下文切換過程中,CPU一般會停止處理當前運行的代碼,并保存當前程序運行的具體位置以便之后繼續(xù)運行。1.4.1RT-Thread系統(tǒng)移植原理分析上下文切換接口函數(shù)RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)5.線程初始化(rt-thread/libcpu/arm/cortex-m4/cpuport.c)線程棧初始化(cpuport.c):在RT-Thread中,線程具有獨立的棧,當進行線程切換時,會將當前線程的上下文存在棧中,當線程要恢復(fù)運行時,再從棧中讀取上下文信息,進行恢復(fù)。rt_hw_hard_fault_exception()為故障異常處理函數(shù),在發(fā)生硬件錯誤時,執(zhí)行HardFault_Handler中斷,會執(zhí)行該函數(shù)。該文件中主要實現(xiàn)線程棧的初始化rt_hw_stack_init()與hardfault異常處理函數(shù)1.4.1RT-Thread系統(tǒng)移植原理分析線程棧初始化接口函數(shù)RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)6.中斷與異常在Cortex-M內(nèi)核上,所有中斷都采用中斷向量表的方式進行處理,即當一個中斷觸發(fā)時,處理器將直接判定是哪個中斷源,然后直接跳轉(zhuǎn)到相應(yīng)的固定位置進行處理,不需要再自行實現(xiàn)中斷管理。7.板級文件板級文件(board.c和board.h)主要是針對rt_hw_board_init()函數(shù)內(nèi)容的實現(xiàn),該函數(shù)在板級配置文件board.c中,函數(shù)中做了許多系統(tǒng)啟動必要的工作,其中包含:1)配置系統(tǒng)時鐘。2)實現(xiàn)OS節(jié)拍。3)初始化外設(shè):如GPIO/UART等等。4)設(shè)置控制臺的串口設(shè)備。5)初始化系統(tǒng)內(nèi)存堆,實現(xiàn)動態(tài)堆內(nèi)存管理。6)板級自動初始化,使用INIT_BOARD_EXPORT()自動初始化的函數(shù)會在此處被初始化。7)其他必要的初始化。1.4.1RT-Thread系統(tǒng)移植原理分析RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.1RT-Thread系統(tǒng)移植原理分析/*************************************************************************************************名稱:rt_hw_board_init()*功能:板級初始化************************************************************************************************/RT_WEAKvoidrt_hw_board_init(){externvoidhw_board_init(char*clock_src,int32_tclock_src_freq,int32_tclock_target_freq);

/*Heapinitialization*/#ifdefined(RT_USING_HEAP)rt_system_heap_init((void*)HEAP_BEGIN,(void*)HEAP_END);//堆內(nèi)存初始化#endif

hw_board_init(BSP_CLOCK_SOURCE,BSP_CLOCK_SOURCE_FREQ_MHZ,BSP_CLOCK_SYSTEM_FREQ_MHZ);//板級初始化

/*Settheshellconsoleoutputdevice*/#ifdefined(RT_USING_DEVICE)&&defined(RT_USING_CONSOLE)rt_console_set_device(RT_CONSOLE_DEVICE_NAME);//設(shè)置控制臺的調(diào)用的串口設(shè)備名#endif

/*Boardunderlyinghardwareinitialization*/#ifdefRT_USING_COMPONENTS_INITrt_components_board_init();//初始化組件#endif}RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.1RT-Thread系統(tǒng)移植原理分析

在rt_hw_board_init函數(shù)中還會調(diào)用hw_board_init函數(shù),該函數(shù)中進行的就是hal庫的初始化、系統(tǒng)時鐘的配置clk_init、系統(tǒng)滴答時鐘的配置rt_hw_systick_init、pin設(shè)備和串口設(shè)備的打開等等。/*************************************************************************************************名稱:hw_board_init()*功能:板級初始化************************************************************************************************/voidhw_board_init(char*clock_src,int32_tclock_src_freq,int32_tclock_target_freq){externvoidrt_hw_systick_init(void);externvoidclk_init(char*clk_source,intsource_freq,inttarget_freq);

#ifdefSCB_EnableICache/*EnableI-Cache---------------------------------------------------------*/SCB_EnableICache();#endif

#ifdefSCB_EnableDCache/*EnableD-Cache---------------------------------------------------------*/SCB_EnableDCache();#endif/*HAL_Init()functioniscalledatthebeginningoftheprogram*/HAL_Init();//hal庫初始化,完成中斷分組等等RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.1RT-Thread系統(tǒng)移植原理分析/*enableinterrupt*/__set_PRIMASK(0);/*Systemclockinitialization*/clk_init(clock_src,clock_src_freq,clock_target_freq);//系統(tǒng)時鐘初始化/*disbaleinterrupt*/__set_PRIMASK(1);

rt_hw_systick_init();//系統(tǒng)滴答時鐘初始化

/*Pindriverinitializationisopenbydefault*/#ifdefRT_USING_PINexternintrt_hw_pin_init(void);rt_hw_pin_init();//pin設(shè)備初始化#endif

/*USARTdriverinitializationisopenbydefault*/#ifdefRT_USING_SERIALexternintrt_hw_usart_init(void);rt_hw_usart_init();//串口設(shè)備注冊#endif}RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)8.配置系統(tǒng)鬧鐘系統(tǒng)時鐘的配置函數(shù)是在drv_clk.c文件中clk_init函數(shù)進行,是給各個硬件模塊提供工作時鐘的基礎(chǔ),一般在hw_board_init()函數(shù)中進行調(diào)用,位于drv_common.c文件中。RT-ThreadStudio軟件默認生成的代碼使用的是內(nèi)部時鐘,由于各家廠商使用的外部晶振頻率不一定相同,所以這一點需要各板級廠商根據(jù)需求進行修改clk_init函數(shù)來啟動外部晶振,下面是這里調(diào)用的一種方式,這里使用的外部晶振源為8MHz。1.4.1RT-Thread系統(tǒng)移植原理分析/*************************************************************************************************名稱:clk_init(char*clk_source,intsource_freq,inttarget_freq)*功能:時鐘源初始化*參數(shù):clk_source時鐘源字符描述,比如HSE,表示外部晶振源*參數(shù):source_freq晶振源的頻率*參數(shù):target_freq晶振源的目標頻率************************************************************************************************/voidclk_init(char*clk_source,intsource_freq,inttarget_freq){if(strcmp(clk_source,"HSE")==0)//外部晶振{RCC_OscInitTypeDefRCC_OscInitStruct={0};RCC_ClkInitTypeDefRCC_ClkInitStruct={0};

/**Configurethemaininternalregulatoroutputvoltage*/__HAL_RCC_PWR_CLK_ENABLE();RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.1RT-Thread系統(tǒng)移植原理分析__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);/**InitializestheCPU,AHBandAPBbussesclocks*/RCC_OscInitStruct.OscillatorType=RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState=RCC_HSE_ON;RCC_OscInitStruct.PLL.PLLState=RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource=RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLM=8;RCC_OscInitStruct.PLL.PLLN=target_freq*2;RCC_OscInitStruct.PLL.PLLP=RCC_PLLP_DIV2;RCC_OscInitStruct.PLL.PLLQ=7;if(HAL_RCC_OscConfig(&RCC_OscInitStruct)!=HAL_OK){Error_Handler();}/**InitializestheCPU,AHBandAPBbussesclocks*/RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider=RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider=RCC_HCLK_DIV4;RCC_ClkInitStruct.APB2CLKDivider=RCC_HCLK_DIV2;RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.1RT-Thread系統(tǒng)移植原理分析if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct,FLASH_LATENCY_5)!=HAL_OK){Error_Handler();}}else{system_clock_config(target_freq);}}RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)9.實現(xiàn)OS節(jié)拍OS節(jié)拍也叫時鐘節(jié)拍或OStick。任何操作系統(tǒng)都需要提供一個時鐘節(jié)拍,以供系統(tǒng)處理所有和時間有關(guān)的事件。時鐘節(jié)拍的實現(xiàn):通過硬件timer實現(xiàn)周期性中斷,在定時器中斷中調(diào)用rt_tick_increase()函數(shù)實現(xiàn)全局變量rt_tick自加,從而實現(xiàn)時鐘節(jié)拍。一般地,在CortexM上直接使用內(nèi)部的滴答定時器Systick實現(xiàn)。時鐘節(jié)拍由配置為中斷觸發(fā)模式的硬件定時器產(chǎn)生,當中斷到來時,將調(diào)用一次:voidrt_tick_increase(void),通知操作系統(tǒng)已經(jīng)過去一個系統(tǒng)時鐘;不同硬件定時器中斷實現(xiàn)都不同,下面的中斷函數(shù)以STM32定時器作為示例。如下是STM32配置OS節(jié)拍示例,在初始化時鐘節(jié)拍后,直接在SysTick_Handler()中斷服務(wù)例程中調(diào)用rt_tick_increase()。rt_hw_systick_init函數(shù)由hw_board_init函數(shù)調(diào)用。該函數(shù)使用hal庫完成滴答時鐘的配置,并設(shè)置滴答時鐘的中斷優(yōu)先級,可見這里的優(yōu)先級設(shè)置是最高的。中斷服務(wù)例程也定義在同樣的文件內(nèi)。1.4.1RT-Thread系統(tǒng)移植原理分析RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)9.實現(xiàn)OS節(jié)拍1.4.1RT-Thread系統(tǒng)移植原理分析/*SysTickconfiguration*/voidrt_hw_systick_init(void){#ifdefined(SOC_SERIES_STM32H7)HAL_SYSTICK_Config((HAL_RCCEx_GetD1SysClockFreq())/RT_TICK_PER_SECOND);#elseHAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/RT_TICK_PER_SECOND);#endifHAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);HAL_NVIC_SetPriority(SysTick_IRQn,0,0);}/*中斷服務(wù)例程*/voidSysTick_Handler(void){/*enterinterrupt*/rt_interrupt_enter();HAL_IncTick();rt_tick_increase();/*leaveinterrupt*/rt_interrupt_leave();}RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.2開發(fā)設(shè)計與實踐針對嵌入式原型機板卡ZI-ARMEmbed的硬件,進行RT-Thread項目系統(tǒng)移植。RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.3.1硬件部署(1)準備嵌入式原型機板卡ZI-ARMEmbed、ARM仿真器、MiniUSB線。(2)完成仿真器、串口(MiniUSB線)、12V電源的連接。(3)使用MobaXterm工具創(chuàng)建串口終端并打開,串口設(shè)置(波特率-數(shù)據(jù)位-停止位-校驗位-流控制):115200-8-1-None-None。1.4.3開發(fā)步驟與驗證

系統(tǒng)移植本次實驗是在02-Template示例工程進行項目改進的,由于該示例工程是由RT-ThreadStudio軟件自動生成的,具有一定的參考意義,因此本次實驗是在02-Template示例工程的基礎(chǔ)上針對實際的硬件進行板級BSP包移植,形成一個整體項目的實例工程,便于后面各個實驗的代碼建立。也可以直接導(dǎo)入本項目已經(jīng)創(chuàng)建好的工程03-init直接使用。RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.3開發(fā)步驟與驗證

系統(tǒng)移植1.創(chuàng)建工程1)將實驗2:02-Template復(fù)制一份命名為03-init,并拷貝到RT-ThreadStudio\workspace工作區(qū)目錄下。2)修改.cproject第215行的目錄路徑。(03-init/.cproject)

將這里workspacePath中02-Template修改為03-init。<storageModulemoduleId="refreshScope"versionNumber="2"><configurationconfigurationName="Debug"><resourceresourceType="PROJECT"workspacePath="/03-init"/></configuration></storageModule>RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.3開發(fā)步驟與驗證

系統(tǒng)移植1.創(chuàng)建工程3)修改.project第3行和倒數(shù)第3行的工程名。(03-init/.project)<?xmlversion="1.0"encoding="UTF-8"?><projectDescription><name>03-init</name><comment/><projects></projects><buildSpec><buildCommand><name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name><triggers>clean,full,incremental,</triggers><arguments></arguments></buildCommand><buildCommand><name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name><triggers>full,incremental,</triggers><arguments></arguments></buildCommand></buildSpec><natures><nature>ature</nature><nature>org.rt-thread.studio.rttnature</nature><nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature><nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature></natures><name>03-init</name><linkedResources/></projectDescription>

如上,將這里name中02-Template修改為03-init。RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.3開發(fā)步驟與驗證

系統(tǒng)移植1.創(chuàng)建工程4)修改.settings目錄中的projcfg.ini最后一行為新工程名。=(03-init/.settings/projecfg.ini)#RT-ThreadStudioProjectConfiguration#FriSep0215:21:23CST2022project_type=rttchip_name=STM32F407VEcpu_name=Nonetarget_freq=168clock_source=hsidvendor_name=STMicroelectronicsrx_pin_name=PA10rtt_path=repo/Extract/RT-Thread_Source_Code/RT-Thread/4.1.0source_freq=0csp_path=repo/Extract/Chip_Support_Packages/RealThread/STM32F4/0.2.2sub_series_name=STM32F407selected_rtt_version=4.1.0cfg_version=v3.0tool_chain=gccuart_name=uart1tx_pin_name=PA9rtt_nano_path=output_project_path=C\:/RT-ThreadStudio/workspacehardware_adapter=J-Linkproject_name=03-init如上,將這里project_name中02-Template修改為03-init。RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.3開發(fā)步驟與驗證

系統(tǒng)移植1.創(chuàng)建工程5)修改.settings目錄中的4個配置文件頭為新工程名。(03-init/.settings)修改前工程名修改后工程名RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.3開發(fā)步驟與驗證

系統(tǒng)移植2.導(dǎo)入工程1)運行RT-ThreadStudio軟件,在菜單欄選擇“文件->導(dǎo)入”功能“選擇RT-ThreadStudio項目到工作空間中”,點擊下一步,選擇根目錄為RT-ThreadStudio\workspace工作區(qū)目錄,將會出現(xiàn)目錄下的所有工程,勾選03-init工程并點擊完成即可導(dǎo)入工程1導(dǎo)入工程2RT-Thread嵌入式系統(tǒng)移植技術(shù)開發(fā)1.4.3開發(fā)步驟與驗證

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論