于江濤,吳兆芝(.通化師范學院計算機科學系,吉林通化3400;.南京曉莊學院數學與信息技術學院,江蘇南京7)
μCOS移植技術探究
于江濤1,吳兆芝2
(1.通化師范學院計算機科學系,吉林通化134002;2.南京曉莊學院數學與信息技術學院,江蘇南京211171)
文中以X86平臺及ARM平臺為例,分析了μCOS嵌入式內核移植的技術要點.內容包括X86平臺及ARM平臺硬件環境的簡述、操作系統引導及裝載程序的設計、μCOS運行之前硬件環境的建立、μCOS與平臺相關接口程序、設備驅動程序、實用庫函數的設計等.
μCOS;嵌入式內核移植;X86平臺;ARM平臺;GNU工具鏈
μCOS是一個可以基于ROM運行的、可裁減的、搶占式實時多任務內核,具有高度可移植性,特別適合于微處理器和控制器,是與很多商業操作系統性能相當的實時操作系統(RTOS).為了提供最好的移植性能,μCOS最大程度上使用ANSIC語言進行開發,并且已經移植到近40多種處理器體系上,涵蓋了從8位到64位各種CPU(包括DSP).
由于μCOS結構清晰、代碼簡潔,便于學習、研究與開發,被眾多高校作為實時操作系統平臺用于嵌入式系統教學、實驗與科研.μCOS被廣泛移植到各種硬件平臺上,如目前最為流行的X86平臺及ARM平臺等.本文以這兩種常用移植平臺為例,對μCOS的移植技術進行分析.
μCOS移植的基本思想在文獻[1]中有詳細論述,本文以X86平臺和ARM平臺為例,對μCOS移植技術加以闡述.
第一步,建立運行μCOS所需的系統環境,如主機引導啟動、設置中斷/異常處理等,這部分內容是移植過程所需的重點工作之一.對于各種不同硬件平臺,這部分的差別很大,但道理都是類似的.
第二步,設計μCOS與硬件平臺相關的接口程序,主要有os_cpu.h()、os_cpu_c.c()、os_cpu_a.s ()及os_cfg.h()等.這部分內容盡管與硬件平臺相關,但由于μCOS已考慮到系統的移植問題,采用中斷方式切換進程,所以其C語言程序區別不大,而匯編程序則區別較大.
第三步,設計相應的設備驅動程序.μCOS內核沒有自己的輸入輸出設備,因此需要根據不同的平臺設計相應的設備驅動程序.對于X86平臺而言,主要是顯示器和鍵盤;對于ARM平臺而言,可以使用串口作為主控機與運行中的ARMμCOS進行交互的渠道,μCOS運行過程中通過串口與主控機的超級終端交換信息.
第四步,設計相關的實用庫函數,如memcpy()、vsprintf()、sprintf()等.作為獨立的操作系統,μCOS不能直接使用開發環境的C程序庫,而必須設計自己專用的必要的庫函數.
此外,還要選擇適當的移植工具,如開發平臺、C編譯器、匯編語言等.對于高校的嵌入式系統教學、實驗及科研而言,筆者贊成文獻[2]中的觀點,認為應選用GNU工具鏈作為開發工具.盡管GNU工具鏈中匯編語言使用的AT&T語法與Windows操作系統常用的Intel語法區別較大,然而Linux操作系統從一開始就使用AT&T語法,這是高校計算機專業教學必須面對的現實.引導高校學生掌握乃至精通開源工具的使用,對于培養IT人才、增強學生的可持續發展潛力,都具有重要意義.
2.1 X86平臺及ARM平臺簡述
由于X86平臺具有豐富的硬件資源、功能較強的輸入輸出設備(如鍵盤、顯示器等),在X86平臺上移植μCOS將更便于對其進行研究與實驗.μCOS的設計者在文獻[1]中給出了將μCOS移植到X86平臺的方法.但該方法使用的是現已少見的Borland C編譯環境,而且只實現μCOS在X86實模式下的移植,并沒有體現X86保護模式的功能與特點.
保護模式是一種80286系列及后繼X86兼容CPU的操作模式.保護模式有一些新的特色,設計用來實現多任務并增強系統穩定性,支持內存保護、分頁系統以及虛擬內存.目前大部分X86操作系統都在保護模式下運行,包含Linux、FreeBSD、以及微軟Windows 2.0及之后版本.因此,無論從實際應用還是從專業教學的角度,都應該研究μCOS在X86保護方式下的移植技術.
ARM(Advanced RISCMachines),既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字.目前,采用ARM技術知識產權(IP)核的微處理器,即通常所說的ARM微處理器,已遍及工業控制、消費類電子產品、通信系統、網絡系統、無線系統等各類產品市場,基于ARM技術的微處理器應用約占據了32位RISC微處理器75%以上的市場份額,ARM技術正在逐步滲入到各個方面.目前,全世界有幾十家大的半導體公司都使用ARM公司的授權,因此使ARM技術獲得更多的第三方工具、制造、軟件的支持,整個系統成本降低,使產品更容易進入市場被消費者所接受,具有更強競爭力.
鑒于上述原因,國內各高校都把ARM平臺作為嵌入式教學與實驗的首選平臺.研究μCOS在ARM平臺的移植技術,無疑具有重要的實用價值.
2.2 μCOS內核的引導與裝載
操作系統內核的引導與裝載是移植工作的第一步,是運行操作系統內核的基礎.
(1)基于X86保護模式的引導與裝載.在X86平臺保護模式下操作系統的引導過程如下:
①BIOS加載并啟動保存在硬盤MBR中的引導程序,該引導程序一般在操作系統安裝時寫入.②MBR引導程序掃描所有分區表,找出活動分區.③MBR引導程序加載并啟動保存在活動分區PBR中的引導程序.④活動分區PBR中的引導程序加載并啟動安裝在其上的操作系統.顯然PBR引導程序與操作系統密切相關,一般在操作系統安裝時寫入.
一般來說,由軟盤引導操作系統主要有三種方式:
①按軟盤邏輯扇網順序存放啟動模塊、裝載模塊和內核模塊,其中內核模塊為無格式二進制文件.②按軟盤邏輯扇網順序存放啟動模塊、裝載模塊和內核模塊,其中內核模塊為ELF可執行文件格式.③用Fat文件系統軟盤啟動.將啟動模塊存放在主引導扇區,裝載模塊及內核模塊鏈成一個Fat文件,拷貝到軟盤上.其中內核模塊為ELF文件格式.
第二種及第三種方式的內核模塊由于是ELF格式,需要在引導過程中動態安裝.但可以根據需要,設計不同的內核基址,使操作系統內核對內存的使用與配置更為靈活.
在X86平臺引導啟動后,要從實模式進入保護模式.保護模式的一項重要內容是全局描述符及局部描述符.由于μCOS在運行過程中不涉及X86的任務切換,所以只需為μCOS準備一套局部描述符即可.接下來的工作是開啟A20總線、加載全局描述符及中斷描述符、切換到保護模式,跳轉到保護模式.
(2)基于ARM平臺的引導與裝載.在ARM裸機環境下,操作系統的引導與安裝涉及到硬件初始化、中斷初始化、MMU初始化等工作.目前國內高校采用的嵌入式ARM教學實驗系統多為ARM實驗箱,一般都配備了vivi作為bootloader.由于vivi程序實現了操作系統引導安裝的絕大多數工作,所以在這種環境下的移植操作系統可使引導過程極大簡化.然而,移植之后的系統也只能通過vivi引導,而不能在ARM裸機上脫離vivi而直接啟動.文獻[2]提出一種ARM主機自適應啟動程序,較好地解決了這個問題.它不僅適用于μCOS的移植,同樣也可作為其它ARM應用系統的啟動程序,尤其適用于ARM平臺的各種基礎實驗.
2.3 μCOS運行環境初始化
一般來說,μCOS的初始化工作要由匯編程序及C程序共同完成.
對于X86平臺,主要涉及到8259A中斷控制器初始化、中斷向量的初始化、時鐘中斷初始化、鍵盤中斷初始化等.還要設計一個中斷向量設置函數os_ setvect(),供μCOS運行時調用.
對于ARM平臺,主要涉及ARM硬件初始化、中斷向量初始化、串口初始化、時鐘初始化及LED初始化等.
ARM硬件初始化主要是SDRAM相關的寄存器設置.中斷向量初始化部分,為簡單起見,除復位中斷(Reset)和外部請求中斷(IRQ)之外,其余中斷處理可簡單地設置為顯示中斷信息后進入無限循環的方式.串口初始化是對S3C2410串口寄存器的初始化工作.時鐘初始化是對時鐘寄存器的初始設置.
2.4 μCOS平臺相關程序
μCOS移植的另一個重點是μCOS平臺相關程序的設計.
對于X86平臺,文獻[1]給出了在X86實模式下的設計方法.在X86保護模式下,其設計思想類似,對照文獻[1]中給出的X86實模式程序,加以適當改動,不難實現X86保護模式下相應程序.
對于ARM平臺,文獻[3]給出了在ARM平臺上移植μCOS的實現技術與設計方法.參照文獻[3],加以適當改動,不難實現相應程序.
值得注意的是,文獻[1]和[3]中給出的程序都不是使用GNU工具鏈開發的.因此,如果使用GNU工具鏈移植μCOS,則其匯編語言程序不僅要適應相應的硬件環境,同時還需要用AT&T匯編語法來編寫.
2.5 設備驅動程序
對于X86平臺,主要包括屏幕顯示及鍵盤中斷.
屏幕顯示一般主要有以下功能:清屏、設置光標位置、讀取光標位置、設置字符顏色、屏幕滾動、屏幕定位、顯示字符及字符串等.此外,還應該有TTY方式的屏幕輸出函數,負責處理常用控制字符,如:回車符' '、制表符' '、退格符''等.
由于μCOS內核本身不需鍵盤支持,所以鍵盤中斷一般無需設計得過于復雜,只要能實現一些簡單功能即可,如可顯示字符、退格鍵、回車鍵、大小寫轉換等.
對于ARM平臺,為簡單起見,可使用串口通信程序使μCOS與主控機進行交互.
串口通信程序主要包括對串口的讀寫操作,主要有字符及字符串輸入程序、字符及字符串輸出程序和字符串格式化輸出程序等.串口采用的通信方式會影響到通信效率,為此可采用FIFO方式實現串口通信.
2.6 庫函數
μCOS作為一個獨立的操作系統,必須有自己專用的庫函數,如內存操作(memcpy()、memset()等)、字符串操作(strcmp()、strcpy()、strlen()等)、格式化輸出函數(vsprintf())等.這些函數都可以用C語言實現.如考慮運行速度,也可以將內存操作函數用匯編語言實現.格式化輸出函數至少要包含整數(%d)、16進制數(%x)、字符(%c)及字符串(% s)格式.
μCOS為教學研究提供免費版本,受到嵌入式研究領域的廣泛關注.國內很多高校及嵌入式系統培訓機構都用μCOS作為嵌入式系統教學及實驗平臺,眾多實驗設備廠商也推出了各種支持μCOS移植的嵌入式實驗設備.用GNU工具鏈從事μCOS的移植與應用研究,對于高校的嵌入式系統教學與科研無疑具有重要的實用價值.
X86平臺及ARM平臺是最有代表性的嵌入式系統平臺.在高校嵌入式系統教學及研究方面,一方面可使用X86平臺,充分利用其豐富的輸入輸出功能以方便對嵌入式操作系統的研究;另一方面可使用ARM平臺,在教學及實驗過程中為學生提供真實的嵌入式系統環境.因此,在X86及ARM這兩種平臺上加強對μCOS移植技術的研究很有必要,也很有實際意義.
[1][美]Jean J.Labrosse嵌入式實時操作系統μC/OS-II[M].北京:北京航空航天大學出版社,2003.
[2]曲波.ARMμCOS自適應啟動程序的設計與實現[J].南京曉莊學院學報,2010,3(5).
[3]Micriμm Co.,Ltd.μC/OS-IIand ARM Processors[EB/OL].http://www.Micriμm.com,2007.
(責任編輯:王前)
Abstract:Based on X86 and ARM platforms,the paper analyzes themain issues of porting embedded kernelμCOS.It consists of a brief description of the hardware environmentof X86 and ARM platforms,design of the OS booting and loading program,establishing of hardware environment before runningμCOS,the design of the platform-dependent interface ofμCOS,device drivers and utility library functions,etc.
Key words:μCOS;embedded kernel porting;X86 platform;ARM platform;GNU tool chain
Brief Analysis onμCOS Porting Technique
YU Jiang-tao1,WU Zhao-zhi2
(1.Department of Computer Science,Tonghua Normal University,Tonghua,Jilin 134002,China;
2.School of Mathematicsand Information Technology,Nanjing Xiaozhuang College,Nanjing,Jiangsu 211171,China)
TP316
A
1008-7974(2011)04-0017-03
2011-03-02
于江濤(1969-),男,吉林通化人,通化師范學院計算機科學系教授.