999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于龍芯3A處理器的DeltaOS嵌入式系統(tǒng)移植

2016-11-26 08:17:58羅一涵陳朔鷹趙建峰喬楊
關(guān)鍵詞:設(shè)備系統(tǒng)

羅一涵,陳朔鷹,趙建峰,喬楊

(北京理工大學(xué) 計算機學(xué)院,北京 100081)

基于龍芯3A處理器的DeltaOS嵌入式系統(tǒng)移植

羅一涵,陳朔鷹,趙建峰,喬楊

(北京理工大學(xué)計算機學(xué)院,北京100081)

嵌入式系統(tǒng)移植是嵌入式開發(fā)中經(jīng)常遇到的問題。本文以龍芯3A處理器為載體,根據(jù)其通用異常處理機制和硬件資源配置,完成系統(tǒng)的啟動,并對串口驅(qū)動進(jìn)行開發(fā)與配置,成功將實時嵌入式道系統(tǒng)(DeltaOS)移植到龍芯3A平臺上,為應(yīng)用程序和驅(qū)動程序的開發(fā)提供了必要的基礎(chǔ)。

龍芯3A;異常處理;實時嵌入式系統(tǒng);驅(qū)動程序

引 言

道系統(tǒng)(Delta OS)是目前中國依靠自己技術(shù)和力量自主研發(fā)的實時操作系統(tǒng)之一,提供實時和嵌入式多任務(wù)的內(nèi)核,任務(wù)響應(yīng)快速、準(zhǔn)確,不隨任務(wù)負(fù)載大小改變,絕大部分代碼由C語言編寫,具有很好的移植性。目前,道系統(tǒng)已成功地應(yīng)用于消費電子產(chǎn)品、通信產(chǎn)品、工業(yè)及軍用電子產(chǎn)品中。

龍芯系列處理器是中國科學(xué)院計算所自主研發(fā)的國產(chǎn)處理器系列,龍芯3A是其新一代的64位多核高性能通用處理器,處理器采用RISC架構(gòu),兼容MIPS指令,原生四核設(shè)計,內(nèi)含兩條HT PHY超傳輸總線,主頻1 GHz,晶體管數(shù)目4.25億個,單顆龍芯3A的最大功耗為15 W[1]。

本文闡述了龍芯3A平臺異常處理和中斷機制和系統(tǒng)啟動流程,并完成了硬件設(shè)備驅(qū)動程序的開發(fā)。

1 道系統(tǒng)移植分析

1.1 基于道系統(tǒng)的開發(fā)模型

道操作系統(tǒng)主要由三部分組成:板級支持包(BSP)、系統(tǒng)內(nèi)核以及應(yīng)用組件模塊,其組成如圖1所示。

圖1 道系統(tǒng)組成

其中板級支持包(BSP)的下面就是支持操作系統(tǒng)的硬件平臺。板級支持包的作用是使嵌入式操作系統(tǒng)在各種不同的硬件環(huán)境下都能較好的工作,通過特定的上層接口與操作系統(tǒng)內(nèi)核進(jìn)行交互,向操作系統(tǒng)提供底層的硬件信息,并根據(jù)操作系統(tǒng)的要求完成對硬件的直接操作。這一層次的獨立性決定了該嵌入式操作系統(tǒng)的可移植性。由于這一層屏蔽了底層硬件的多樣性,操作系統(tǒng)內(nèi)核不再直接面對具體的硬件環(huán)境。

BSP的作用主要包含兩部分:

①初始化。包括對系統(tǒng)資源的初始化,對目標(biāo)板硬件初始化(包括初始化各種控制器內(nèi)存資源和硬件設(shè)備),以及對CPU相關(guān)的初始化(主要初始化內(nèi)部寄存器、關(guān)閉中斷等)。

②硬件設(shè)備驅(qū)動。對硬件設(shè)備初始化和管理設(shè)備是驅(qū)動程序的主要作用,這里的驅(qū)動有時鐘驅(qū)動、串口驅(qū)動、網(wǎng)絡(luò)驅(qū)動和總線驅(qū)動等。

1.2 BSP開發(fā)流程

BSP的開發(fā)過程分為以下幾個步驟。

①建立道系統(tǒng)集成開發(fā)環(huán)境Lambda Tools。Lambda Tools提供基本的編碼、調(diào)試、固化的集成開發(fā)環(huán)境。

②新建BSP項目,道系統(tǒng)集成開發(fā)環(huán)境已經(jīng)集成了BSP項目,實現(xiàn)了BSP操作所需的框架,因此該項目可降低開發(fā)BSP的難度,提高研發(fā)效率。由于開發(fā)一個全新的BSP耗時耗力,因而通常會選擇一個BSP模板,在此基礎(chǔ)上僅對需要修改的部分進(jìn)行修改,這樣可以大大縮短開發(fā)周期。

③配置系統(tǒng)引導(dǎo)程序,本次移植使用龍芯系列專用工具PMON進(jìn)行系統(tǒng)引導(dǎo)。

④配置DeltaOS的BSP。在BSP模板基礎(chǔ)上完成Boot的運行,實現(xiàn)最基本的初始化。同時根據(jù)硬件特性修改相應(yīng)文件,確保系統(tǒng)啟動和基本驅(qū)動的正常運行,最終生成映像文件。

⑤測試與驗證。通過對各個模塊的測試實驗,驗證移植是否成功。

2 基于龍芯3A處理器的DeltaOS移植

2.1 龍芯3A異常處理及中斷機制

異常是硬件或軟件影響處理器正常執(zhí)行循序的方式,是實現(xiàn)多任務(wù)和硬件驅(qū)動的基礎(chǔ)。龍芯3A處理器的通用異常處理又分為32種異常,比如:中斷、TLB修改、地址錯誤等。當(dāng)觸發(fā)通用異常時,異常處理函數(shù)讀取Cause寄存器ExcCode域的值,如果為0,則判斷異常為中斷產(chǎn)生,龍芯CPU核通過Cause寄存器接收中斷。Cause寄存器中有8個獨立的中斷位IP0~I(xiàn)P7,IP0和IP1表示軟件中斷,IP2~I(xiàn)P5表示外部中斷,IP6表示核間中斷,IP7表示時鐘中斷[2]。異常處理示意圖如圖2所示。

當(dāng)觸發(fā)通用異常處理時,進(jìn)入exc Norm Vec()函數(shù),此處需要完成龍芯對3A通用異常處理的工作。首先獲取Cause寄存器Excode域的值,然后根據(jù)Excode域的值判斷屬于哪種異常。若Excode域的值為0,則跳轉(zhuǎn)到中斷處理;若Excode為其他值,則跳轉(zhuǎn)到異常處理。把exc-Norm Vec()函數(shù)代碼拷貝到地址0x180,此地址是龍芯通用異常入口地址[3]。以下是exc Norm Vec()中關(guān)鍵代碼:

圖2 異常處理示意圖

當(dāng)異常為中斷時,進(jìn)入中斷處理函數(shù)Handle_int(), Handle_int()函數(shù)會依次保存中斷現(xiàn)場,關(guān)閉中斷,調(diào)用plat _irq_dispatch()判斷中斷的類型,不同類型的中斷執(zhí)行不同do _IRQ()函數(shù),當(dāng)中斷處理完成后,進(jìn)入ret_from_irq()函數(shù)從中斷返回[4]。中斷路由示意圖如圖3所示。

龍芯3A處理器中集成了4個處理器核,32位中斷源可以通過軟件配置選擇期望中斷的目標(biāo)處理器核。在hwconf.c文件中,有三個數(shù)組描述了具體設(shè)備的中斷要素,mipsSbIntCtlrInputs數(shù)組設(shè)定設(shè)備選用的引腳,mipsSbIntCtlr XBar數(shù)組設(shè)定設(shè)備使用相應(yīng)核的哪個中斷引腳,mipsSbIntCtlr CpuRoute數(shù)組設(shè)定設(shè)備中斷路由到哪個核上。在此次移植過程中,默認(rèn)將中斷路由到CORE0上。圖3的配置模塊配置的就是這些中斷路由到哪個CPU核的哪個IP位,這里IP位和實際的Cause寄存器偏移為2,比如路由到CORE0的IP0,實際上是CORE0的Cause寄存器的IP2[3]。

圖3 中斷路由示意圖

2.2 DeltaOS啟動流程

對于系統(tǒng)移植,熟悉系統(tǒng)的啟動流程是非常重要的。在龍芯3A平臺移植過程中,使用龍芯平臺系列專用工具PMON做初始化引導(dǎo)。PMON主要包括硬件初始化、操作系統(tǒng)引導(dǎo)和硬件測試、程序調(diào)式等功能。它提供多種加載操作系統(tǒng)的方式,可以從優(yōu)盤、光盤、tftp服務(wù)器和硬盤等媒介加載;它提供對內(nèi)存、串口、顯示、網(wǎng)絡(luò)、硬盤等的基礎(chǔ)測試工具。在移植過程中,PMON的作用是完成硬件初始化,包括設(shè)置時鐘和堆棧以及分配存儲空間等,同時把二進(jìn)制的DeltaOS系統(tǒng)映像文件加載到內(nèi)存,之后程序跳轉(zhuǎn)到操作系統(tǒng)所加載的位置,開始啟動過程。

圖4為DeltaOS系統(tǒng)的啟動流程:首先是sys Alib.s中的入口函數(shù)sysInit()。sysInit()函數(shù)是系統(tǒng)啟動后第一個執(zhí)行的函數(shù),由匯編語言編寫,主要的工作包括初始化CPU,設(shè)置堆棧,禁止CPU的中斷等,然后跳轉(zhuǎn)到prj-Config.c中的usrInit()函數(shù)。

以下是根據(jù)硬件平臺修改完成的關(guān)鍵代碼:

圖4 DeltaOS啟動流程

usrInit()函數(shù)是操作系統(tǒng)啟動時執(zhí)行的第一個C函數(shù),任務(wù)是對系統(tǒng)進(jìn)行最小初始化,包括對內(nèi)核數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化,硬件初始化,根據(jù)不同的CPU構(gòu)架,usrInit()函數(shù)可能對cache進(jìn)行初始化,中斷處理程序的初始化,中斷處理程序的掛接等。其中幾個重要的函數(shù)式:exc VecInit()初始化所有缺省中斷向量,sys HwInit()初始化目標(biāo)板中的相關(guān)硬件,usrkernelInit()配置系統(tǒng)內(nèi)核,其中主要是配置操作系統(tǒng)的必要組件,通常不需要修改。kernelInit()初始化并啟動內(nèi)核,其中sys Hw Init()主要負(fù)責(zé)目標(biāo)機硬件部分的初始化工作,此時的初始化發(fā)生在系統(tǒng)內(nèi)核啟動之前,中斷屏蔽,把硬件設(shè)備初始化到靜止?fàn)顟B(tài),屬于對設(shè)備的初級初始化。

然后進(jìn)入usr Root()函數(shù),它的任務(wù)是初始化內(nèi)存池、系統(tǒng)時鐘、I/O系統(tǒng)和網(wǎng)絡(luò)、標(biāo)準(zhǔn)輸入輸出錯等。其中, usr Root()調(diào)用的sys HwInit2()函數(shù)在系統(tǒng)內(nèi)核啟動之后進(jìn)行,主要負(fù)責(zé)將中斷服務(wù)程序連接到相應(yīng)的中斷向量,并完成中斷使能,屬于對設(shè)備的高級初始化。

在修改完BSP板級支持包后,通過Lambda Tools生成DeltaOS的映像文件,再通過網(wǎng)絡(luò)或串口的方式傳入目標(biāo)機,使用PMON完成對操作系統(tǒng)的引導(dǎo)。

2.3 配置驅(qū)動程序

在移植過程中,除了完成CPU和系統(tǒng)初始化外,另一個重要的工作是完成對設(shè)備驅(qū)動的配置和開發(fā),首先介紹一下配置和管理驅(qū)動程序的設(shè)備驅(qū)動構(gòu)架VxBus,然后以配置串口驅(qū)動為例進(jìn)行說明。

VxBus是一套設(shè)備驅(qū)動程序,它將各種不同功能設(shè)備集成到一個統(tǒng)一的程序中,采用模塊化設(shè)計思想降低驅(qū)動對BSP的依賴度,提供了對設(shè)備驅(qū)動的管理,使驅(qū)動的配置和使用更加靈活和方便。驅(qū)動配置流程如圖5所示。

圖5 驅(qū)動配置流程

圖5是VxBus構(gòu)架下硬件驅(qū)動程序的配置流程,主要分為三個階段:硬件發(fā)現(xiàn)階段、硬件驅(qū)動注冊階段、驅(qū)動初始化階段(驅(qū)動初始化又分為兩個階段)。硬件發(fā)現(xiàn)階段硬件初始化函數(shù)sys HwInit()調(diào)用hardWareInter FaceInit()函數(shù)來初始化硬件內(nèi)存分配機制;在驅(qū)動注冊階段,hardWareInter FaceInit()調(diào)用hard WareInter FaceBus-Init()函數(shù),hard WareInter FaceBusInit()函數(shù)再調(diào)用Vxb-DevRegister()函數(shù)完成驅(qū)動注冊和激活;然后進(jìn)入驅(qū)動初始化階段,初始化第一階段發(fā)生在內(nèi)核初始化之前,初始化第二階段發(fā)生在內(nèi)核初始化后。

本文以串口驅(qū)動為例,介紹在VxBus構(gòu)架下配置的過程。為了使系統(tǒng)認(rèn)識要添加的硬件設(shè)備,首先要向系統(tǒng)中添加設(shè)備信息。hwconf.c文件是VxBus構(gòu)架下負(fù)責(zé)配置驅(qū)動的文件,文件中列出了所有添加過的硬件設(shè)備,包括其資源信息。添加的信息用兩個數(shù)據(jù)結(jié)構(gòu)來表示:一個是hcf Resource,另一個是hcf Device。前者是描述硬件的信息,后者是一個設(shè)備列表,包括設(shè)備名、設(shè)備號等。

在向hwconf.c添加設(shè)備信息時,首先在config.h中添加包含串口組件的信息:

INCLUDE_SERIAL表示包含串口組件;NUM_TTY表示串口數(shù)量;CONSOLE_BAUD_RATE表示串口波特率;CONSOLE_TTY表示控制終端使用的通道號,一般定義為0[5]。

然后向hwconf.c中加入描述串口的兩個數(shù)據(jù)結(jié)構(gòu):

添加完設(shè)備信息后,系統(tǒng)已可以識別硬件設(shè)備,通過ns16550Dev Register()函數(shù)完成設(shè)備注冊及激活[6]。

在完成設(shè)備注冊激活后,開始設(shè)備驅(qū)動初始化過程,第一階段的初始化函數(shù)在sys HwInit()中進(jìn)行,此時內(nèi)核還未初始化。需要完成的工作有關(guān)閉中斷、串口寄存器的配置和設(shè)置串口通信參數(shù),這里設(shè)置串口波特率為115 200,數(shù)據(jù)位設(shè)置為8位,停止位為1位,無校驗,無流控。以下是部分代碼:

第二階段初始化在sys HwInit2()中進(jìn)行,此時內(nèi)核已完成初始化,此時的工作是完成中斷服務(wù)程序與中斷向量的連接。通過intConnect()函數(shù)來實現(xiàn)。

以上為串口驅(qū)動在VxBus構(gòu)架下添加的過程,對于其他硬件設(shè)備驅(qū)動可按相同的方法添加。

結(jié) 語

本文以龍芯3A-RS780E開發(fā)板為硬件平臺,介紹對道操作系統(tǒng)移植所需的BSP的設(shè)計和實現(xiàn)。針對不同的CPU和主板,BSP的實現(xiàn)也不相同,需要根據(jù)硬件版的具體功能進(jìn)行設(shè)計,但基本方法類似,本文對開發(fā)其他類型目標(biāo)板具有一定參考價值。

[1]北京龍芯中科技術(shù)服務(wù)有限公司.LS3A-RS780開發(fā)板使用手冊,2010.

[2]中國科學(xué)院計算技術(shù)研究所,龍芯中科技術(shù)有限公司.龍芯3A處理器用戶手冊,2014.

[3]MIPS.MIPS Architecture For Programmers Volume III: The MIPS32 and micro MIPS32 Privileged Resource Architecture,Revision0.95,2001.

[4]殷杰波.基于龍芯3A處理器的嵌入式操作系統(tǒng)BSP設(shè)計技術(shù)[J].測控技術(shù),2014,33(7):121-123.

[5]楊曄,安軍社.Vx Works在龍芯處理器上的移植與實現(xiàn)[J].微計算機信息,2010,26(35):31-33.

[6]譚亮,李一平,任申真.基于VxBus模式的多串口卡驅(qū)動程序的設(shè)計[J].測控技術(shù),2011,30(7):73-75.

羅一涵、趙建峰、喬楊(碩士研究生),主要研究方向為嵌入式系統(tǒng)與應(yīng)用;陳朔鷹(副教授),研究方向為計算機操作系統(tǒng)、嵌入式系統(tǒng)應(yīng)用。

69觀察法可有效提高光伏電池充電效率,并提供穩(wěn)定的輸出電壓,保證了光伏照明系統(tǒng)能夠高效穩(wěn)定地工作,達(dá)到了設(shè)計的預(yù)期。系統(tǒng)的電池容量檢測模塊中的過放保護(hù)保證了在電量過低或蓄電池端電壓過低時可以對蓄電池提供有效保護(hù)。針對在溫度變化劇烈的狀況下,獨立光伏公用照明系統(tǒng)加入了溫度補償功能,保證系統(tǒng)在復(fù)雜溫度情況下都能正常工作。

[1]李春玲,石季英,武艷輝,等.模糊控制的擾動觀察法在光伏MPPT中的應(yīng)用[J].電氣傳動,2013,43(2):62-64.

[2]董婧.基于MPPT的光伏系統(tǒng)充電控制器的研究[D].西安:西安工業(yè)大學(xué),2014.

[3]鄭詩程,劉偉,葛蘆生.具有TM PPT功能的太陽能光伏充電系統(tǒng)研究[J].電子測量與儀器學(xué)報,2008,22(3):11-15.

[4]李明楊.獨立光伏發(fā)電系統(tǒng)的控制策略及其應(yīng)用研究基于MPPT[D].長沙:中南大學(xué),2010.

[5]曹旭陽.獨立光伏路燈系統(tǒng)MPPT控制器設(shè)計[D].青島:中國海洋大學(xué),2007.

[6]楊自娟.基于模糊控制的太陽能MPPT充電控制器的研究與實現(xiàn)[D].廣州:華南理工大學(xué)電力學(xué)院,2010.

[7]黃瑞,孫黎霞.基于占空比模糊控制的光伏發(fā)電系統(tǒng)MPPT技術(shù)[J].電子設(shè)計工程2013,21(7):101-104.

[8]王海龍,王維俊,張國平,等.基于STM32F103芯片的光伏充電控制器設(shè)計[J].微電機,2013,46(3):54-57.

[9]歐陽名三.獨立光伏系統(tǒng)中蓄電池管理的研究[D].安徽:合肥工業(yè)大學(xué),2004.

[10]王立志,宋偉,汪徳洋,等.STM32的風(fēng)光互補發(fā)電蓄電池充放電保護(hù)研究[J].單片機與嵌入式系統(tǒng)應(yīng)用,2016,16 (2):21-23.

溫宗周(副教授)、費騰蛟(碩士研究生):主要研究方向為嵌入式系統(tǒng)應(yīng)用與開發(fā);段俊瑞(教授),主要研究方向為汽車電子的開發(fā)與應(yīng)用。

Transplant of DeltaOS Embedded System Based on Loongson3A

Luo Yihan,Chen Shuoying,Zhao Jianfeng,Qiao Yang

(School of Computer Science&Technology,Beijing Institute of Technology,Beijing 100081,China)

In the development of embedded system application,the transplantation is a frequently encountered problem.In the paper,taking the Loogson3A processor as the carrier,according to its exception handing mechanism and configuration of hardware resources,the design completes the startup of system,develops and configurates the driver of serial port.The embedded real-time system DeltaOS is transplanted on the Loogson3A successfully,which provides the necessary foundation for the application and other driver development.

Loogson3A;exception handing;embedded real-time system;driver

TP316

A

(責(zé)任編輯:楊迪娜2016-06-06)

(責(zé)任編輯:楊迪娜2016-05-09)

猜你喜歡
設(shè)備系統(tǒng)
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設(shè)備運行維護(hù)探討
主站蜘蛛池模板: 亚洲综合色婷婷| 欧美午夜在线观看| 东京热av无码电影一区二区| 国产黄色爱视频| 亚洲精品制服丝袜二区| 亚洲免费毛片| 成人va亚洲va欧美天堂| 国产精品xxx| 久久免费视频6| 国产亚洲精| 美女国产在线| 日本精品视频| 久久人搡人人玩人妻精品| 日韩在线1| 国产青榴视频在线观看网站| 国产办公室秘书无码精品| 视频一区视频二区中文精品| 国产欧美日韩免费| 无码不卡的中文字幕视频| 国产黄在线观看| 国产99在线观看| 欧美日韩国产一级| 亚洲国产看片基地久久1024| 久久五月天综合| 狼友av永久网站免费观看| 国产一级做美女做受视频| 园内精品自拍视频在线播放| www.狠狠| 国内精品视频区在线2021| 国内精品一区二区在线观看| 欧洲亚洲一区| 欧美亚洲国产一区| 真实国产精品vr专区| 亚洲国产成人自拍| 大乳丰满人妻中文字幕日本| 就去色综合| аⅴ资源中文在线天堂| 999精品视频在线| 欧美高清国产| 成人噜噜噜视频在线观看| 人妻精品久久无码区| 亚洲色欲色欲www网| 99久久性生片| 日韩无码白| 日韩经典精品无码一区二区| 国产日韩丝袜一二三区| 一级爆乳无码av| 国产91精品最新在线播放| 熟女成人国产精品视频| 久久人搡人人玩人妻精品| 欧美精品在线观看视频| 国产交换配偶在线视频| 久青草国产高清在线视频| 国产成人av大片在线播放| 亚洲热线99精品视频| 亚洲欧洲自拍拍偷午夜色| 亚洲欧美成人| 亚洲男人天堂2020| 精品欧美一区二区三区久久久| 毛片网站免费在线观看| 欧美在线精品怡红院| 国产精品视频观看裸模| 一本大道东京热无码av| 高清无码手机在线观看| 5555国产在线观看| 日韩亚洲高清一区二区| 久久久久久久久18禁秘 | 亚洲欧美自拍中文| 日日噜噜夜夜狠狠视频| 久久亚洲精少妇毛片午夜无码| 国产午夜福利亚洲第一| 亚洲一道AV无码午夜福利| 欧美自慰一级看片免费| 欧美日韩国产在线人成app| 激情综合婷婷丁香五月尤物| 国产综合网站| 在线观看亚洲天堂| 久久伊人操| 欧美h在线观看| 国产91透明丝袜美腿在线| 亚洲视频二| 欧美日韩国产成人在线观看|