<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > stm32f429 移植RT_Thread

stm32f429 移植RT_Thread

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏
RTT作為一個(gè)中國的開(kāi)源實(shí)時(shí)操作系統,經(jīng)過(guò)國內一些專(zhuān)業(yè)人士的充實(shí),現在其已經(jīng)支持大部分MCU以及X86
當然現在用的很火的STM32也不例外;RTT最大的特點(diǎn)就是線(xiàn)程數不限,支持以線(xiàn)程為基本調度單位的多任務(wù)系統。調度算法是基于優(yōu)先級的全搶占式線(xiàn)程調度,支持256個(gè)線(xiàn)程優(yōu)先級(亦可配置成32個(gè)線(xiàn)程優(yōu)先級),0優(yōu)先級代表 最高優(yōu)先級,255優(yōu)先級留給空閑線(xiàn)程使用;相同優(yōu)先級上支持多個(gè)線(xiàn)程,這些相同優(yōu)先級的線(xiàn)程采用可設置時(shí)間片長(cháng)度的時(shí)間片輪轉調度;調度器尋找下一個(gè)最 高優(yōu)先級就緒線(xiàn)程的時(shí)間是恒定的(O(1))。系統不限制線(xiàn)程數量的多少,只與物理平臺的具體內存相關(guān)。
現在2014.2月,RTT已經(jīng)更新到1.2.0版本,當然現在STM32也出了最新的429/439,但是RTT里只支持了40X;但是40X與429/439在硬件上區別不是很大這樣我們就可以用40X作為模板進(jìn)行移植了。
在移植之前大家要知道,RTT是靠scons來(lái)編譯和生成keil或者IAR的工程文件的,所以用scons這個(gè)工具在移植時(shí)比較方便,不必自己去找那些文件。
在此之前確保自己電腦上已經(jīng)安裝了Python和scons:下載的地址 Python:http://www.python.org/download/ (在此我用的是Python2.7)
scons: http://www.scons.org/download.php 選擇適合自己系統版本
先安裝Python;再把Python的安裝路徑添加到系統的PATH中;再安裝scons一路next;會(huì )自動(dòng)安裝到:XXXPython27Scripts目錄下,再把這路徑添加到系統PATH中;弄好了后分別在cmd下運行一下Python -v,scons -v看安裝是否成功。
接下來(lái)去RTT官網(wǎng)下載源碼,一般首頁(yè)的右上角就會(huì )有下載鏈接:下載下來(lái)后解壓到一個(gè)盤(pán)的根目錄:改名為RT_Thread,比如D:RT_Thread;在系統的系統變量中添加一個(gè)RTT_ROOT 變量,把自己剛剛那個(gè)路徑填進(jìn)去,運行一下set RTT_ROOT,看是否成功。
再把stm32f429的庫函數下載下來(lái)。
現在回到剛剛放RT_thread文件的中去:
bsp里就是可以支持芯片的工程模板;里面有一個(gè)stm32f40x目錄,把它拷貝出來(lái),為了不破壞原來(lái)的文件;之前說(shuō)了RT_Thread是靠scons來(lái)編譯或者建立keil工程的,和linux的Makefile有些相似之處,在這個(gè)目錄下有幾個(gè)比較重要的文件:
一個(gè)是rtconfig.h,就是通過(guò)這個(gè)文件添加和刪減系統組件的;還有一個(gè)是template.uvproj這是生成的keil工程的模板,可不要刪了。接下來(lái)用寫(xiě)字板打開(kāi) rtconfig.py 文件,他就是定義編譯器這些的巨像Makefile,我們用的是keil,修改一下 keil 的安裝路徑,看看自己keil裝到哪了,如果一致就不用改了。實(shí)打開(kāi)每個(gè)文件夾下面都一個(gè)SConscript文件,這個(gè)就是讓文件關(guān)聯(lián)起來(lái)的文件,大家仔細看看就知道它是如何工作的了;
大家可以看看rtconfig.h文件,看了就知道是怎么注冊一個(gè)組件,刪減一個(gè)組件;默認就開(kāi)了一個(gè)finsh,我們就先移植這個(gè)簡(jiǎn)單的。
打開(kāi)命令行cmd ,切換到stm32f40x目錄下,執行 scons --target=mdk4 –s ,這下就把keil工程建建好了,keil打開(kāi)工程;大家會(huì )發(fā)現keil的設置有些問(wèn)題,我們手動(dòng)改一下,就是芯片選型,還有就是外部晶振。這兩個(gè)改好后;我們看看工程文件:
比較整潔吧,比自己手動(dòng)移植干凈的多,打開(kāi)Drivers里面的board.c/ board.h就是初始化板子,看看board.h中會(huì )發(fā)現板子用的是USART2,而且內存也不對,下邊紅的就要改的(如果你用的是usart就不用改),如果用的不是默認引腳,那再打開(kāi)usart.c把引腳一改。
// Internal SRAM memory size[Kbytes] <8-64>
// Default: 64
#define STM32_SRAM_SIZE 192 //stm32f429 是 256K 在0x20000000后有192K 在0x10000000還有64k
#define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024)
#define RT_USING_UART1
//#define RT_USING_UART2
//#define RT_USING_UART3
// Console on USART: <0=> no console <1=>USART 1 <2=>USART 2 <3=> USART 3
// Default: 1
#define STM32_CONSOLE_USART 1
下一個(gè)文件夾STM32_Stperiph:這個(gè)文件改的多一點(diǎn),因為和STM32F429的庫文件有些不合,先把這個(gè)目錄下的文件都移除;看看最后的那個(gè)startup匯編文件也不對,之前不是下載了stm32f429的庫文件嘛,把429要的庫文件替換STM32_Stperiph下的文件,把里面的startup_stm32f429_439xx.s替換原來(lái)的startup_stm32f4xx.s,分別在在剛剛拷貝出來(lái)的文件里stm32f40xLibrariesSTM32F4xx_StdPeriph_Driverinc src和
stm32f40xLibrariesCMSISSTSTM32F4xxSourceTemplatesarm目錄下。再把這文件的文件添加到STM32_Stperiph下。
那么我們先編譯一下,會(huì )發(fā)現有錯誤,為什么呢?因為我們忘了還有一個(gè)文件忘改了,那就是stm32f4xx_conf.h;它在stm32f4xxdrivers目錄下,把新下的庫文件里面的stm32f4xx_conf.h拷貝過(guò)來(lái)。
在編譯一次,應該就可以通過(guò)了,下載下去就可以看見(jiàn)串口打印出信息了。
再次要確定自己的晶振是不是25MHz,如果是8MHz就必須在stm32f4xx_conf.h中加上:(這是在readme.txt有說(shuō))
#if defined (HSE_VALUE)
/* Redefine the HSE value; its equal to 8 MHz on the STM32F4-DISCOVERY Kit */
#undef HSE_VALUE
#define HSE_VALUE ((uint32_t)8000000)
#endif /* HSE_VALUE */



關(guān)鍵詞: stm32f429移植RT_Threa

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>