日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 本文提出了一種擴(kuò)展Uboot實(shí)現(xiàn)嵌入式設(shè)備操作系統(tǒng)維護(hù)與升級(jí)的方法。該方法將待升級(jí)的內(nèi)核和文件系統(tǒng)映像放入SD卡中,當(dāng)系統(tǒng)重啟時(shí),擴(kuò)展后的Uboot會(huì)自動(dòng)檢測(cè)并讀取SD卡中的映像文件,再燒寫到嵌入式設(shè)

本文提出了一種擴(kuò)展Uboot實(shí)現(xiàn)嵌入式設(shè)備操作系統(tǒng)維護(hù)與升級(jí)的方法。該方法將待升級(jí)的內(nèi)核和文件系統(tǒng)映像放入SD卡中,當(dāng)系統(tǒng)重啟時(shí),擴(kuò)展后的Uboot會(huì)自動(dòng)檢測(cè)并讀取SD卡中的映像文件,再燒寫到嵌入式設(shè)備實(shí)現(xiàn)自動(dòng)升級(jí)。該方法較傳統(tǒng)的通過(guò)JTAG口、串口或者網(wǎng)口連接到主機(jī),在主機(jī)上通過(guò)手動(dòng)輸入控制命令完成內(nèi)核或者文件系統(tǒng)的升級(jí)方式更為便捷高效。

隨著現(xiàn)代工業(yè)社會(huì)逐步向智能化社會(huì)的過(guò)度,嵌入式在現(xiàn)代經(jīng)濟(jì)生活中扮演著至關(guān)重要的角色。32位的高性能、低成本、低功耗的嵌入式RISC(Reduced InstructionSet Computer)微處理器——ARM(Advanced RISC Machines)已經(jīng)成為應(yīng)用最廣泛的嵌入式微處理器。
目前,基于ARM的嵌入式系統(tǒng)在各個(gè)領(lǐng)域都有著廣泛的應(yīng)用,嵌入式系統(tǒng)的維護(hù)與升級(jí)也變的日益重要。由于新技術(shù)的不斷涌現(xiàn)和對(duì)系統(tǒng)功能、性能等要求的不斷提高,開發(fā)者必須能夠針對(duì)系統(tǒng)進(jìn)行升級(jí)和維護(hù),以延長(zhǎng)系統(tǒng)的使用周期,改善系統(tǒng)性能,增強(qiáng)系統(tǒng)適應(yīng)性。
傳統(tǒng)的嵌入式系統(tǒng)升級(jí),首先通過(guò)JTAG接口將Bootloader燒寫到目標(biāo)板的Flash中,然后在Bootloader中,將內(nèi)核映像文件和文件系統(tǒng)映像文件通過(guò)串口或者網(wǎng)絡(luò)下載并燒寫到Flash。若需對(duì)內(nèi)核或文件系統(tǒng)升級(jí),則要按照上述方法重新燒寫新的映像文件,直接覆蓋原來(lái)的映像文件。這類方法,一方面必須將嵌入式設(shè)備和主機(jī)通過(guò)串口線或者網(wǎng)線相連接;另一方面需要人工手動(dòng)輸入控制命令,而且通過(guò)串口或網(wǎng)絡(luò)下載映像文件速度非常慢。
本文針對(duì)嵌入式Linux操作系統(tǒng)提出了一種新的升級(jí)機(jī)制,即通過(guò)將映像文件拷貝到SD卡中,由擴(kuò)展后的Uboot實(shí)現(xiàn)系統(tǒng)自動(dòng)升級(jí),這個(gè)方法可以有效克服傳統(tǒng)升級(jí)方法的局限,簡(jiǎn)化系統(tǒng)升級(jí)步驟,提高升級(jí)速度。

1 工作原理
一個(gè)嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃?個(gè)層次:Bootloader、Linux內(nèi)核、文件系統(tǒng)和用戶應(yīng)用程序。這4個(gè)層次中,Boot loader一般是按照嵌入式系統(tǒng)的硬件配置定制的,是嵌入式系統(tǒng)加電以后運(yùn)行的第一段軟件代碼。要對(duì)Bootloader升級(jí)只能通過(guò)人工手動(dòng)完成,不過(guò)一般嵌入式系統(tǒng)在硬件平臺(tái)沒(méi)有變化的情況下是不需要對(duì)Bootloader進(jìn)行升級(jí)的。用戶應(yīng)用程序只是運(yùn)行在Linux操作系統(tǒng)上的一個(gè)程序,其升級(jí)方法簡(jiǎn)單,一般可以通過(guò)網(wǎng)絡(luò)直接進(jìn)行升級(jí)。Linux內(nèi)核和文件系統(tǒng)的升級(jí)不像Bootloader那樣基本不需要升級(jí),也不像應(yīng)用程序那樣很容易完成升級(jí)。目前,對(duì)于Linux內(nèi)核和文件系統(tǒng)的升級(jí)一般都是在Bootloader中實(shí)現(xiàn)的。
通過(guò)對(duì)Uboot的功能進(jìn)行擴(kuò)充,加入了系統(tǒng)升級(jí)的功能。例如,用戶需要對(duì)嵌入式設(shè)備上的Linux內(nèi)核或文件系統(tǒng)進(jìn)行升級(jí),只需要將新的Linux內(nèi)核或文件系統(tǒng)映像,命名為指定的名稱拷貝到SD卡中。如果此時(shí)系統(tǒng)處于非運(yùn)行狀態(tài),只需要重新啟動(dòng)嵌入式設(shè)備即可進(jìn)行升級(jí)
過(guò)程;如果系統(tǒng)處于運(yùn)行狀態(tài),Linux系統(tǒng)會(huì)自動(dòng)檢測(cè)SD卡是否存在相應(yīng)的升級(jí)文件,存在則自動(dòng)reboot,這樣也完成了系統(tǒng)的升級(jí)。
不論系統(tǒng)是否處于運(yùn)行狀態(tài),真正的系統(tǒng)升級(jí)過(guò)程都是在Uboot中完成的。設(shè)備重啟時(shí),首先運(yùn)行Uboot,在這過(guò)程中Uboot完成系統(tǒng)初始化之后,在引導(dǎo)內(nèi)核之前先檢查SD卡中是否有Linux內(nèi)核或文件系統(tǒng)映像文件。若有,則讀取映像文件到SDRAM當(dāng)中,然后通過(guò)Uboot中的Flas h命令將內(nèi)核或者文件系統(tǒng)映像燒寫到相應(yīng)的分區(qū)當(dāng)中來(lái)完成升級(jí);若無(wú),則直接啟動(dòng)系統(tǒng),具體流程如圖1所示。


  2 關(guān)鍵技術(shù)

  2.1 Uboot工作原理

  Uboot是一個(gè)由德國(guó)DENX發(fā)起的,遵循GPL條款的開源項(xiàng)目,支持ARM、X86、MIPS、PowerPC等處理器,可啟動(dòng)Linux、VxWorks、TREMS等嵌入式操作系統(tǒng),其提供了豐富的配置、管理以及運(yùn)行命令。

  Uboot與大多數(shù)Bootloader一樣都包含兩種操作模式:

  ①啟動(dòng)加載(Bootloading)模式:即Uboot從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過(guò)程都是自動(dòng)完成的。

 ?、谙螺d(Downloading)模式:在這種模式下,目標(biāo)機(jī)的Uboot將通過(guò)串口或網(wǎng)絡(luò)等通信方式將內(nèi)核或文件系統(tǒng)印象下載到RAM當(dāng)中,然后再寫入相應(yīng)的存儲(chǔ)設(shè)備中。這種工作模式通常在系統(tǒng)初次安裝和更新時(shí)使用。

  Uboot的實(shí)現(xiàn)依賴于CPU的體系結(jié)構(gòu),它分為stage1和stage2兩大部分。stage1存放用匯編語(yǔ)言實(shí)現(xiàn)的依賴于CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等;stage2則通常用具有更好的可讀性和可移植性的C語(yǔ)言來(lái)實(shí)現(xiàn)。

  Uboot Stage1的主要功能有:

 ?、儆布O(shè)備初始化;

 ?、跒閁boot重定位至RAM中,準(zhǔn)備RAM空間;

 ?、壑囟ㄎ籙boot代碼到RAM中;

  ④設(shè)置堆棧,將BSS段清零;

 ?、萏D(zhuǎn)到第二階段的C程序入口點(diǎn)。

  Uboot Stage2的主要功能有:

  ①初始化硬件設(shè)備;

 ?、趯?nèi)核和文件系統(tǒng)映像從Flash讀到RAM中;

 ?、墼O(shè)定內(nèi)核啟動(dòng)參數(shù)和調(diào)用內(nèi)核。

  通過(guò)上面這兩個(gè)階段,Uboot就完成了引導(dǎo)內(nèi)核啟動(dòng)的任務(wù)。

  2.2 Uboot擴(kuò)展升級(jí)功能

  Uboot本身并不帶有系統(tǒng)升級(jí)功能,本文在Uboot現(xiàn)有的功能上做擴(kuò)展,使其完成系統(tǒng)升級(jí)的功能,將新的內(nèi)核或者文件系統(tǒng)映像燒寫到Flash的相應(yīng)分區(qū)中。本文的實(shí)驗(yàn)對(duì)象是Samsung公司的S3C2440微處理器,該設(shè)備上有64 MB的SDARM和256 MB的NAND Flash,NAND Flash的起始地址映射到0x00000000,SDRAM的起始地址映射到0x30000000。設(shè)備上的Uboot將256 MBNAND Flash分為Bootloader、Bootloader參數(shù)、ker nel和rootfs四個(gè)區(qū)。其中,Bootloader分區(qū)是用于存放Uboot映像,它的起始地址為NAND Flash的起始地址0x00000000;Bootloader參數(shù)區(qū)是用于存放Uboot的參數(shù);kernel區(qū)用于存放Linux內(nèi)核;rootfs區(qū)用于存放文件系統(tǒng),在我們的設(shè)備上使用的文件系統(tǒng)是Yaffs2。這4個(gè)分區(qū)的起始地址和大小如表1所列。

  升級(jí)功能的擴(kuò)展主要在Uboot的第二階段完成,在Uboot完成外圍硬件設(shè)備初始化之后,檢測(cè)是否有SD卡插入,如果有,再檢測(cè)SD卡中是否有相應(yīng)的內(nèi)核或者文件系統(tǒng)映像。如果有相應(yīng)的映像文件,就進(jìn)行升級(jí)工作,升級(jí)完成后再啟動(dòng)新的系統(tǒng)。系統(tǒng)升級(jí)核心工作可以分為兩步,第一步是將相應(yīng)的映像文件讀取到SDRAM當(dāng)中;第二步則將SDRAM中的映像寫入到相應(yīng)Flash分區(qū)當(dāng)中,詳細(xì)流程如圖2所示。

  2.3 具體實(shí)現(xiàn)

  通過(guò)上面的分析可以看出,擴(kuò)展一個(gè)支持SD自動(dòng)升級(jí)功能的Uboot需要完成如下步驟。

  (1)判斷是否存在SD卡

  判斷SD卡是否存在,通過(guò)使用Uboot當(dāng)中提供的find_mmc_devICe函數(shù),這里只要判斷該函數(shù)的返回值即可知道SD卡是否存在,實(shí)現(xiàn)代碼如下:

(2)判斷SD卡中是否有內(nèi)核映像文件
如果存在,則將其燒寫到Flash相應(yīng)的分區(qū)當(dāng)中。實(shí)現(xiàn)這個(gè)功能需要使用到Uboot中的run_command函數(shù),由于kernel的映像文件一般不會(huì)超過(guò)5 MB,所以在燒寫kernel的時(shí)候不需要檢查映像文件的大小。檢查內(nèi)核映像文件是否存在也是通過(guò)執(zhí)行命令的方式,如果存在,那么Env環(huán)境變量fileexist的值就是YES,并且此時(shí)的內(nèi)核映像已經(jīng)存在于SDRAM當(dāng)中,可以直接通過(guò)命令燒寫到Flash相應(yīng)的分區(qū)當(dāng)中。具體的代碼如下:

(3)判斷SD卡中是否有文件系統(tǒng)映像文件
如果存在,則寫入到相應(yīng)的Flash分區(qū)當(dāng)中。本實(shí)驗(yàn)設(shè)備上使用的文件系統(tǒng)是Yaffs2,通過(guò)Uboot命令燒寫Yaffs2文件系統(tǒng)的時(shí)候,必須要知道它的實(shí)際大小。由于升級(jí)很可能導(dǎo)致文件系統(tǒng)大小的變化,所以這里必須將讀取到SDRAM當(dāng)中的文件大小記錄下來(lái),這個(gè)工作在Uboot中已經(jīng)完成,我們只需要通過(guò)getenv(filesize)就可以獲得載入SDRAM當(dāng)中的文件大小,其他的步驟和燒寫內(nèi)核映像是一樣的。具體代碼如下:

經(jīng)過(guò)上面3個(gè)步驟修改的Uboot程序可支持SD卡自動(dòng)升級(jí)的功能,需要注意這段代碼應(yīng)該放在Uboot自動(dòng)加載系統(tǒng)之前,推薦將這些代碼放在main_loop函數(shù)中。

結(jié)語(yǔ)

本文通過(guò)定制擴(kuò)展Uboot實(shí)現(xiàn)了用SD卡方式進(jìn)行嵌入式設(shè)備操作系統(tǒng)的自動(dòng)升級(jí),這種方式不但克服了傳統(tǒng)升級(jí)方式的局限性,而且具有一定商業(yè)價(jià)值。目前,該方法經(jīng)過(guò)調(diào)試,系統(tǒng)運(yùn)行正常。顯然,要通過(guò)SD卡實(shí)現(xiàn)系統(tǒng)升級(jí),需要嵌入式設(shè)備具有SD卡接口,因此,它并不適合所有的嵌入式系統(tǒng),但是這種實(shí)現(xiàn)機(jī)制可供借鑒。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉