<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > uCOS-II在STM32上的移植步驟

          uCOS-II在STM32上的移植步驟

          作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          前言:
          說點(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,這個根據(jù)你自己的編程環(huán)境進(jìn)行下載。
          (3) 本案例需要將uC/OS-II 移植到STM32F103ZET6上,而我使用的編程環(huán)境是MDK,很遺憾,官網(wǎng)上提供的案例是基于IAR的,所以要基于IAR的案例進(jìn)行更改。
          (4) 使用MDK創(chuàng)建一個無操作系統(tǒng)的最簡單程序,確保這個程序能夠使用,這樣做的目的是為了一步步的排查錯誤,假如無操作系統(tǒng)時,都有錯誤,移植過程中也肯定會有編譯錯誤,那么在排查錯誤的時候也就增加了難度,不會寫物操作系統(tǒng)的簡單程序怎么辦。。。那就不要往下看了。
          (5) 移植的最大的改動主要有兩部分,一個是一些頭文件的增減,另外一個就是向量表中PendSV_Handler和SysTick_Handler的修改。這里我要吐槽一下,網(wǎng)上說了一大堆關(guān)于什么OS_CPU.H的更改還有各種函數(shù)的的分析,這都是扯淡。。。這些根本就不用移植者去修改,官網(wǎng)提供的案例都已經(jīng)提供了,除非你選擇移植的CPU是比較偏的,那么這些東西需要移植者自己去編寫。
          好了,下面就開始詳細(xì)的記錄怎么去移植。
          一、 創(chuàng)建一個無操作系統(tǒng)的簡單裸板系統(tǒng)
          1. 創(chuàng)建源文件工程文件夾,如下圖所示:

          其中文件夾“CMSIS”為內(nèi)核的接口,包含的文件如下圖

          文件夾STM32_StdPeriph為固件驅(qū)動文件夾,這個把STM32的固件全都添加進(jìn)去即可。
          文件夾User為其他文件,如下圖所示:

          文件夾Output和List主要是放那些編譯產(chǎn)生的亂七八糟的文件,為了使工程代碼更加簡潔。
          2.使用MDK創(chuàng)建無操作系統(tǒng)工程項(xiàng)目,這一點(diǎn)就不一一說了,將創(chuàng)建后的工程項(xiàng)目文件樹截圖如下:

          這個時候還沒有main文件,那么創(chuàng)建一個mian.c文檔即可,這里需要注意,創(chuàng)建main.c后,要將其添加到項(xiàng)目中才行,而不是簡單的保存。如下圖所示:、

          注意:main.c中要有一個mian函數(shù),否則編譯器會報錯提示你的。然后就是項(xiàng)目的配置,這個還是很重要的,下面分別說需要配置的地方:
          (1)Output選項(xiàng)如下:

          這里面勾選了Create HEX File選項(xiàng),同時將項(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)行適當(dāng)?shù)母?。Include Paths是要包含的頭文件路徑,這個為了保險,將項(xiàng)目中的所有有.h的文件的文件夾都包含進(jìn)去就可以了。
          4.Debug選項(xiàng)如下:

          ,我使用的是Jlink進(jìn)行燒寫調(diào)試,所以選擇了如圖所示,還要進(jìn)行settings,如下:

          這里要勾選“Reset and Run”,這樣做的目的是,每當(dāng)燒寫下載后,CPU進(jìn)行復(fù)位并運(yùn)行。
          5.Utilities選項(xiàng)設(shè)置如下所示:

          至此,配置完畢,編譯一下,沒有錯誤,創(chuàng)建一個簡單的點(diǎn)亮LED程序,驗(yàn)證一下即可。
          備注說明:如果按照這個步驟操作,編譯,如果出現(xiàn)一些簡單的錯誤,比如沒有main函數(shù),沒有發(fā)現(xiàn)某個頭文件,那么按照提示解決即可,但是如果發(fā)現(xiàn)了很多怪怪的編譯錯誤,比如說未定義u32,u8這些符號時,那就要注意一下了,有可能是MDK版本的問題,我在使用MDK低版本的時候,發(fā)現(xiàn)有問題,而使用高版本的時候就沒問題了,所以需要注意一下。

          上一頁 1 2 下一頁

          關(guān)鍵詞: uCOS-IISTM32移植步

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();