




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
序言:說(shuō)點(diǎn)空話,網(wǎng)上有好多對(duì)于uCOS-ii移植的文章,好多都是千篇一律,理論性很強(qiáng),剖析了一大堆虛頭巴腦的東西,真想問(wèn)他們,你確立你剖析的這些東西是需要你做的工作嗎?實(shí)操性嚴(yán)重短缺。。。這方面我也走了好多彎路,下邊就將自己的移植過(guò)程一步步的記錄下來(lái),也給大家做做參照。第一,簡(jiǎn)單總結(jié)一下移植的大體過(guò)程:(1)去uC/OS-ii官網(wǎng)下載你要移植芯片CPU的有關(guān)事例,不必定完整對(duì)應(yīng),那就找相應(yīng)系列吧。(2)編程環(huán)境一般有兩種,分別是IAR和MDK,這個(gè)依據(jù)你自己的編程環(huán)境進(jìn)行下載。(3)本事例需要將uC/OS-II移植到STM32F103ZET6上,而我使用的編程環(huán)境是MDK,很遺憾,官網(wǎng)上供給的事例是鑒于IAR的,因此要鑒于IAR的事例進(jìn)行改正。(4)使用MDK創(chuàng)立一個(gè)無(wú)操作系統(tǒng)的最簡(jiǎn)單程序,保證這個(gè)程序能夠使用,這樣做的目的是為了一步步的排查錯(cuò)誤,假如無(wú)操作系統(tǒng)時(shí),都有錯(cuò)誤,移植過(guò)程中也必定會(huì)有編譯錯(cuò)誤,那么在排查錯(cuò)誤的時(shí)候也就增添了難度,不會(huì)寫(xiě)物操作系統(tǒng)的簡(jiǎn)單程序怎么辦。。。那就不要往下看了。(5)移植的最大的變動(dòng)主要有兩部分,一個(gè)是一些頭文件的增減,此外一個(gè)就是向量表中PendSV_Handler和SysTick_Handler的改正。這里我要吐槽一下,網(wǎng)上說(shuō)了一大堆對(duì)于什么的改正還有各樣函數(shù)的的剖析,這都是扯淡。。。這些根本就不用移植者去改正,官網(wǎng)供給的事例都已經(jīng)供給了,除非你選擇移植的CPU是比較偏的,那么這些東西需要移植者自己去編寫(xiě)。好了,下邊就開(kāi)始詳盡的記錄怎么去移植。一、創(chuàng)立一個(gè)無(wú)操作系統(tǒng)的簡(jiǎn)單裸板系統(tǒng)1.創(chuàng)立源文件工程文件夾,以下列圖所示:此中文件夾“CMSIS”為內(nèi)核的接口,包含的文件以下圖文件夾STM32_StdPeriph為固件驅(qū)動(dòng)文件夾,這個(gè)把STM32的固件全都增添進(jìn)去即可。文件夾User為其余文件,以下列圖所示:文件夾Output和List主假如放那些編譯產(chǎn)生的亂七八糟的文件,為了使工程代碼更為簡(jiǎn)短。使用MDK創(chuàng)立無(wú)操作系統(tǒng)工程項(xiàng)目,這一點(diǎn)就不一一說(shuō)了,將創(chuàng)立后的工程項(xiàng)目文件樹(shù)截圖以下:這個(gè)時(shí)候還沒(méi)有main文件,那么創(chuàng)立一個(gè)文檔即可,這里需要注意,創(chuàng)立后,要將其增添到項(xiàng)目中才行,而不是簡(jiǎn)單的保留。以下列圖所示:、注意:中要有一個(gè)mian函數(shù),不然編譯器會(huì)報(bào)錯(cuò)提示你的。而后就是項(xiàng)目的配置,這個(gè)仍是很重要的,下邊分別說(shuō)需要配置的地方:1)Output選項(xiàng)以下:這里面勾選了CreateHEXFile選項(xiàng),同時(shí)將項(xiàng)目輸出放到了以前創(chuàng)立的Output文件夾。2)List選項(xiàng),將List產(chǎn)生的文件放入到以前創(chuàng)立的List文件夾中。3)C/C++配置選項(xiàng)以下:此中Define選項(xiàng)中,填入:USE_STDPERIPH_DRIVER,STM32F10X,_HD這是告訴編譯器,使用標(biāo)準(zhǔn)外設(shè),還有選擇的CPU種類,此中CPU類型需要依據(jù)你選擇移植的CPU進(jìn)行適合的改正。IncludePaths是要包含的頭文件路徑,這個(gè)為了保險(xiǎn),將項(xiàng)目中的全部有.h的文件的文件夾都包含進(jìn)去就能夠了。選項(xiàng)以下:我使用的是Jlink進(jìn)行燒寫(xiě)調(diào)試,因此選擇了以下圖,還要進(jìn)行settings,以下:這里要勾選“ResetandRun”,這樣做的目的是,每當(dāng)燒寫(xiě)下載后,CPU進(jìn)行復(fù)位并運(yùn)轉(zhuǎn)。選項(xiàng)設(shè)置以下所示:至此,配置完成,編譯一下,沒(méi)有錯(cuò)誤,創(chuàng)立一個(gè)簡(jiǎn)單的點(diǎn)亮LED程序,考證一下即可。備注說(shuō)明:假如依據(jù)這個(gè)步驟操作,編譯,假如出現(xiàn)一些簡(jiǎn)單的錯(cuò)誤,比方?jīng)]有main函數(shù),沒(méi)有發(fā)現(xiàn)某個(gè)頭文件,那么依據(jù)提示解決即可,可是假如發(fā)現(xiàn)了好多怪怪的編譯錯(cuò)誤,比方說(shuō)不決義u32,u8這些符號(hào)時(shí),那就要注意一下了,有可能是MDK版本的問(wèn)題,我在使用MDK低版本的時(shí)候,發(fā)現(xiàn)有問(wèn)題,而使用高版本的時(shí)候就沒(méi)問(wèn)題了,因此需要注意一下。二、移植uC/OS-ii到STM32F10X上第一在官網(wǎng)上下載鑒于STM32的移植工程事例,里面的移植文檔AN-1018中是作者寫(xiě)的移植文檔,說(shuō)的很詳盡,想要移植的話,多看看這個(gè)文檔。此中有張圖,特別重要,其實(shí)就是告訴了移植者要做的工作,以下列圖所示:這個(gè)圖表達(dá)了什么信息呢,其實(shí)就是告訴移植者需要將那些文件移植到你的工程中間,第一是uC/OS-ii的源文件,就是、.....這些文件,實(shí)際上是uC/OS-ii的Port文件,包含4個(gè),分別是,,,,還有是用戶應(yīng)用程序里的包含文件,這個(gè)里面不可以照搬,選擇使用兩個(gè)文件,分別為和,其余三個(gè),能夠自己編寫(xiě),為何不套用此外那三個(gè)呢,主假如由于那三個(gè)文件是針對(duì)官方開(kāi)發(fā)板創(chuàng)立的任務(wù),里面包含的信息量太大,編譯的時(shí)候,必定會(huì)有大批的錯(cuò)誤(由于我們是向來(lái)到我們自己的板子),因此最好自己寫(xiě)最簡(jiǎn)單的,至于怎么寫(xiě),后邊再詳細(xì)說(shuō),能夠先建2個(gè)空文件,分別是和,這兩個(gè)文件的含義很簡(jiǎn)單,APP是自己的應(yīng)用程序C文件,是對(duì)我們自己的應(yīng)用程序做的配置文件,看到這里可能會(huì)有個(gè)疑問(wèn),文件怎么辦理呢,答案是舍棄,由于官方供給的事例是自己寫(xiě)啟動(dòng)文件,文件是向量表,我們使用的是STM32固件庫(kù)里的啟動(dòng)代碼,因此就不用使用了。BSP部分有兩個(gè)文件和,這個(gè)也建議直接舍棄,這個(gè)是官方文檔中針對(duì)他們的的開(kāi)發(fā)板寫(xiě)的一些基層的設(shè)施驅(qū)動(dòng),我們自己的開(kāi)發(fā)板跟他們的不一樣,因此根本就沒(méi)必需要,至此,將剛才剖析的這些一定的文件加入到上邊創(chuàng)立的無(wú)操作系統(tǒng)裸板程序中,進(jìn)行編譯。必定會(huì)有好多錯(cuò)誤,下邊我們就一一的改正這些錯(cuò)誤。增添到項(xiàng)目后的文件樹(shù),以下列圖所示:需要注意的是,這此中的和是自己創(chuàng)立的空的文件,而不是使用官網(wǎng)事例里供給的,假如非要使用官網(wǎng)里面的,那么只好不斷的改正此中的錯(cuò)誤啦。下邊就是要改正錯(cuò)誤的過(guò)程了。改正這個(gè)是配置uCOS-ii系統(tǒng)功能的頭文件,依據(jù)自己的需要進(jìn)行裁剪任務(wù)吧,我只做了一個(gè)改正,就是,禁用鉤子函數(shù),這是為了防備出現(xiàn)那些所謂的文檔中剖析的要寫(xiě)的那幾個(gè)鉤子函數(shù)出現(xiàn)錯(cuò)誤,禁用鉤子函數(shù)了,也就不用寫(xiě)鉤子函數(shù)了,其余的依據(jù)自己需要裁汰吧。文件的改正第一是改正為這樣改正的目的,是由于MDK編程環(huán)境不認(rèn)識(shí)PUBLIC,要用EXPORT.其次是改正:為:這個(gè)也是由于編程環(huán)境的問(wèn)題。改正改正:為:,原由也是編程環(huán)境的問(wèn)題。改正啟動(dòng)代碼這個(gè)步驟是移植的核心:上邊說(shuō)的其余的改正,都是一些隸屬的格式方面的改正,而啟動(dòng)代碼的改正才是移植的核心,這里簡(jiǎn)單的剖析2個(gè)問(wèn)題,一是,什么叫移植,二是移植的操作系統(tǒng)怎樣能夠被我們的工程所應(yīng)用。所謂移植,打一個(gè)適合的比喻——器官移植,就是將A的器官移植到B身上,使A的器官能夠?yàn)锽所用。因此移植絕對(duì)不是簡(jiǎn)單的“復(fù)制”,不單要放到你的工程項(xiàng)目中,更重要的是要能夠和你的項(xiàng)目成立聯(lián)系。那么uCOS-ii怎么跟STM32成立聯(lián)系呢?uCOS-ii的核心作用就是任務(wù)調(diào)動(dòng),要使用STM32的一個(gè)特別中止——PendSV,就是可掛起系統(tǒng)任務(wù)中止,經(jīng)過(guò)該中止進(jìn)行系統(tǒng)的調(diào)動(dòng)。還有就是uCOS-ii需要一個(gè)基準(zhǔn)時(shí)間,那么STM32中有一個(gè)專用的準(zhǔn)時(shí)器,嘀嗒準(zhǔn)時(shí)器SysTick,這個(gè)準(zhǔn)時(shí)器,就是專為操作系統(tǒng)而設(shè)計(jì)的,經(jīng)過(guò)這個(gè)滴答準(zhǔn)時(shí)器給uCOS-ii供給一個(gè)時(shí)間基準(zhǔn),每隔固定的時(shí)間出發(fā)一個(gè)PendSV中止,進(jìn)行任務(wù)的調(diào)動(dòng)。因此呢,在官方事例的移植文檔AN-1018中也特別提到這一點(diǎn),要將啟動(dòng)代碼中全部“PendSV_Handler”和“SysTick_Handler”,替代成“OS_CPU_PendSVHandler”和“OS_CPU_SysTickHandler”,這樣就相當(dāng)于將uCOS-ii的“神經(jīng)”跟你的項(xiàng)目的“神經(jīng)”搭在了一同。此時(shí)編譯,發(fā)現(xiàn)還有一個(gè)錯(cuò)誤:在uCOS-ii源碼中查找OS_TASK_TMR_PRIO定義,本來(lái)這個(gè)定義在源碼文件中,以下所示:比葫蘆畫(huà)瓢,復(fù)制到自己創(chuàng)立的那個(gè)空白中。而后編譯,發(fā)現(xiàn)已經(jīng)還有的錯(cuò)誤就是在中,說(shuō)沒(méi)有包含一些的頭文件,這個(gè)把中對(duì)應(yīng)錯(cuò)誤的那些包含頭文件代碼刪掉即可,這是由于我們沒(méi)有完整的使用官方事例中的全部文件。至此移植的改正工作告一段落,已經(jīng)達(dá)成。創(chuàng)立任務(wù),考證移植成效。這個(gè)能夠參照源代碼中進(jìn)行創(chuàng)立任務(wù),在中編寫(xiě)各個(gè)任務(wù)的配置文件,這里需要注意的是,我們以前創(chuàng)立的裸板中已經(jīng)有文件,其中已經(jīng)有函數(shù),因此我們?cè)谥芯筒挥迷賱?chuàng)立main函數(shù)了,直接在main函數(shù)中初始化uCOS-ii,而后創(chuàng)立一個(gè)任務(wù),或許調(diào)用一個(gè)函數(shù),在這個(gè)任務(wù)或許函數(shù)中再創(chuàng)立需要的幾個(gè)任務(wù)即可。案比以下列圖所示:此中需要注意的是,在創(chuàng)立的第一個(gè)任務(wù)里,必定要先初始化嘀嗒定時(shí)器,這個(gè)是模仿官方事例中的代碼格式寫(xiě)的,直接使用OS_CPU_SysTickInit(),可能在編譯的時(shí)候,會(huì)發(fā)現(xiàn)這個(gè)嘀嗒準(zhǔn)時(shí)器初始化啟動(dòng)函數(shù)有報(bào)錯(cuò),這個(gè)一般
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育素養(yǎng)考試題及答案
- 白酒電商測(cè)試題及答案
- 廈門(mén)市五顯中學(xué)-學(xué)年高三政治過(guò)關(guān)訓(xùn)練(全社會(huì)用現(xiàn)金支付的商品銷(xiāo)售)
- 標(biāo)準(zhǔn)化考評(píng)員試題及答案
- 紡織生產(chǎn)質(zhì)量管理試題及答案
- 護(hù)理高級(jí)工試題及答案
- 2025年建筑安全員-C證考試(專職安全員)題庫(kù)及答案
- 激光技術(shù)在水處理中的創(chuàng)新應(yīng)用試題及答案
- 藥劑處方中常見(jiàn)錯(cuò)誤問(wèn)題及答案
- 網(wǎng)絡(luò)規(guī)劃設(shè)計(jì)師考試的應(yīng)試技巧試題及答案
- 外研版(2025新版)七年級(jí)下冊(cè)英語(yǔ)Unit 4 學(xué)情調(diào)研測(cè)試卷(含答案)
- 《輔助投籃機(jī)器人設(shè)計(jì)》9500字(論文)
- 音樂(lè)課件《節(jié)奏與節(jié)拍》
- 中國(guó)成人心肌炎臨床診斷與治療指南2024解讀
- 《消化性潰瘍醫(yī)學(xué)》課件
- 智慧魚(yú)塘系統(tǒng)設(shè)計(jì)方案
- 學(xué)生入學(xué)合同協(xié)議書(shū)范本格式
- 光伏工程施工安全方案
- 上消化道出血健康宣教
- 統(tǒng)編版四年級(jí)下冊(cè)道德與法治7、我們的衣食之源 課件
- GB/T 44395-2024激光雷達(dá)測(cè)風(fēng)數(shù)據(jù)可靠性評(píng)價(jià)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論