版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
前言:說點(diǎn)空話,網(wǎng)上有很多關(guān)于uCOS-ii移植的文章,很多都是千篇一律,理論性很強(qiáng),解析了一大堆虛頭巴腦的東西,真想問他們,你確定你解析的這些東西是需要你做的工作嗎?實(shí)操性嚴(yán)重欠缺。。。這方面我也走了很多彎路,下面就將自己的移植過程一步步的記錄下來,也給大家做做參照。第一,簡單總結(jié)一下移植的大概過程:(1)去uC/OS-ii官網(wǎng)下載你要移植芯片CPU的相關(guān)案例,不必然完好對應(yīng),那就找相應(yīng)系列吧。(2)編程環(huán)境一般有兩種,分別是IAR和MDK,這個(gè)依照你自己的編程環(huán)境進(jìn)行下載。(3)本領(lǐng)例需要將uC/OS-II移植到STM32F103ZET6上,而我使用的編程環(huán)境是MDK,很遺憾,官網(wǎng)上供應(yīng)的案例是基于IAR的,所以要基于IAR的案例進(jìn)行更正。(4)使用MDK創(chuàng)辦一個(gè)無操作系統(tǒng)的最簡單程序,保證這個(gè)程序能夠使用,這樣做的目的是為了一步步的排查錯(cuò)誤,假如無操作系統(tǒng)時(shí),都有錯(cuò)誤,移植過程中也必然會有編譯錯(cuò)誤,那么在排查錯(cuò)誤的時(shí)候也就增加了難度,不會寫物操作系統(tǒng)的簡單程序怎么辦。。。那就不要往下看了。(5)移植的最大的改動主要有兩部分,一個(gè)是一些頭文件的增減,此外一個(gè)就是向量表中PendSV_Handler和SysTick_Handler的更正。這里我要吐槽一下,網(wǎng)上說了一大堆關(guān)于什么的更正還有各種函數(shù)的的解析,這都是扯淡。。。這些根本就不用移植者去更正,官網(wǎng)供應(yīng)的案例都已經(jīng)供應(yīng)了,除非你選擇移植的CPU是比較偏的,那么這些東西需要移植者自己去編寫。好了,下面就開始詳細(xì)的記錄怎么去移植。一、創(chuàng)辦一個(gè)無操作系統(tǒng)的簡單裸板系統(tǒng)1.創(chuàng)辦源文件工程文件夾,以以下圖所示:其中文件夾“CMSIS”為內(nèi)核的接口,包括的文件以下圖文件夾STM32_StdPeriph為固件驅(qū)動文件夾,這個(gè)把STM32的固件全都增加進(jìn)去即可。文件夾User為其他文件,以以下圖所示:文件夾Output和List主若是放那些編譯產(chǎn)生的亂七八糟的文件,為了使工程代碼更加簡潔。使用MDK創(chuàng)辦無操作系統(tǒng)工程項(xiàng)目,這一點(diǎn)就不一一說了,將創(chuàng)辦后的工程項(xiàng)目文件樹截圖以下:這個(gè)時(shí)候還沒有main文件,那么創(chuàng)辦一個(gè)文檔即可,這里需要注意,創(chuàng)辦后,要將其增加到項(xiàng)目中才行,而不是簡單的保存。以以下圖所示:、注意:中要有一個(gè)mian函數(shù),否則編譯器會報(bào)錯(cuò)提示你的。爾后就是項(xiàng)目的配置,這個(gè)還是很重要的,下面分別說需要配置的地方: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類型需要依照你選擇移植的CPU進(jìn)行合適的更正。IncludePaths是要包括的頭文件路徑,這個(gè)為了保險(xiǎn),將項(xiàng)目中的所有有.h的文件的文件夾都包括進(jìn)去就可以了。選項(xiàng)以下:我使用的是Jlink進(jìn)行燒寫調(diào)試,所以選擇了以以下圖,還要進(jìn)行settings,以下:這里要勾選“ResetandRun”,這樣做的目的是,每當(dāng)燒寫下載后,CPU進(jìn)行復(fù)位并運(yùn)行。選項(xiàng)設(shè)置以下所示:至此,配置達(dá)成,編譯一下,沒有錯(cuò)誤,創(chuàng)辦一個(gè)簡單的點(diǎn)亮LED程序,考據(jù)一下即可。備注說明:若是依照這個(gè)步驟操作,編譯,若是出現(xiàn)一些簡單的錯(cuò)誤,比方?jīng)]有main函數(shù),沒有發(fā)現(xiàn)某個(gè)頭文件,那么依照提示解決即可,但是若是發(fā)現(xiàn)了很多怪怪的編譯錯(cuò)誤,比方說不決義u32,u8這些符號時(shí),那就要注意一下了,有可能是MDK版本的問題,我在使用MDK低版本的時(shí)候,發(fā)現(xiàn)有問題,而使用高版本的時(shí)候就沒問題了,所以需要注意一下。二、移植uC/OS-ii到STM32F10X上第一在官網(wǎng)上下載基于STM32的移植工程案例,里面的移植文檔AN-1018中是作者寫的移植文檔,說的很詳細(xì),想要移植的話,多看看這個(gè)文檔。其中有張圖,特別重要,其實(shí)就是告訴了移植者要做的工作,以以下圖所示:這個(gè)圖表達(dá)了什么信息呢,其實(shí)就是告訴移植者需要將那些文件移植到你的工程中間,第一是uC/OS-ii的源文件,就是、.....這些文件,其實(shí)是uC/OS-ii的Port文件,包括4個(gè),分別是,,,,還有是用戶應(yīng)用程序里的包括文件,這個(gè)里面不能夠照搬,選擇使用兩個(gè)文件,分別為和,其他三個(gè),能夠自己編寫,為什么不套用別的那三個(gè)呢,主若是因?yàn)槟侨齻€(gè)文件是針對官方開發(fā)板創(chuàng)辦的任務(wù),里面包括的信息量太大,編譯的時(shí)候,必然會有大量的錯(cuò)誤(因?yàn)槲覀兪窍虻竭_(dá)我們自己的板子),所以最好自己寫最簡單的,至于怎么寫,后邊再詳細(xì)說,能夠先建2個(gè)空文件,分別是和,這兩個(gè)文件的含義很簡單,APP是自己的應(yīng)用程序C文件,是對我們自己的應(yīng)用程序做的配置文件,看到這里可能會有個(gè)疑問,文件怎么辦理呢,答案是舍棄,因?yàn)楣俜焦?yīng)的案例是自己寫啟動文件,文件是向量表,我們使用的是STM32固件庫里的啟動代碼,所以就不用使用了。BSP部分有兩個(gè)文件和,這個(gè)也建議直接舍棄,這個(gè)是官方文檔中針對他們的的開發(fā)板寫的一些基層的設(shè)備驅(qū)動,我們自己的開發(fā)板跟他們的不同樣,所以根本就沒必要要,至此,將方才解析的這些必定的文件加入到上面創(chuàng)辦的無操作系統(tǒng)裸板程序中,進(jìn)行編譯。必然會有很多錯(cuò)誤,下面我們就一一的更正這些錯(cuò)誤。增加到項(xiàng)目后的文件樹,以以下圖所示:需要注意的是,這其中的和是自己創(chuàng)辦的空的文件,而不是使用官網(wǎng)案例里供應(yīng)的,若是非要使用官網(wǎng)里面的,那么只能不停的更正其中的錯(cuò)誤啦。下面就是要更正錯(cuò)誤的過程了。更正這個(gè)是配置uCOS-ii系統(tǒng)功能的頭文件,依照自己的需要進(jìn)行裁剪任務(wù)吧,我只做了一個(gè)更正,就是,禁用鉤子函數(shù),這是為了防范出現(xiàn)那些所謂的文檔中解析的要寫的那幾個(gè)鉤子函數(shù)出現(xiàn)錯(cuò)誤,禁用鉤子函數(shù)了,也就不用寫鉤子函數(shù)了,其他的依照自己需要裁汰吧。文件的更正第一是更正為這樣更正的目的,是因?yàn)镸DK編程環(huán)境不認(rèn)識PUBLIC,要用EXPORT.其次是更正:為:這個(gè)也是因?yàn)榫幊汰h(huán)境的問題。更正更正:為:,原因也是編程環(huán)境的問題。更正啟動代碼這個(gè)步驟是移植的中心:上面說的其他的更正,都是一些隸屬的格式方面的更正,而啟動代碼的更正才是移植的中心,這里簡單的解析2個(gè)問題,一是,什么叫移植,二是移植的操作系統(tǒng)如何能夠被我們的工程所應(yīng)用。所謂移植,打一個(gè)合適的比喻——器官移植,就是將A的器官移植到B身上,使A的器官能夠?yàn)锽所用。所以移植絕對不是簡單的“復(fù)制”,不但要放到你的工程項(xiàng)目中,更重要的是要能夠和你的項(xiàng)目建立聯(lián)系。那么uCOS-ii怎么跟STM32建立聯(lián)系呢?uCOS-ii的中心作用就是任務(wù)調(diào)換,要使用STM32的一個(gè)特別中斷——PendSV,就是可掛起系統(tǒng)任務(wù)中斷,經(jīng)過該中斷進(jìn)行系統(tǒng)的調(diào)換。還有就是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)過這個(gè)滴答準(zhǔn)時(shí)器給uCOS-ii供應(yīng)一個(gè)時(shí)間基準(zhǔn),每隔固定的時(shí)間出發(fā)一個(gè)PendSV中斷,進(jìn)行任務(wù)的調(diào)換。所以呢,在官方案例的移植文檔AN-1018中也特別提到這一點(diǎn),要將啟動代碼中所有“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定義,原來這個(gè)定義在源碼文件中,以下所示:比葫蘆畫瓢,復(fù)制到自己創(chuàng)辦的那個(gè)空白中。爾后編譯,發(fā)現(xiàn)已經(jīng)還有的錯(cuò)誤就是在中,說沒有包括一些的頭文件,這個(gè)把中對應(yīng)錯(cuò)誤的那些包括頭文件代碼刪掉即可,這是因?yàn)槲覀儧]有完好的使用官方案例中的所有文件。至此移植的更正工作告一段落,已經(jīng)達(dá)成。創(chuàng)辦任務(wù),考據(jù)移植收效。這個(gè)能夠參照源代碼中進(jìn)行創(chuàng)辦任務(wù),在中編寫各個(gè)任務(wù)的配置文件,這里需要注意的是,我們從前創(chuàng)辦的裸板中已經(jīng)有文件,其中已經(jīng)有函數(shù),所以我們在中就不用再創(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è)是模擬官方案例中的代碼格式寫的,直接使用OS_CPU_SysTickInit( ),可能在編譯的時(shí)候,會發(fā)現(xiàn)這個(gè)嘀嗒準(zhǔn)時(shí)器初始化啟動函數(shù)有報(bào)錯(cuò),這個(gè)一般
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國人壽神農(nóng)架支公司招聘10人(湖北)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中共北京市委黨校公開招聘應(yīng)屆畢業(yè)生11人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年陜西商洛市事業(yè)單位招聘工作人員278人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年聯(lián)考筆試實(shí)錘這幾省份明確會參加高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年湖北事業(yè)單位10.27聯(lián)考(1337人)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年浙江麗水市青田縣招聘88名國企業(yè)工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年山東青島市市北區(qū)部分事業(yè)單位招聘23人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年四川省內(nèi)江東興區(qū)部分事業(yè)單位考聘89人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年北京市西城區(qū)事業(yè)單位招考高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年浙江省舟山定海區(qū)供銷合作社聯(lián)合社招聘編外1人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 部編版七年級語文上下冊教材解讀分析精編ppt
- DB63∕T 2013-2022 公路養(yǎng)護(hù)工程預(yù)算定額
- InternationalSettlementsLecture3InternationalClearingSystems
- 蘇武傳作文素材整理-
- 小學(xué)一年級班會課教案匯編 全冊
- 汽車?yán)碚撟鳂I(yè)Matlab程序輕型貨車動力性能評價(jià)
- 長沙理工大學(xué)工程經(jīng)濟(jì)課程設(shè)計(jì)(共86頁)
- 2017版和2002版醫(yī)療器械分類目錄對比
- 閥門的壓力試驗(yàn)規(guī)范
- 鄭家坡鐵礦充填系統(tǒng)設(shè)計(jì)
- 直讀光譜儀測量低合金鋼中各元素含量的不確定度評定
評論
0/150
提交評論