版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
序言:說點空話,網(wǎng)上有好多對于uCOS-ii移植的文章,好多都是千篇一律,理論性很強,剖析了一大堆虛頭巴腦的東西,真想問他們,你確立你剖析的這些東西是需要你做的工作嗎?實操性嚴重短缺。。。這方面我也走了好多彎路,下邊就將自己的移植過程一步步的記錄下來,也給大家做做參照。第一,簡單總結一下移植的大體過程:(1)去uC/OS-ii官網(wǎng)下載你要移植芯片CPU的有關事例,不必定完整對應,那就找相應系列吧。(2)編程環(huán)境一般有兩種,分別是IAR和MDK,這個依據(jù)你自己的編程環(huán)境進行下載。(3)本事例需要將uC/OS-II移植到STM32F103ZET6上,而我使用的編程環(huán)境是MDK,很遺憾,官網(wǎng)上供給的事例是鑒于IAR的,因此要鑒于IAR的事例進行改正。(4)使用MDK創(chuàng)立一個無操作系統(tǒng)的最簡單程序,保證這個程序能夠使用,這樣做的目的是為了一步步的排查錯誤,假如無操作系統(tǒng)時,都有錯誤,移植過程中也必定會有編譯錯誤,那么在排查錯誤的時候也就增添了難度,不會寫物操作系統(tǒng)的簡單程序怎么辦。。。那就不要往下看了。(5)移植的最大的變動主要有兩部分,一個是一些頭文件的增減,此外一個就是向量表中PendSV_Handler和SysTick_Handler的改正。這里我要吐槽一下,網(wǎng)上說了一大堆對于什么的改正還有各樣函數(shù)的的剖析,這都是扯淡。。。這些根本就不用移植者去改正,官網(wǎng)供給的事例都已經(jīng)供給了,除非你選擇移植的CPU是比較偏的,那么這些東西需要移植者自己去編寫。好了,下邊就開始詳盡的記錄怎么去移植。一、創(chuàng)立一個無操作系統(tǒng)的簡單裸板系統(tǒng)1.創(chuàng)立源文件工程文件夾,以下列圖所示:此中文件夾“CMSIS”為內(nèi)核的接口,包含的文件以下圖文件夾STM32_StdPeriph為固件驅(qū)動文件夾,這個把STM32的固件全都增添進去即可。文件夾User為其余文件,以下列圖所示:文件夾Output和List主假如放那些編譯產(chǎn)生的亂七八糟的文件,為了使工程代碼更為簡短。使用MDK創(chuàng)立無操作系統(tǒng)工程項目,這一點就不一一說了,將創(chuàng)立后的工程項目文件樹截圖以下:這個時候還沒有main文件,那么創(chuàng)立一個文檔即可,這里需要注意,創(chuàng)立后,要將其增添到項目中才行,而不是簡單的保留。以下列圖所示:、注意:中要有一個mian函數(shù),不然編譯器會報錯提示你的。而后就是項目的配置,這個仍是很重要的,下邊分別說需要配置的地方:1)Output選項以下:這里面勾選了CreateHEXFile選項,同時將項目輸出放到了以前創(chuàng)立的Output文件夾。2)List選項,將List產(chǎn)生的文件放入到以前創(chuàng)立的List文件夾中。3)C/C++配置選項以下:此中Define選項中,填入:USE_STDPERIPH_DRIVER,STM32F10X,_HD這是告訴編譯器,使用標準外設,還有選擇的CPU種類,此中CPU類型需要依據(jù)你選擇移植的CPU進行適合的改正。IncludePaths是要包含的頭文件路徑,這個為了保險,將項目中的全部有.h的文件的文件夾都包含進去就能夠了。選項以下:我使用的是Jlink進行燒寫調(diào)試,因此選擇了以下圖,還要進行settings,以下:這里要勾選“ResetandRun”,這樣做的目的是,每當燒寫下載后,CPU進行復位并運轉。選項設置以下所示:至此,配置完成,編譯一下,沒有錯誤,創(chuàng)立一個簡單的點亮LED程序,考證一下即可。備注說明:假如依據(jù)這個步驟操作,編譯,假如出現(xiàn)一些簡單的錯誤,比方?jīng)]有main函數(shù),沒有發(fā)現(xiàn)某個頭文件,那么依據(jù)提示解決即可,可是假如發(fā)現(xiàn)了好多怪怪的編譯錯誤,比方說不決義u32,u8這些符號時,那就要注意一下了,有可能是MDK版本的問題,我在使用MDK低版本的時候,發(fā)現(xiàn)有問題,而使用高版本的時候就沒問題了,因此需要注意一下。二、移植uC/OS-ii到STM32F10X上第一在官網(wǎng)上下載鑒于STM32的移植工程事例,里面的移植文檔AN-1018中是作者寫的移植文檔,說的很詳盡,想要移植的話,多看看這個文檔。此中有張圖,特別重要,其實就是告訴了移植者要做的工作,以下列圖所示:這個圖表達了什么信息呢,其實就是告訴移植者需要將那些文件移植到你的工程中間,第一是uC/OS-ii的源文件,就是、.....這些文件,實際上是uC/OS-ii的Port文件,包含4個,分別是,,,,還有是用戶應用程序里的包含文件,這個里面不可以照搬,選擇使用兩個文件,分別為和,其余三個,能夠自己編寫,為何不套用此外那三個呢,主假如由于那三個文件是針對官方開發(fā)板創(chuàng)立的任務,里面包含的信息量太大,編譯的時候,必定會有大批的錯誤(由于我們是向來到我們自己的板子),因此最好自己寫最簡單的,至于怎么寫,后邊再詳細說,能夠先建2個空文件,分別是和,這兩個文件的含義很簡單,APP是自己的應用程序C文件,是對我們自己的應用程序做的配置文件,看到這里可能會有個疑問,文件怎么辦理呢,答案是舍棄,由于官方供給的事例是自己寫啟動文件,文件是向量表,我們使用的是STM32固件庫里的啟動代碼,因此就不用使用了。BSP部分有兩個文件和,這個也建議直接舍棄,這個是官方文檔中針對他們的的開發(fā)板寫的一些基層的設施驅(qū)動,我們自己的開發(fā)板跟他們的不一樣,因此根本就沒必需要,至此,將剛才剖析的這些一定的文件加入到上邊創(chuàng)立的無操作系統(tǒng)裸板程序中,進行編譯。必定會有好多錯誤,下邊我們就一一的改正這些錯誤。增添到項目后的文件樹,以下列圖所示:需要注意的是,這此中的和是自己創(chuàng)立的空的文件,而不是使用官網(wǎng)事例里供給的,假如非要使用官網(wǎng)里面的,那么只好不斷的改正此中的錯誤啦。下邊就是要改正錯誤的過程了。改正這個是配置uCOS-ii系統(tǒng)功能的頭文件,依據(jù)自己的需要進行裁剪任務吧,我只做了一個改正,就是,禁用鉤子函數(shù),這是為了防備出現(xiàn)那些所謂的文檔中剖析的要寫的那幾個鉤子函數(shù)出現(xiàn)錯誤,禁用鉤子函數(shù)了,也就不用寫鉤子函數(shù)了,其余的依據(jù)自己需要裁汰吧。文件的改正第一是改正為這樣改正的目的,是由于MDK編程環(huán)境不認識PUBLIC,要用EXPORT.其次是改正:為:這個也是由于編程環(huán)境的問題。改正改正:為:,原由也是編程環(huán)境的問題。改正啟動代碼這個步驟是移植的核心:上邊說的其余的改正,都是一些隸屬的格式方面的改正,而啟動代碼的改正才是移植的核心,這里簡單的剖析2個問題,一是,什么叫移植,二是移植的操作系統(tǒng)怎樣能夠被我們的工程所應用。所謂移植,打一個適合的比喻——器官移植,就是將A的器官移植到B身上,使A的器官能夠為B所用。因此移植絕對不是簡單的“復制”,不單要放到你的工程項目中,更重要的是要能夠和你的項目成立聯(lián)系。那么uCOS-ii怎么跟STM32成立聯(lián)系呢?uCOS-ii的核心作用就是任務調(diào)動,要使用STM32的一個特別中止——PendSV,就是可掛起系統(tǒng)任務中止,經(jīng)過該中止進行系統(tǒng)的調(diào)動。還有就是uCOS-ii需要一個基準時間,那么STM32中有一個專用的準時器,嘀嗒準時器SysTick,這個準時器,就是專為操作系統(tǒng)而設計的,經(jīng)過這個滴答準時器給uCOS-ii供給一個時間基準,每隔固定的時間出發(fā)一個PendSV中止,進行任務的調(diào)動。因此呢,在官方事例的移植文檔AN-1018中也特別提到這一點,要將啟動代碼中全部“PendSV_Handler”和“SysTick_Handler”,替代成“OS_CPU_PendSVHandler”和“OS_CPU_SysTickHandler”,這樣就相當于將uCOS-ii的“神經(jīng)”跟你的項目的“神經(jīng)”搭在了一同。此時編譯,發(fā)現(xiàn)還有一個錯誤:在uCOS-ii源碼中查找OS_TASK_TMR_PRIO定義,本來這個定義在源碼文件中,以下所示:比葫蘆畫瓢,復制到自己創(chuàng)立的那個空白中。而后編譯,發(fā)現(xiàn)已經(jīng)還有的錯誤就是在中,說沒有包含一些的頭文件,這個把中對應錯誤的那些包含頭文件代碼刪掉即可,這是由于我們沒有完整的使用官方事例中的全部文件。至此移植的改正工作告一段落,已經(jīng)達成。創(chuàng)立任務,考證移植成效。這個能夠參照源代碼中進行創(chuàng)立任務,在中編寫各個任務的配置文件,這里需要注意的是,我們以前創(chuàng)立的裸板中已經(jīng)有文件,其中已經(jīng)有函數(shù),因此我們在中就不用再創(chuàng)立main函數(shù)了,直接在main函數(shù)中初始化uCOS-ii,而后創(chuàng)立一個任務,或許調(diào)用一個函數(shù),在這個任務或許函數(shù)中再創(chuàng)立需要的幾個任務即可。案比以下列圖所示:此中需要注意的是,在創(chuàng)立的第一個任務里,必定要先初始化嘀嗒定時器,這個是模仿官方事例中的代碼格式寫的,直接使用OS_CPU_SysTickInit(),可能在編譯的時候,會發(fā)現(xiàn)這個嘀嗒準時器初始化啟動函數(shù)有報錯,這個一般
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度木工工藝研發(fā)與創(chuàng)新資助合同
- 2025年門禁產(chǎn)品銷售與客戶定制化解決方案合同范本3篇
- 2025年度農(nóng)藥殘留檢測技術服務合同書2篇
- 2025年度噴泉景區(qū)旅游推廣及市場營銷合同
- 艾滋病病毒王利沙HIV講解
- 2025年度宅基地使用權及房產(chǎn)繼承合同
- 2025年度旅游行業(yè)導游及服務人員派遣合同2篇
- 二零二五年度雛雞養(yǎng)殖與休閑農(nóng)業(yè)融合發(fā)展合同4篇
- 2025版民間抵押資產(chǎn)處置合同樣本3篇
- 2025年建筑行業(yè)自動化的機遇與挑戰(zhàn)
- 2024年湖南高速鐵路職業(yè)技術學院高職單招數(shù)學歷年參考題庫含答案解析
- 國旗班指揮刀訓練動作要領
- 2024年國家工作人員學法用法考試題庫及參考答案
- 國家公務員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術》課件 第6講 阻燃纖維及織物
- 2021-2022學年遼寧省重點高中協(xié)作校高一上學期期末語文試題
- 同等學力英語申碩考試詞匯(第六版大綱)電子版
- 人教版五年級上冊遞等式計算100道及答案
- 墓地個人協(xié)議合同模板
- 2024年部編版初中語文各年級教師用書七年級(上冊)
- 2024年新課標全國Ⅰ卷語文高考真題試卷(含答案)
評論
0/150
提交評論