《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > Nucleus操作系統(tǒng)在ARM11上的移植研究與實現(xiàn)
Nucleus操作系統(tǒng)在ARM11上的移植研究與實現(xiàn)
2014年電子技術(shù)應(yīng)用第9期
鄒 洋,李琳皓,梁 峰
重慶郵電大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,重慶400065
摘要: 基于對ARM11架構(gòu)的啟動模式與內(nèi)存分配的技術(shù)研究,通過對Nucleus內(nèi)核的分析,在ARM11架構(gòu)的芯片上實現(xiàn)Nucleus操作系統(tǒng)的移植。
Abstract:
Key words :

    摘  要: 基于對ARM11架構(gòu)的啟動模式與內(nèi)存分配的技術(shù)研究,通過對Nucleus內(nèi)核的分析,在ARM11架構(gòu)的芯片上實現(xiàn)Nucleus操作系統(tǒng)的移植。以S3C6410為例,詳細(xì)介紹了從板級初始化到任務(wù)循環(huán)調(diào)度過程中的啟動模塊、中斷設(shè)計、定時器設(shè)計、任務(wù)調(diào)度流程與觸發(fā)方式。目前成功移植于TD-LTE系統(tǒng)中,實現(xiàn)操作系統(tǒng)基本功能的同時滿足了實驗項目中TD-LTE對系統(tǒng)實時性與任務(wù)資源管理的需求。

    關(guān)鍵詞: Nucleus操作系統(tǒng);移植;啟動加載;中斷;任務(wù)調(diào)度


    Nucleus操作系統(tǒng)作為一個實時性較強(qiáng)的嵌入式操作系統(tǒng)具有較高可移植性,目前在ARM(Advanced RISC Machines)架構(gòu)上已經(jīng)成功實現(xiàn)移植,現(xiàn)有文獻(xiàn)中實現(xiàn)多基于較老的ARM7或是ARM9架構(gòu),并且介紹籠統(tǒng),和實際結(jié)合不緊密[1-2]。本文詳細(xì)介紹Nucleus在ARM11架構(gòu)上的移植,以S3C6410芯片的實驗數(shù)據(jù)為證,分析在移植過程的內(nèi)存分配、堆棧配置、時鐘、中斷設(shè)置。文中詳細(xì)闡述了具體應(yīng)用于TD-LTE系統(tǒng)時,移植過程中啟動模塊設(shè)計對系統(tǒng)性能的影響,以及內(nèi)核移植中的關(guān)鍵接口和系統(tǒng)任務(wù)調(diào)度方式。

1 基本啟動流程與內(nèi)存分配

   移植過程中的基本流程如圖1所示。

qrs3-t1.gif

    流程中的各個部分的設(shè)置并非是像框圖這樣獨立開來的,在實際的應(yīng)用設(shè)計中各個模塊都是互相有聯(lián)系的,會根據(jù)加載方式的不同、內(nèi)存分配的差異或是具體功能的要求而產(chǎn)生關(guān)聯(lián)性的改變。在后面幾個重要模塊的移植過程介紹中也會對此詳述。

    移植的目的在于應(yīng)用,本移植應(yīng)用于TD-LTE無線綜合測試儀中(該產(chǎn)品采用ARM11架構(gòu)的S3C6410芯片),為該產(chǎn)品實現(xiàn)協(xié)議層的任務(wù)調(diào)度。很多實驗項目中采用手動方式加載啟動模塊,然而在應(yīng)用中,實現(xiàn)一個產(chǎn)品不可能像普通的調(diào)試程序一樣手動加載驅(qū)動與操作系統(tǒng),然后進(jìn)入任務(wù)調(diào)度,因此需要實現(xiàn)自動加載而利用到Flash。

    另外中斷向量表設(shè)置必須從內(nèi)存起始地址0x0000-0000加載[3],否則無法實現(xiàn)正常硬件中斷,而在中斷產(chǎn)生時使得程序異常終止。在啟動時首先要完成兩個模塊的加載,一是硬件的初始化模塊,需要在SROM啟動調(diào)試模式下燒寫到Flash中,F(xiàn)lash啟動模式下自動加載到0x0c000000上并自動拷貝到0x00000000運行;第二個模塊是操作系統(tǒng)的初始化模塊,在啟動過程中Flash自動燒寫加載到DDR中運行[4],操作系統(tǒng)模塊同樣需要設(shè)置中斷向量表。然而這時的起始內(nèi)存地址0x00000000已經(jīng)被模塊一占用,因此需要設(shè)計一種機(jī)制在啟動過程中動態(tài)加載操作系統(tǒng)。

    這些限制都是在中斷向量表設(shè)置與內(nèi)存分配中需要綜合考慮的。下面介紹兩種方式來實現(xiàn)上述啟動加載,并在后文進(jìn)行比較測試。

1.1 基于MMU的啟動設(shè)計

    傳統(tǒng)的MMU(存儲器管理單元)方式,即是在內(nèi)存上做映射。具體方案是在第一部分的硬件初始化程序段中從0x50000000到0x59000000的DDR物理地址做地址映射,實現(xiàn)中在0x50000000到0x51000000部分存放頁表,建立虛擬存儲空間,映射地址為0x00000000到0x08000000,這樣可以在SROM啟動模式和Flash啟動模式下將帶有中斷向量表的操作系統(tǒng)模塊從映射過的0x00000000位置加載,完成中斷向量表設(shè)置[4]。內(nèi)存分配方式如圖2所示。

qrs3-t2.gif

圖2  MMU方式的內(nèi)存分配模式

    但是映射后讀寫系統(tǒng)數(shù)據(jù)時會使用到頁表查詢來計算實際物理地址,影響到系統(tǒng)效率。

1.2 基于重寫的啟動設(shè)計

    映射方式雖然設(shè)計與加載方面比較簡單方便,但是由于采用了MMU會產(chǎn)生頁、段等數(shù)據(jù)換算,同時還要兼顧DDR的運行速度,數(shù)據(jù)讀寫速度可能跟不上,因此在設(shè)計過程中也設(shè)計了第二套方案,考慮如何在不使用MMU的條件下實現(xiàn)啟動加載[5]。采用重寫方式來實現(xiàn)。由于函數(shù)調(diào)用會使用到堆棧空間,因此重寫部分必須在操作系統(tǒng)模塊堆棧空間分配完成后實現(xiàn),采用memcpy()函數(shù)(內(nèi)存復(fù)制函數(shù))將在0x50000000位置的中斷向量表復(fù)制重寫到0x00000000地址。由于系統(tǒng)在0x50000000后面的地址上運行,這種方法在中斷發(fā)生時會有比較大的內(nèi)存跨越尋址,也會對系統(tǒng)執(zhí)行效率有些許影響。此外這種方法還有一個無法避免的缺點,就是在SROM啟動的調(diào)試模式無法實現(xiàn),因為S3C6410在該啟動模式下0x00000000是只讀的(無法重寫),因此只能在Flash啟動模式加載。

1.3 兩種啟動方式的性能對比

    上述兩種方案各有優(yōu)缺點,因此筆者通過在現(xiàn)實情況比較接近的中斷頻率條件下寫入等量數(shù)據(jù)到相同內(nèi)存下,并比較寫入時間來確定較優(yōu)方案。通過在寫數(shù)據(jù)前后拉高拉低電平來統(tǒng)計時間,在0.5 ms一次的中斷頻率下,寫10萬個8 bit數(shù)據(jù)到操作系統(tǒng)中聲明的相同數(shù)組上,所用時間在示波器上的截圖如圖3所示。

qrs3-t3.gif

    圖中X部分是使用了MMU的映射內(nèi)存啟動模式,10萬8 bit數(shù)據(jù)耗時約2.82 ms,而Y部分所示采用重寫方式下耗時約為1.33 ms,可見采用重寫方式加載中斷向量表具有比較明顯的執(zhí)行效率優(yōu)勢,更能滿足實際需求。當(dāng)然在調(diào)試過程中采用MMU方式是比較便于調(diào)試修改的,無需每次修改后都進(jìn)行Flash燒寫,而且MMU方式對ARM7以上架構(gòu)具有普遍實用性,而重寫方式僅在本實例中實現(xiàn),因此MMU方式也有其實用性。

2 中斷與定時器

    定時器是通過中斷來實現(xiàn)的,這里一并介紹。首先在Nucleus的啟動代碼加載前配置文件存儲區(qū)域結(jié)束地址,通常可采用標(biāo)示符“|Image$$ZI$$Limit|”作為堆棧起始加載地址,避免加載運行后,破壞代碼存儲區(qū);其次需要在Nucleus內(nèi)核初始化區(qū)域中對高級中斷進(jìn)行配置并設(shè)置堆棧區(qū)域,以支持定時器初始化;然后傳遞堆棧分配結(jié)束地址到應(yīng)用初始化模塊,用于動態(tài)分配內(nèi)存池;最后切換到SVC模式運行系統(tǒng),方便系統(tǒng)設(shè)置與模式切換。上述幾點是Nucleus內(nèi)核加載配置的幾個關(guān)鍵點。

2.1 硬中斷(低級中斷)

    硬中斷是由硬件觸發(fā)的中斷,通過硬件引腳的電平變動觸發(fā),有最高的實時性,且可以通過公共引腳來實現(xiàn)外部設(shè)備的交互。本文介紹其中3個關(guān)鍵中斷,分別對應(yīng)S3C6410的VIC0、VIC1、VIC28(Vectored Interrupt Controller)寄存器,其中VIC0與VIC1對應(yīng)外部中斷,本文在應(yīng)用中設(shè)計為DSP中斷與FPGA中斷,VIC28對應(yīng)PWM定時器,其他功能性中斷在這里就不贅述。

    在設(shè)計中采用IRQ中斷模式,中斷發(fā)生時現(xiàn)場保護(hù)比較重要,值得注意的是在低級中斷中采用C語言自帶的“__irq”做返回值的方法來保護(hù)現(xiàn)場是不可取的,Nucleus硬中斷需要對寄存器做更有針對性的保護(hù),Nucleus提供了內(nèi)核級接口對現(xiàn)場做詳細(xì)保護(hù)。首先在IRQ中斷入口處對A1到A4寄存器做壓棧保護(hù),并保存IRQ模式下的lr寄存器,然后調(diào)用Nucleus提供的函數(shù)TCT_Interrupt_Context_Save(內(nèi)核函數(shù))現(xiàn)場保護(hù),并在中斷服務(wù)處理完成后調(diào)用TCT_Interrupt_Context_Restore(內(nèi)核函數(shù))恢復(fù)現(xiàn)場。

2.2 高級中斷

    高級中斷可以有效處理低級中斷中需要高效處理或是嵌套處理實時任務(wù)的情況。以本應(yīng)用為例,由于FPGA中斷服務(wù)中做的數(shù)據(jù)處理需要消耗一定的時間,而且在系統(tǒng)IRQ中斷過程中IRQ中斷處于屏蔽狀態(tài),因此會出現(xiàn)在中斷處理過程中積壓后面的中斷服務(wù)的情況,這里就可以設(shè)置高級中斷,在低級中斷服務(wù)中只需將高級中斷激活,耗時極短,數(shù)據(jù)處理由操作系統(tǒng)在高級中斷中調(diào)度完成。圖4中第一行波形高電平段為FPGA中斷。

qrs3-t4.gif

    此外在有強(qiáng)時序性的任務(wù)調(diào)度中,也可以使用高級中斷來保障時序同時不影響系統(tǒng)低級中斷的實時性。在本應(yīng)用中DSP中斷中的數(shù)據(jù)處理與協(xié)議棧小區(qū)激活部分的數(shù)據(jù)處理都具有強(qiáng)時序性同時由于數(shù)據(jù)處理量較大會影響系統(tǒng)實時性,導(dǎo)致指針號無法對齊或指針號記錄積壓等問題,這里也需要使用高級中斷來激發(fā)任務(wù),加強(qiáng)系統(tǒng)實時性。圖4中第二行高電平段為DSP中斷數(shù)據(jù)處理。

    從圖4中可以看出,采用了高級中斷的FPGA子幀中斷的時間非常的短,幾乎可以忽略不計,第二行的高電平為DSP處理消息時需要耗費的時間長度為465 ?滋s,可見該處理時間較長,若在低級中斷中處理很可能影響到FPGA中斷的時序,從而影響系統(tǒng)時序。在圖中明顯可以看到低級中斷與任務(wù)處理間的調(diào)度時間間隔在微秒級,完全滿足系統(tǒng)實時性的性能指標(biāo)。同時在DSP數(shù)據(jù)處理完成后后續(xù)任務(wù)的執(zhí)行在第三行波形中顯示出來,運行時序正常。

2.3 定時器設(shè)計與中斷整體設(shè)計

    操作系統(tǒng)定時器采用PWM硬件定時器做節(jié)拍計時,根據(jù)TD-LTE無線綜合測試儀的設(shè)計要求,采用了0.5 ms一次的節(jié)拍頻率作為操作系統(tǒng)定時的基本單位。設(shè)計中采用Timer4硬件定時器,并開啟自動重置(Auto-Reload)模式使計時持續(xù)。在每0.5 ms產(chǎn)生一次的定時器硬件中斷中調(diào)用TMT_Timer_Interrupt()函數(shù)(內(nèi)核函數(shù))來將硬件定時器與Nucleus操作系統(tǒng)關(guān)聯(lián)[6]。整體中斷設(shè)計如圖5所示。

qrs3-t5.gif

    移植應(yīng)用中可以通過PWM調(diào)整定時器單位時間,如果使用了外部設(shè)備中斷產(chǎn)生單位時間中斷,也可作為定時器使用,只需要把TMT_Timer_Interrupt()放在該外部中斷中即可。

3 任務(wù)調(diào)度

    根據(jù)TD-LTE無線綜合測試儀中的設(shè)計要求TD-LTE任務(wù)流程與觸發(fā)方式涉及到應(yīng)用初始化與任務(wù)調(diào)度設(shè)置兩個模塊。在應(yīng)用初始化內(nèi)需要做內(nèi)存池初始化、任務(wù)初始化、隊列初始化、時鐘設(shè)置初始化與高級中斷初始化等工作,這些工作比較常規(guī)在這里不再詳述。任務(wù)調(diào)度設(shè)置需要根據(jù)協(xié)議棧各層順序設(shè)置,在各層任務(wù)中需要設(shè)置任務(wù)觸發(fā)方式,任務(wù)流程如圖6所示。

qrs3-t6.gif

    本文采用隊列方式進(jìn)行任務(wù)調(diào)度。各任務(wù)間采用消息機(jī)制觸發(fā)并支持搶占,操作系統(tǒng)運行時首先在循環(huán)調(diào)度中按順序調(diào)度任務(wù)并將每個任務(wù)掛起,在此之后的調(diào)度中在每個任務(wù)中檢查隊列中是否有對應(yīng)消息,需要執(zhí)行該層任務(wù)的時候就在前一個任務(wù)中發(fā)送該層對應(yīng)消息到隊列中,檢測到消息后該層任務(wù)從掛起狀態(tài)進(jìn)入就緒或執(zhí)行狀態(tài),不需要執(zhí)行該層任務(wù)的時候不發(fā)送消息給該層,該層任務(wù)在檢測不到消息的情況下就會掛起任務(wù)等待下一次調(diào)用[7],在沒有任務(wù)的情況下系統(tǒng)進(jìn)入idle狀態(tài)等待計時器激活或是硬件中斷發(fā)生。其中小區(qū)激活與DSP任務(wù)采用外部硬件中斷機(jī)制激活,外部中斷激活高級中斷,任務(wù)在高級中斷來執(zhí)行,既可以滿足操作系統(tǒng)實時性也可以很好的管理好各層任務(wù)。

    操作系統(tǒng)移植過程中不僅需要從硬件角度來實現(xiàn)操作系統(tǒng)的正常運作還需要綜合考慮系統(tǒng)的管理性能與整個系統(tǒng)的執(zhí)行效率和實時性。移植后在ARM Workbench IDE v4.0與RealView Debugger v4.0上編譯調(diào)試,并通過測試板驗證和聯(lián)機(jī)驗證,運行結(jié)果和理論值一致。此移植具有較強(qiáng)的獨立性和穩(wěn)定性,優(yōu)化了系統(tǒng)資源利用率,實現(xiàn)了任務(wù)中斷與任務(wù)調(diào)度的高強(qiáng)度反復(fù)穩(wěn)定運行,符合項目“TD-LTE無線終端綜合測試儀表” 調(diào)試中對系統(tǒng)實時性與資源調(diào)度的要求并應(yīng)用于其中。

參考文獻(xiàn)

[1] 李書根,潘海燕,王培.一種嵌入式實時操作系統(tǒng)高可靠文件系統(tǒng)[J].微電子學(xué)與計算機(jī),2014,31(2):14-16.

[2] 徐宇柘,鐘銳.Nucleus實時操作系統(tǒng)在繼電保護(hù)系統(tǒng)中的實時性研究[J].電腦知識與技術(shù),2007(13):3-4.

[3] 杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003. 

[4] Samsung Electronics.S3C6410X RISC microprocessor user′s manual[Z].2008.

[5] LEE J,PARK J,HONG S.Memory footprint reduction with quasi-static shared libraries in MMU-less embedded systems[C].Real-Time and Embedded Technology and Applications,2006,Proceedings of the 12th IEEE,2006:24-36.

[6] Accelerated Technology,Inc..Nucleus NET reference manual[Z].2005.

[7] NGOLAH C F,Wang Yingxu,Tan Xinming.Implementing task scheduling and event handling in RTOS+[C].Electrical and Computer Engineering,2004,Canadian Conference,2004:1523-1526.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美视频在线观看 亚洲欧| 国语自产精品视频在线看一大j8 | 欧美三日本三级三级在线播放| 激情成人av在线| 国产精品高精视频免费| 欧美日韩精品不卡| 欧美精品久久久久久久免费观看| 免费成人网www| 老司机免费视频一区二区| 久久只精品国产| 久久男人av资源网站| 久久男女视频| 麻豆久久婷婷| 欧美精品九九99久久| 欧美激情综合在线| 欧美高清不卡在线| 欧美大成色www永久网站婷| 欧美激情欧美激情在线五月| 欧美国产精品v| 欧美日本不卡| 欧美日韩一区二区三区| 欧美亚州韩日在线看免费版国语版| 欧美日韩一区不卡| 国产精品视频xxx| 国产一区二区三区在线免费观看 | 欧美精品在线极品| 欧美日韩在线精品| 国产精品实拍| 一区二区三区国产精华| 国产精品女人久久久久久| 国产精品一级久久久| 国产性天天综合网| 在线观看日韩精品| 亚洲精品一二三| 这里只有精品在线播放| 性欧美超级视频| 91久久精品日日躁夜夜躁国产| 日韩一级视频免费观看在线| 亚洲一区三区视频在线观看 | 国产精品美女久久久| 国产一区二区0| 亚洲国产欧美在线| 99精品免费视频| 午夜精品www| 亚洲全部视频| 亚洲婷婷国产精品电影人久久| 欧美一二三区在线观看| 老色鬼精品视频在线观看播放 | 国产精品xxx在线观看www| 国产日本欧美一区二区三区在线| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲欧洲一区二区在线播放| 亚洲午夜在线观看| 国产裸体写真av一区二区| 亚洲性感美女99在线| 在线视频日韩| 久久精品导航| 亚洲午夜免费视频| 久久久久久夜精品精品免费| 欧美国产一区视频在线观看 | 亚洲激情一区二区三区| 亚洲视频图片小说| 亚洲电影免费观看高清完整版在线观看| 亚洲人精品午夜| 亚洲欧美成人| 免费久久精品视频| 国产乱码精品一区二区三区忘忧草 | 欧美成人午夜视频| 国产精品视频大全| 亚洲国内精品在线| 性做久久久久久久免费看| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲综合色激情五月| 亚洲美女诱惑| 久久精品一区二区三区不卡牛牛 | 韩日精品中文字幕| 中国亚洲黄色| 亚洲精品乱码久久久久| 欧美一区二区三区四区在线观看地址| 欧美激情一区二区三区全黄 | 亚洲丶国产丶欧美一区二区三区| 亚洲伊人伊色伊影伊综合网| 亚洲日本中文字幕| 久久久久成人精品免费播放动漫| 欧美日韩午夜| 亚洲第一福利视频| 欧美在线观看一区| 午夜精品一区二区在线观看 | 欧美视频在线观看视频极品| 1024精品一区二区三区| 性8sex亚洲区入口| 亚洲性感美女99在线| 欧美好吊妞视频| 在线看日韩欧美| 久久gogo国模裸体人体| 香蕉av777xxx色综合一区| 欧美精品色一区二区三区| 在线日本高清免费不卡| 久久精品国产91精品亚洲| 亚洲欧美日韩一区在线观看| 欧美日韩三级在线| 日韩天堂在线视频| 99精品国产在热久久婷婷| 欧美成人一区在线| 在线看片一区| 91久久精品日日躁夜夜躁欧美 | 欧美精品一区二区视频| 亚洲国产欧美精品| 亚洲经典在线看| 蜜臀av性久久久久蜜臀aⅴ| 国内精品一区二区| 欧美专区18| 久久综合精品国产一区二区三区| 国产一区成人| 欧美在线观看一二区| 久久久国产成人精品| 国产一区二区三区的电影 | 黄色精品一二区| 久久不射2019中文字幕| 久久久久久综合| 狠狠干综合网| 亚洲国产精品福利| 女女同性精品视频| 亚洲日本中文字幕免费在线不卡| 亚洲靠逼com| 欧美日韩一区二区免费在线观看| 一区二区精品| 亚洲欧美日韩精品久久奇米色影视| 国产精品久久久久影院亚瑟| 亚洲自拍偷拍色片视频| 欧美在线你懂的| 国产一区自拍视频| 亚洲国产综合91精品麻豆| 欧美电影美腿模特1979在线看| 亚洲片国产一区一级在线观看| 日韩一区二区高清| 欧美日韩亚洲系列| 在线亚洲伦理| 久久狠狠亚洲综合| 在线观看亚洲精品| 一区二区三区四区精品| 国产精品久久影院| 久久国产黑丝| 欧美韩国日本一区| 亚洲视频播放| 久久国产一区二区| 亚洲国产精品va在线看黑人 | 欧美在线视频不卡| 欧美成人a视频| 一本色道久久99精品综合| 欧美在线观看一区| 1024成人| 亚洲午夜在线视频| 国产一区二区三区久久悠悠色av | 久久久久久电影| 亚洲国产精品成人精品| 亚洲一区二区三区高清| 国产夜色精品一区二区av| 亚洲精品中文字幕在线| 国产精品美女久久久| 亚洲福利视频专区| 欧美视频一区二区三区…| 欧美一区二区三区精品| 欧美精品一区二区在线观看| 亚洲欧美一区二区三区久久| 毛片一区二区| 亚洲一区影院| 欧美激情欧美狂野欧美精品| 亚洲一区在线视频| 欧美寡妇偷汉性猛交| 亚洲制服欧美中文字幕中文字幕| 久久亚洲综合网| 在线亚洲一区| 女人香蕉久久**毛片精品| 亚洲一区二区在| 欧美国产视频一区二区| 性欧美video另类hd性玩具| 欧美日本一区| 久久精品噜噜噜成人av农村| 欧美日韩一区三区四区| 欧美中文字幕在线| 欧美视频亚洲视频| 91久久精品一区| 国产情人综合久久777777| 99视频在线观看一区三区| 国内精品久久久久影院优 | 久久精品国产清高在天天线| 亚洲精品一区二区三区四区高清| 久久精品国产77777蜜臀| av72成人在线| 欧美丰满高潮xxxx喷水动漫| 性欧美暴力猛交69hd| 欧美午夜视频在线| 亚洲激情视频网| 国产视频一区在线观看| 一区二区三区四区五区视频 | 亚洲精品在线二区| 裸体歌舞表演一区二区| 亚洲欧美在线高清| 国产精品久久久久久久久动漫|