資源描述:
《ucos-ii 在skyeye上的移植分析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、SkyEye技術(shù)報(bào)告uC/OS-II在SkyEye上的移植分析uC/OS-II在SkyEye上的移植分析李明lmcs00@mails.tsinghua.edu.cnSkyEye仿真調(diào)試器是基于ARM7TDMI核的,因此移植uC/OS-II到SkyEye上可以借鑒網(wǎng)上已有的例如SansungS3C3410X的移植代碼,這在uC/OS-II的主頁(yè)上很容易找到。當(dāng)然自己動(dòng)手做移植也是對(duì)ARM體系結(jié)構(gòu)和匯編語言的進(jìn)一步熟悉,同時(shí)對(duì)于uC/OS-II內(nèi)核的調(diào)度機(jī)制會(huì)有更深的認(rèn)識(shí)。整個(gè)移植工作可以分為兩個(gè)方面,一部分是和ARM相關(guān),一部分是和移植原理相關(guān)。在開始實(shí)際的移植工作前,需要對(duì)這兩
2、部分有一定的背景知識(shí),尤其是和側(cè)重于和移植工作相關(guān)的概念和原理。下面分別做一些介紹:一、ARM的體系結(jié)構(gòu)ARM(AdvancedRISCMachines)是目前在嵌入式領(lǐng)域里應(yīng)用最廣泛的RISC微處理器結(jié)構(gòu),以其低成本、低功耗、高性能的特點(diǎn)占據(jù)了嵌入式系統(tǒng)應(yīng)用領(lǐng)域的領(lǐng)先地位。ARM系列的處理器當(dāng)前有ARM7、ARM9、ARM9E、ARM10等多個(gè)產(chǎn)品,此外ARM公司合作伙伴,例如Intel也提供基于XScale微體系結(jié)構(gòu)的相關(guān)處理器產(chǎn)品。所有的ARM處理器都共享ARM通用的基礎(chǔ)體系結(jié)構(gòu),所以開發(fā)者在不同的ARM處理器上做操作系統(tǒng)移植時(shí),可以將節(jié)省相當(dāng)多的工作量,這無疑將大大降低
3、軟件開發(fā)成本。要詳細(xì)完整的了解ARM的體系結(jié)構(gòu),當(dāng)然是去讀ARMArchitecturReferenceManual,這是一個(gè)13M的pdf文檔,有800多頁(yè),可以從ARM的網(wǎng)站下載,也可以到阿卡嵌入式興趣小組的FTP服務(wù)器(ftp://159.226.40.150)上找到。北航出的一本《ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用基礎(chǔ)》基本上翻譯了這個(gè)pdf中大部分重要的內(nèi)容,可以作為入門的中文教材。這里我們僅僅對(duì)其中和移植工作密切相關(guān)的概念做簡(jiǎn)要介紹,1、處理器模式:(cpumode)ARM的處理器可以工作在7種模式,如下圖所示:這里除usr模式以外的其他模式都叫做特權(quán)模式,除usr和sy
4、sSkyEye技術(shù)報(bào)告第8頁(yè)2021-7-13SkyEye技術(shù)報(bào)告uC/OS-II在SkyEye上的移植分析外的其他5種模式叫做異常模式。在usr模式下對(duì)系統(tǒng)資源的訪問是受限制的,也無法主動(dòng)地改變處理器模式。異常模式通常都是和硬件相關(guān)的,例如中斷或者是試圖執(zhí)行未定義指令等。這里需要強(qiáng)調(diào)的是和移植相關(guān)的兩種處理器模式:svc態(tài)和irq態(tài),分別指操作系統(tǒng)的保護(hù)模式和通用中斷處理模式。這兩種模式之間的轉(zhuǎn)換可以通過硬件的方式,也可以通過軟件的方式。uC/OS-II內(nèi)核在執(zhí)行過程中,大部分時(shí)間都是工作在svc態(tài),當(dāng)有硬件中斷,例如時(shí)鐘中斷到來時(shí),cpu硬件上會(huì)自動(dòng)完成從svc態(tài)進(jìn)入irq
5、態(tài),在中斷處理程序的結(jié)束處,則需要通過編程的方法使得cpu從irq態(tài)恢復(fù)到svc態(tài),這個(gè)在移植代碼中可以找到。1、程序狀態(tài)寄存器:(PSR:Programstatusregister)在任何一種處理器模式中,都使用同一個(gè)寄存器來標(biāo)識(shí)當(dāng)前處理器的工作模式:這個(gè)寄存器叫做CPSR(CurrentProgramStatusRegister),它的[0--4]位用來表示cpumode:每一種處理器異常模式,都有一個(gè)對(duì)應(yīng)的SPSR(SavedProgramStatusRegister)寄存器,用來保存進(jìn)入異常模式前的CPSR。SPSR的作用就是當(dāng)從異常模式退出時(shí),可以通過一條簡(jiǎn)單的匯編指
6、令就能夠恢復(fù)進(jìn)入異常模式前的CPSR,而這個(gè)值都是保存在當(dāng)前異常模式的SPSR中的。例如:當(dāng)從usr態(tài)進(jìn)入中斷irq態(tài)時(shí),原先的CPSR_all將被保存在當(dāng)前的SPSR_irq中,類似的異常模式下的SPSR還有SPSR_fiq、SPSR_svc、SPSR_abt、SPSR_und。非異常模式的usr和sys模式下沒有SPSR,只有CPSR。不能顯式的指定把CPSR保存到某個(gè)異常模式下的SPSR,比如SPSR_irq,而必須是變更到irq態(tài)之后cpu自動(dòng)完成的,不能在其他態(tài)下硬性賦值,因?yàn)镾PSR_irq是其他狀態(tài)下不可見的。2、ARM寄存器:(register)ARM處理器一共
7、有37個(gè)寄存器,其中31個(gè)是通用寄存器,包括一個(gè)程序計(jì)數(shù)器PC。另外6個(gè)就是上面提到的程序狀態(tài)寄存器。a)通用寄存器:i.R0-R7:與所有處理器模式無關(guān)的寄存器,可以用作任何用途。ii.R8-R14:與處理器模式有關(guān)的寄存器,在不同的模式下,對(duì)應(yīng)到不同的物理寄存器。其中R13又叫做SkyEye技術(shù)報(bào)告第8頁(yè)2021-7-13SkyEye技術(shù)報(bào)告uC/OS-II在SkyEye上的移植分析sp,一般用于堆棧指針。R14又叫做lr,一般用于保存返回地址。這兩個(gè)寄存器在每種異常模式下都對(duì)應(yīng)到不同的