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

嵌入式系統硬件平臺的啟動方式研究

2016-01-26 09:40:17桑赫林巖張烽
單片機與嵌入式系統應用 2015年12期

桑赫,林巖,張烽

(北京航空航天大學 自動化科學與電氣工程學院,北京 100191)

?

嵌入式系統硬件平臺的啟動方式研究

桑赫,林巖,張烽

(北京航空航天大學 自動化科學與電氣工程學院,北京 100191)

摘要:本文研究嵌入式Linux操作系統的啟動過程,分析從設備上電到系統完成啟動的每個環節的作用與實現方式。使用以TMS320DM365為核心的嵌入式設備為硬件平臺,研究主要啟動方式的實現過程,確定啟動方式的適用環境及優缺點。基于便攜嵌入式設備,通過改進的MMC/SD啟動方式,實現設備的啟動與運行不依賴NAND FLASH。

關鍵詞:嵌入式系統;啟動;Linux;TMS320DM365;Micro SD卡

引言

隨著嵌入式技術的不斷發展,嵌入式系統在很多領域中得到了更加廣泛的應用。嵌入式系統中的應用程序一般都運行在嵌入式操作系統之上,目前主要應用的嵌入式操作系統為開源的Linux系統[1]。嵌入式Linux系統的啟動過程與一般計算機Linux系統啟動過程不同,為應對不同的工作與開發環境,嵌入式系統提供了多種啟動方式,通過研究啟動方式的特點以及嵌入式Linux的啟動過程可以對啟動過程進行優化,以滿足特定的需求。

TMS320DM365是目前應用十分廣泛的一種嵌入式芯片,該芯片支持多種啟動方式[2]。本文以其為硬件平臺著重研究啟動過程以及MMC/SD啟動方式的改進與優化方法。

1嵌入式系統啟動過程

1.1嵌入式Linux系統的啟動過程

嵌入式Linux系統的啟動過程主要分為3個階段,首先進行芯片內引導(RBL),使系統尋找到下一階段的程序入口,接下來啟動第二階段引導(UBL與Uboot),進一步對嵌入式設備進行初始化,最后引導Linux內核啟動,掛載文件系統,完成Linux系統啟動[3]。其中芯片內引導及第二階段引導共同組成了Bootloader。具體的啟動步驟如下:

① 嵌入式設備上電,芯片內部引導程序自動運行,初始化CPU,檢測設備狀態及啟動配置引腳狀態,確定啟動方式;

② 將啟動方式指定設備中的第二階段引導程序拷貝到內存,并跳轉到相應入口地址,執行第二階段引導;

③ UBL進一步初始化相關設備,將Uboot程序復制到內存中,運行Uboot,將存儲設備中的Linux內核加載到內存中,并使用設置的啟動參數執行內核;

④ Linux內核初始化存儲、顯示、網絡等硬件設備;

⑤ 掛載文件系統,啟動init進程,完成Linux系統啟動。

嵌入式Linux系統的啟動過程如圖1所示。

圖1 嵌入式Linux系統的啟動過程

1.2引導程序Bootloader的作用

嵌入式設備具有與PC機類似的硬件配置,PC機中使用BIOS作為啟動引導程序,嵌入式設備則使用Bootloader作為引導程序,完成設備的初始化以及操作系統內核的啟動[4]。

Bootloader是用來初始化硬件設備以及建立內存空間映射圖的一段程序,因此其實現要依賴硬件。對于目前應用廣泛的ARM體系結構來說,一般使用Uboot形式的Bootloader均可以滿足需求,但仍需根據其他不同的硬件設備對源程序進行修改。為了能夠提供更多復雜功能、更好的可移植性以及更高的可靠性,Bootloader通常被設計為多階段啟動方式。以TI公司生產的ARM核心嵌入式設備為例,其Bootloader的開始階段固化于芯片內部,稱為RBL(ROM Bootloader)階段,該階段的程序會初始化一部分內存空間,關閉所有中斷,并通過啟動引腳狀態確定系統的啟動方式,將第二階段的啟動程序從指定設備復制到內存中,進行系統下一步啟動。第二階段稱為UBL(User Bootloader)階段,該階段會進一步初始化系統,設置堆棧。由于TMS320DM365芯片支持的UBL最大為30 KB,因此要實現更多功能及Linux內核的配置與加載,需要將第三階段的啟動程序復制到內存中并執行。第三階段稱為Uboot階段,該階段初始化系統的網口、串口等設備,為嵌入式系統內核分配內存空間,并將Linux系統內核加載到內存空間中,使用配置參數啟動系統。該Bootloader的啟動過程如圖2所示。

圖2 Bootloader啟動過程

2啟動方式

2.1啟動方式概述

由于嵌入式設備需要在不同的環境下工作,因此其相對于PC機來說具有更多的啟動方式。使用何種啟動方式一般由芯片的啟動配置引腳決定,CPU在啟動后會讀取該引腳的信息以確定啟動方式。一般來說,嵌入式設備使用NAND Flash啟動作為默認啟動方式,即把各階段Bootloader、Linux系統內核以及文件系統存儲在NAND Flash中,嵌入式設備啟動時,將NAND Flash中的文件加載到內存中。

不同的嵌入式設備所支持的啟動各不相同,典型的啟動方式有NAND Flash啟動、MMC/SD啟動、EMIF啟動等方式。本文使用TMS320DM365(以下簡稱DM365)為CPU的嵌入式設備平臺,研究其啟動方式的實現過程。

DM365處理器可以根據啟動引腳BTSEL[2∶0]的配置來決定使用異步EMIF啟動還是ARM的ROM啟動[5]。

當BTSEL[2∶0] = 001時,采用異步EMIF啟動方式,此時需要使用OneNAND設備,芯片啟動會在執行完OneNAND的啟動頁后進行。

當BTSEL[2∶0] ≠ 001時,使用ARM處理器的RBL(ROM Bootloader)來引導系統,此時有如下7種啟動方式:

① BTSEL[2∶0] = 000為ARM NAND啟動;

② BTSEL[2∶0] = 010為ARM MMC/SD啟動;

③ BTSEL[2∶0] = 011為ARM UART啟動;

④ BTSEL[2∶0] = 100為ARM USB啟動;

⑤ BTSEL[2∶0] = 101為ARM SPI啟動;

⑥ BTSEL[2∶0] = 110為ARM EMAC啟動;

⑦ BTSEL[2∶0] = 111為ARM HPI啟動。

當系統從NAND Flash啟動失敗時,會自動嘗試使用MMC/SD方式啟動,如果此時系統啟動沒有成功,則將循環嘗試使用MMC/SD方式啟動。其他啟動方式如果啟動失敗,會反復嘗試當前啟動方式。

2.2啟動方式研究

嵌入式系統一般選擇從固態存儲設備上啟動,對于DM365系統來說,NAND Flash和MMC/SD是最常用的兩種啟動方式。

2.2.1NAND啟動方式

當啟動方式設置為NAND Flash啟動方式時,首先從設備中讀取NAND Flash啟動方式存儲設備的ID,從對應RBL中的設備信息表可以得到必要的信息(例如塊大小、頁大小等),隨后RBL會在第0頁搜索UBL的描述符。

圖3 NAND Flash啟動過程

如果沒有找到符合UBL幻數的有效UBL,將在接下來的23塊中繼續搜索。在找到有效的UBL后,RBL將對應塊的編號寫入內存的特定位置中(0x 7FFC~0x 8000),隨后RBL會根據UBL提供的信息初始化對應的設備,將UBL拷貝到內存中并在入口地址處運行UBL,最后UBL將Uboot加載到內存中,并執行Uboot進行系統的引導。在上述過程中,如果RBL在24塊中均未能找到有效的UBL,則會嘗試使用MMC/SD方式啟動。該啟動過程如圖3所示。

2.2.2MMC/SD啟動方式

當NAND Flash啟動失敗或BTSEL[2∶0] = 010時,系統采用MMC/SD啟動方式。此時,系統首先從MMC/SD設備的CID和CSD寄存器中讀取塊大小等信息來完成設備初始化。隨后ARM處理器的RBL從Micro SD卡的第0號塊開始,搜索UBL描述符中的幻數,幻數在塊的起始32位中。與NAND Flash啟動方式類似,如果沒有找到符合UBL幻數的有效UBL,RBL將在接下來的23塊中搜索。但由于MMC/SD存儲設備與NAND Flash存儲設備的結構不同,要求MMC/SD設備的存儲容量小于4 GB。

當搜索到有效幻數時,RBL會將UBL從Micro SD卡中拷貝到IRAM中,并將此時的塊編號寫入ARM內部存儲中的最后32位(0x 7FFC~0x 8000)。在完成復制后,將從入口地址啟動UBL。UBL啟動后會在Micro SD卡的特定塊中讀取幻數以及UBL信息,并將信息寫入內存中,這些信息中有UBoot的入口地址和載入地址,并將UBoot從Micro SD卡拷貝到內存中,隨后系統將從UBoot的入口地址啟動Uboot,引導系統啟動。該啟動過程如圖4所示。

圖4 MMC/SD啟動過程

2.2.3UART、USB與EMAC啟動方式

當BTSEL[2∶0] = 011時,設備將使用UART啟動方式。此時將通過設備上的UART接口向ARM的內部存儲中下載一段類似UBL的程序。首先RBL向主機發送BOOTME信號,主機接收后將返回一個ACK序列,經過CRC校驗后,主機向RBL發送UBL程序,RBL接收完成后,啟動UBL并執行Uboot的下載與啟動。

當BTSEL[2∶0] = 100時,設備將使用USB啟動方式。USB啟動方式與UART啟動方式類似,但使用USB啟動方式時,需要RBL先初始化USB設備,并在主機中確定USB設備的收發端點,同時RBL不支持通知USB設備。

當BTSEL[2∶0] = 110時,設備將使用EMAC啟動方式。EMAC啟動方式使用10/100 Mbps網口進行通信,RBL向主機發送BOOTP信號,從主機中接收返回的包,并存儲在內存中,接收完畢后,運行內存中的UBL,隨后從主機中接收Uboot并啟動,引導系統啟動。

2.2.4SPI與HPI啟動方式

當BTSEL[2∶0] = 101時,設備將使用SPI啟動方式。此時RBL會從串口中拷貝UBL到ARM內存中,并運行UBL。UBL進行內存及接口的初始化,等待主機向內存中寫入Uboot,寫入完成后運行Uboot引導系統。

當BTSEL[2∶0] = 111時,設備將使用HPI啟動方式。HPI啟動方式與SPI啟動方式的不同在于,RBL不再主動從串口中拷貝UBL,這一過程交給外部主機操作,當主機完成UBL的拷貝后,會跳轉并執行UBL進行后續操作。

3改進的MMC/SD啟動方式

3.1改進原因

目前,基于DM365的嵌入式設備大多使用NAND Flash作為系統啟動和運行的存儲設備,在設備調試過程中和投入使用之前,都需要通過仿真器向NAND Flash燒寫程序,這個過程相對繁瑣且容易出錯。同時,NAND Flash一般作為固化硬件焊接在嵌入式設備上,因此對于頻繁使用存取功能的嵌入式設備來說,NAND Flash一旦損壞將使設備整體癱瘓。相比之下,MMC/SD設備具有容量大、燒寫簡易、更換方便的特點,恰好可以代替NAND Flash作為系統啟動和運行的存儲設備。但DM365支持的MMC/SD啟動方式中,存儲容量要小于4 GB,所以需要對該啟動方式進行改進,使其支持大容量MMC/SD存儲設備。

3.2改進方法

基本的MMC/SD啟動方式不能支持大容量存儲設備的原因在于,MMC/SD存儲設備在建立分區時,會在前若干扇區生成分區表,容量越大,分區表占用的空間就越大,而RBL只在0~23號塊中搜索有效的UBL幻數,因此,對于大容量MMC/SD設備來說,改進的關鍵在于將UBL的幻數及入口地址存儲在RBL的尋址范圍內。

寫入位置如圖5所示。因此設計程序在生成MMC/SD啟動設備時,會讀取UBL的幻數和入口地址,并將其寫入該空白區域,使用此種改進方法即可使DM365支持大容量MMC/SD設備作為啟動媒介。

圖5 UBL幻數及入口地址寫入位置

結語

參考文獻

[1] 申華,劉龍,張云翠.嵌入式Linux系統軟硬件開發與應用[M].北京:北京航空航天大學出版社,2013.

[2] 高玉龍,白旭,吳瑋.達芬奇技術開發基礎原理與實例[M].北京:電子工業出版社,2012.

[3] 韓超.嵌入式Linux系統開發全程解析[M].北京:電子工業出版社,2014.

[4] DougAbbott.Linux for embedded and real-time applications[M].Oxford:Newnes,2013.

[5] Texas Instruments.TMS320DM36x DMSoC ARM Subsystem Reference Guide,2009.

[6] 劉凱,劉博.存儲技術基礎[M].西安:西安電子科技大學出版社,2011.

桑赫(碩士研究生)、張烽(博士),研究方向為控制理論與控制工程;林巖(教授),研究方向為自適應控制、魯棒控制理論及應用。

Start-up Mode of Hardware Platform in Embedded System

Sang He,Lin Yan,Zhang Feng

(School of Automation and Electrical Engineering,Beijing University of Aeronautics and Astronautics,Beijing 100191,China)

Abstract:In the paper,the start-up process of embedded Linux operating system,the effect and implementation of each part from powering on the device to completing start-up are introduced.Based on the embedded device hardware platform which uses TMS320DM365 as the core,in order to determine the suitable environment and the advantages and disadvantages of each start-up mode,the implementation process of major start-up mode is researched.Through the improved MMC/SD start-up mode,the portable embedded devices can start-up and run without NAND Flash.

Key words:embedded systems; start-up;Linux;TMS320DM365;Micro SD card

收稿日期:(責任編輯:薛士然2015-06-23)

中圖分類號:TM383.6

文獻標識碼:A

主站蜘蛛池模板: 婷婷色婷婷| 九色国产在线| 免费在线播放毛片| 40岁成熟女人牲交片免费| 六月婷婷激情综合| a色毛片免费视频| 伊人五月丁香综合AⅤ| 色成人亚洲| 女人爽到高潮免费视频大全| 国产另类视频| 亚洲最大情网站在线观看| 国产精品免费福利久久播放| 97se亚洲| 中文字幕66页| 国产主播福利在线观看| 91网址在线播放| 亚洲第一香蕉视频| 狠狠色成人综合首页| 中文字幕乱妇无码AV在线| 97se亚洲综合在线韩国专区福利| 国产精品永久在线| 久久综合丝袜长腿丝袜| 国产精品视频久| 黄片一区二区三区| 亚洲综合婷婷激情| 国产毛片高清一级国语| 日韩二区三区| 国产美女91视频| 最新加勒比隔壁人妻| 国产成人精品视频一区视频二区| 久久久久久久蜜桃| 97久久免费视频| 国产美女在线免费观看| 成人福利在线免费观看| 中文成人在线| 国产不卡在线看| 久久久久无码精品| 亚洲无码A视频在线| 久热中文字幕在线| 毛片a级毛片免费观看免下载| 亚洲三级片在线看| 最新国产网站| 国产欧美视频在线观看| 国产真实乱子伦视频播放| 亚洲品质国产精品无码| 中文字幕精品一区二区三区视频| 亚洲天堂视频网| 欧美中文字幕一区二区三区| 亚洲人在线| 丰满少妇αⅴ无码区| 97se亚洲综合| 亚洲婷婷六月| 亚洲精品综合一二三区在线| 免费播放毛片| 好紧好深好大乳无码中文字幕| 婷婷综合缴情亚洲五月伊| 在线播放国产99re| 在线国产三级| 老司机午夜精品网站在线观看| 国产第二十一页| 国产精品区网红主播在线观看| 久久一本日韩精品中文字幕屁孩| 黄色网址免费在线| 亚洲精品你懂的| 青青国产成人免费精品视频| 精品视频一区二区三区在线播 | 日韩AV手机在线观看蜜芽| 国内a级毛片| 国产免费福利网站| 国产成人精品日本亚洲| 女人18毛片一级毛片在线 | 国产精品视频白浆免费视频| 18禁不卡免费网站| 亚洲精品无码久久毛片波多野吉| 四虎成人精品在永久免费| 精品国产自在现线看久久| 成人在线不卡视频| 亚洲视频一区| A级毛片无码久久精品免费| 欧美三級片黃色三級片黃色1| 亚洲一级毛片| 美女免费黄网站|