《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > Nucleus操作系統在ARM11上的移植研究與實現
Nucleus操作系統在ARM11上的移植研究與實現
2014年電子技術應用第9期
鄒 洋,李琳皓,梁 峰
(重慶郵電大學 計算機科學與技術學院,重慶400065)
摘要: 基于對ARM11架構的啟動模式與內存分配的技術研究,通過對Nucleus內核的分析,在ARM11架構的芯片上實現Nucleus操作系統的移植。以S3C6410為例,詳細介紹了從板級初始化到任務循環調度過程中的啟動模塊、中斷設計、定時器設計、任務調度流程與觸發方式。目前成功移植于TD-LTE系統中,實現操作系統基本功能的同時滿足了實驗項目中TD-LTE對系統實時性與任務資源管理的需求。
中圖分類號: TP316.2
文獻標識碼: A
文章編號: 0258-7998(2014)09-0010-04
Research and implementation of ARM11 transplantation on Nucleus operating system
Zou Yang,Li Linhao,Liang Feng
College of Computer Science and Technology,Chongqing University of Posts and Telecommunications,Chongqing 400065,China
Abstract: Based on the research of boot loader and memory assign on ARM11, the Nucleus operating system is transplanted on the chip of ARM11 sturcture. Taking S3C6410 as an example, the paper details the boot loader, design of interrupt and timer, task scheduling and method of trigger. Currently there is a successful transplantation for TD-LTE system. The transplanted operating system realizes the base function of operating system and meets the requirements of TD-LTE system in real-time and task management.
Key words : operating systemn of Nucleus;transplant;boot loader;interrupt;task scheduling

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

1 基本啟動流程與內存分配

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

001.jpg

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

  移植的目的在于應用,本移植應用于TD-LTE無線綜合測試儀中(該產品采用ARM11架構的S3C6410芯片),為該產品實現協議層的任務調度。很多實驗項目中采用手動方式加載啟動模塊,然而在應用中,實現一個產品不可能像普通的調試程序一樣手動加載驅動與操作系統,然后進入任務調度,因此需要實現自動加載而利用到Flash。

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

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

  1.1 基于MMU的啟動設計

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

002.jpg

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

  1.2 基于重寫的啟動設計

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

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

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

003.jpg

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

2 中斷與定時器

  定時器是通過中斷來實現的,這里一并介紹。首先在Nucleus的啟動代碼加載前配置文件存儲區域結束地址,通??刹捎脴耸痉皘Image$$ZI$$Limit|”作為堆棧起始加載地址,避免加載運行后,破壞代碼存儲區;其次需要在Nucleus內核初始化區域中對高級中斷進行配置并設置堆棧區域,以支持定時器初始化;然后傳遞堆棧分配結束地址到應用初始化模塊,用于動態分配內存池;最后切換到SVC模式運行系統,方便系統設置與模式切換。上述幾點是Nucleus內核加載配置的幾個關鍵點。

  2.1 硬中斷(低級中斷)

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

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

  2.2 高級中斷

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

  此外在有強時序性的任務調度中,也可以使用高級中斷來保障時序同時不影響系統低級中斷的實時性。在本應用中DSP中斷中的數據處理與協議棧小區激活部分的數據處理都具有強時序性同時由于數據處理量較大會影響系統實時性,導致指針號無法對齊或指針號記錄積壓等問題,這里也需要使用高級中斷來激發任務,加強系統實時性。圖4中第二行高電平段為DSP中斷數據處理。

004.jpg

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

  2.3 定時器設計與中斷整體設計

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

005.jpg

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

3 任務調度

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

006.jpg

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

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

參考文獻

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

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

  [3] 杜春雷.ARM體系結構與編程[M].北京:清華大學出版社,2003.

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

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

  [6] Accelerated Technology,Inc..Nucleus NET reference man-ual[Z].2005.

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


此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产一区二区主播在线| 一区二区三区回区在观看免费视频| 欧美精品观看| 美女精品网站| 久久中文字幕一区二区三区| 久久精品国产一区二区三区免费看| 香蕉免费一区二区三区在线观看| 一本色道**综合亚洲精品蜜桃冫| 91久久精品日日躁夜夜躁欧美| 久久精品动漫| 欧美一区二区视频观看视频| 午夜亚洲影视| 午夜欧美不卡精品aaaaa| 亚洲主播在线播放| 亚洲欧美日韩人成在线播放| 亚洲欧美激情精品一区二区| 亚洲在线第一页| 午夜在线电影亚洲一区| 午夜一区二区三区不卡视频| 欧美一区国产二区| 亚洲电影免费观看高清| 亚洲日本va午夜在线电影 | 亚洲福利视频免费观看| 亚洲高清激情| 亚洲精品日韩在线观看| 日韩午夜中文字幕| 亚洲午夜精品一区二区| 午夜在线观看免费一区| 久久国产88| 久久综合九色综合网站| 欧美黄色小视频| 欧美性理论片在线观看片免费| 国产精品久久久久久亚洲毛片 | 亚洲欧美网站| 亚洲国产精品一区二区www在线 | 欧美久久久久中文字幕| 欧美婷婷久久| 国产日韩欧美三级| 极品尤物一区二区三区| 亚洲裸体视频| 亚洲免费视频观看| 久久精品人人做人人综合 | 久久亚洲精品一区| 欧美高潮视频| 国产精品国产一区二区| 国产亚洲福利社区一区| 亚洲黑丝在线| 亚洲一区二区三区在线播放| 久久国产精品久久久久久久久久 | 香蕉久久久久久久av网站| 91久久精品国产| 亚洲一区在线视频| 久久免费视频这里只有精品| 欧美精品自拍偷拍动漫精品| 国产精品一区二区女厕厕| 亚洲大片av| 亚洲午夜激情在线| 亚洲国产精品va在线看黑人 | 狠狠色丁香久久综合频道| 亚洲另类自拍| 欧美一区在线直播| 国产精品99久久久久久久久久久久| 欧美一区日韩一区| 欧美久久在线| 国产一区二区观看| 99视频精品在线| 久久精品一本久久99精品| 亚洲一区二区在线免费观看| 久久亚洲精品中文字幕冲田杏梨| 欧美色网一区二区| 伊人成年综合电影网| 亚洲一区二区三区四区视频| 亚洲精品国产精品国自产观看浪潮 | 一区二区日韩| 麻豆成人综合网| 国产精品亚洲产品| 亚洲精品资源美女情侣酒店| 久久精品视频免费| 性欧美在线看片a免费观看| 欧美国产精品人人做人人爱| 亚洲色无码播放| 99国内精品久久| 亚洲大片一区二区三区| 亚洲免费视频一区二区| 欧美大片在线看| 国产一区二区久久久| 亚洲视频综合| 一本一本久久| 免费人成精品欧美精品| 国产一区成人| 亚洲自拍都市欧美小说| 这里只有精品电影| 欧美理论电影在线播放| 在线视频成人| 亚洲国产激情| 狼狼综合久久久久综合网| 国产亚洲精品久久久久婷婷瑜伽| 亚洲一区三区电影在线观看| 亚洲在线观看视频网站| 欧美日韩亚洲一区二| 亚洲欧洲视频在线| 亚洲欧洲在线一区| 免费成人网www| 激情一区二区三区| 久久av资源网| 久久久精品久久久久| 国产午夜一区二区三区| 亚洲综合国产| 欧美一级二区| 国产欧美日韩综合一区在线观看| 亚洲一区二区三区精品在线观看| 亚洲系列中文字幕| 国产精品福利在线观看| 在线一区视频| 亚洲一区二区三区在线| 欧美日韩直播| 一区二区三区|亚洲午夜| 亚洲视频综合| 欧美日韩国产在线观看| 亚洲精品视频一区| 日韩午夜激情| 欧美日韩亚洲一区二区| 一区二区日韩免费看| 亚洲在线电影| 国产精品一区二区视频| 亚洲欧美区自拍先锋| 欧美在线视频观看| 国产一区二区三区免费不卡 | 欧美国产一区二区| 亚洲人午夜精品| 中国女人久久久| 国产精品国产三级国产a| 亚洲手机成人高清视频| 欧美一区二区三区在线观看视频| 国产日韩成人精品| 欧美中文字幕在线播放| 乱中年女人伦av一区二区| 亚洲国产精品精华液2区45| av成人免费观看| 国产精品久久久久久影院8一贰佰| 亚洲欧美99| 久热精品视频在线观看一区| 亚洲国产精品一区| 一区二区三区欧美成人| 国产精品免费看片| 欧美在线播放一区| 欧美成人有码| 99这里只有精品| 欧美专区在线观看一区| 一区二区在线观看av| 亚洲最新视频在线| 国产精品日日摸夜夜摸av| 久久99伊人| 欧美激情在线观看| 亚洲香蕉伊综合在人在线视看| 久久精品国产精品亚洲综合| 亚洲国产成人av在线| 亚洲天堂av在线免费观看| 国产深夜精品| 亚洲精品乱码久久久久久| 国产精品国产精品国产专区不蜜| 欧美一区中文字幕| 欧美激情日韩| 亚洲欧美日韩国产一区二区| 免费成人av资源网| 一区二区三区精密机械公司| 久久久久中文| 一本久道综合久久精品| 久久久久久久性| 日韩视频一区二区三区在线播放免费观看 | 亚洲伊人久久综合| 国际精品欧美精品| 一本色道久久88综合日韩精品| 国产精品夜夜嗨| 亚洲精品欧美专区| 国产精品亚洲网站| 亚洲乱码精品一二三四区日韩在线 | 亚洲欧美日韩久久精品| 欧美激情导航| 欧美一区二区三区精品| 欧美日韩福利在线观看| 欧美一区在线直播| 欧美日韩综合精品| 亚洲黑丝在线| 国产精品拍天天在线| 亚洲精品乱码久久久久久久久| 国产欧美一区二区精品婷婷| 亚洲精品在线一区二区| 国产一区二区电影在线观看 | 亚洲精品色图| 国产亚洲观看| 亚洲摸下面视频| 亚洲激情电影中文字幕| 久久国产精品一区二区| 一本一本久久| 欧美好吊妞视频| 久久精品亚洲一区二区三区浴池 | 最新亚洲电影| 久久亚洲一区| 午夜精品短视频|