移植ucosII到STM32F103ZE(一)
1.
MDK即RealView MDK(Microcontroller Development kit),是 ARM 公司目前最新推出的針對(duì)各種嵌入式處理器的軟件開(kāi)發(fā)工具。RealView
RealView MDK的突出特性:
菜鳥(niǎo)的阿拉伯飛毯—— 啟動(dòng)代碼生成向?qū)?,自?dòng)引導(dǎo),一日千里
啟動(dòng)代碼和系統(tǒng)硬件結(jié)合緊密,必須用匯編語(yǔ)言編寫(xiě),因而成為許多工程師難以跨越多門檻。RealView MDK的µVision3工具可以幫您自動(dòng)生成完善的啟動(dòng)代碼,并提供圖形化的窗口,隨您輕松修改。無(wú)論對(duì)于初學(xué)者還是有經(jīng)驗(yàn)的開(kāi)發(fā)工程師,都能大大節(jié)省時(shí)間,提高開(kāi)發(fā)效率。
高手的無(wú)劍勝有劍 —— 軟件模擬器,完全脫離硬件的軟件開(kāi)發(fā)過(guò)程
RealView MDK的設(shè)備模擬器可以仿真整個(gè)目標(biāo)硬件,包括快速指令集仿真、外部信號(hào)和I/O仿真、中斷過(guò)程仿真、片內(nèi)所有外圍設(shè)備仿真等。開(kāi)發(fā)工程師在無(wú)硬件的情況下即可開(kāi)始軟件開(kāi)發(fā)和調(diào)試,使軟硬件開(kāi)發(fā)同步進(jìn)行,大大縮短開(kāi)發(fā)周期。而一般的ARM開(kāi)發(fā)工具僅提供指令集模擬器,只能支持ARM內(nèi)核模擬調(diào)試。
專家的哈雷望遠(yuǎn)鏡 —— 性能分析器,看得更遠(yuǎn)、看得更細(xì)、看得更清
RealView MDK的性能分析器好比哈雷望遠(yuǎn)鏡,讓您看得更遠(yuǎn)和更準(zhǔn),它輔助您查看代碼覆蓋情況,程序運(yùn)行時(shí)間,函數(shù)調(diào)用次數(shù)等高端控制功能,指導(dǎo)您輕松的進(jìn)行代碼優(yōu)化,成為嵌入式開(kāi)發(fā)高手。通常這些功能只有價(jià)值數(shù)千美元的昂貴的Trace工具才能提供。
業(yè)界最優(yōu)秀的編譯器——RealView 編譯器,代碼更小,性能更高。
2.
3.
4.
5.
1)
http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip
2)
先去micrium網(wǎng)址注冊(cè)賬號(hào)
http://micrium.com/page/home
然后登陸并下載
http://micrium.com/newmicrium/uploads/file/appnotes/secure/Micrium-ST-uCOS-II-LCD-STM32.exe
二、
1.
STM32F103ZET6是STM32F103系列最高端配置芯片,cortex-M3內(nèi)核的32位處理器(內(nèi)部數(shù)據(jù)路徑,寄存器,存儲(chǔ)器都是32位),采用哈佛結(jié)構(gòu),72M主頻,LQFP144封裝,片上有512K的flash和64K的SRAM。
STM32家族主要產(chǎn)品系列家譜
2.
Cortex-M3只是用32位的thumb2指令。在支持了16位和32位的thumb-2指令集支持,cortex-M3無(wú)需把狀態(tài)在thumb和ARM之間來(lái)回的去換,尤其在使用大型條件嵌套以及執(zhí)行復(fù)雜運(yùn)算的時(shí)候,cortex-M3要比老一輩的ARM7執(zhí)行效率要高很多。
3.
Cortex-M3處理器擁有R0-R15的寄存器組,其中R13作為堆棧指針SP。SP有兩個(gè),但在同一時(shí)刻只能有一個(gè)可以看到。這也就是所謂的“banked”寄存器。
R0-R12 都是32 位通用寄存器,用于數(shù)據(jù)操作。但是注意:絕大多數(shù)16 位Thumb 指令只能訪問(wèn)R0-R7,而32 位Thumb-2 指令可以訪問(wèn)所有寄存器。
Cortex-M3 擁有兩個(gè)堆棧指針,然而它們是banked,因此任一時(shí)刻只能使用其中的一個(gè)。
主堆棧指針(MSP):復(fù)位后缺省使用的堆棧指針,用于操作系統(tǒng)內(nèi)核以及異常處理例程(包括中斷服務(wù)例程)
進(jìn)程堆棧指針(PSP):由用戶的應(yīng)用程序代碼使用。
堆棧指針的最低兩位永遠(yuǎn)是0,這意味著堆??偸? 字節(jié)對(duì)齊的。
寄存器及其功能:
xPSR
PRIMASK
FAULTMASK
BASEPRI
CONTROL
a、定義特權(quán)級(jí)別;b、選擇當(dāng)前使用哪個(gè)堆棧指針。
4.
Cortex-M3處理器制程兩種處理器模式和兩種特權(quán)操作。
兩種模式分別是處理者模式(handler mode)和線程模式(thread mode),主要是用于區(qū)別普通應(yīng)用程序的代碼和異常服務(wù)例程的代碼(包括中斷服務(wù)例程的代碼)。
兩種特權(quán)分級(jí)是特權(quán)級(jí)和用戶級(jí),用于提供一種存儲(chǔ)訪問(wèn)的保護(hù)機(jī)制,使得普通的用戶程序代碼不能意外地或者惡意地執(zhí)行涉及到要害的操作。
ucosii不區(qū)分特權(quán)級(jí)和用戶級(jí),程序始終工作在特權(quán)級(jí),因此兩個(gè)堆棧指針的切換是全自動(dòng)的,就在出入異常服務(wù)例程時(shí)由硬件處理。
5.
CM3的存儲(chǔ)系統(tǒng)與傳統(tǒng)ARM架構(gòu)的相比,有過(guò)脫胎換股般的改革:
第一,它的存儲(chǔ)器映射是預(yù)定義的,并且還規(guī)定好了哪個(gè)位置使用哪條總線。
第二,CM3 的存儲(chǔ)器系統(tǒng)支持所謂的“位帶”(bit-band)操作。通過(guò)它,實(shí)現(xiàn)了對(duì)單一比特的原子操作。位帶操作僅適用于一些特殊的存儲(chǔ)器區(qū)域中。
http://blog.sina.com.cn/s/blog_abd39cc70101ci44.html
第三,CM3 的存儲(chǔ)器系統(tǒng)支持非對(duì)齊訪問(wèn)和互斥訪問(wèn)。這兩個(gè)特性是直到了ARMv7-M 時(shí)才出來(lái)的。
最后,CM3 的存儲(chǔ)器系統(tǒng)支持both小端配置和大端配置。
CM3 只有一個(gè)單一固定的存儲(chǔ)器映射。這一點(diǎn)極大地方便了軟件在各種CM3 單片機(jī)間的移植。存儲(chǔ)空間的一些位置用于調(diào)試組件等私有外設(shè),這個(gè)地址段被稱為“私有外設(shè)區(qū)”。私有外設(shè)區(qū)的組件包括:
1)
2)
3)
4)
5)
? ROM表
CM3 的地址空間是4GB, 程序可以在代碼區(qū),內(nèi)部SRAM 區(qū)以及外部RAM 區(qū)中執(zhí)行。但是因?yàn)橹噶羁偩€與數(shù)據(jù)總線是分開(kāi)的,最理想的是把程序放到代碼區(qū),從而使取指和數(shù)據(jù)訪問(wèn)各自使用自己的總線,并行不悖。
Cortex-M3 預(yù)定義的存儲(chǔ)器映射
CM3在定義了存儲(chǔ)器映射之外,還為存儲(chǔ)器的訪問(wèn)規(guī)定了4種屬性,分別是:
? 可否緩沖(Bufferable)
? 可否緩存(Cacheable)
? 可否執(zhí)行(Executable)
? 可否共享(Sharable)
評(píng)論