娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月12日(星期三)

正在發生

2018年02月12日 | 用SD卡方式進行嵌入式設備操作系統的自動升級的實現

發布者:fuehrd努力的 來源: eefocus關鍵字:SD卡方式  設備操作系統  自動升級 手機看文章 掃描二維碼
隨時隨地手機看文章

    本文提出了一種擴展Uboot實現嵌入式設備操作系統維護與升級的方法。該方法將待升級的內核和文件系統映像放入SD卡中,當系統重啟時,擴展后的Uboot會自動檢測并讀取SD卡中的映像文件,再燒寫到嵌入式設備實現自動升級。該方法較傳統的通過JTAG口、串口或者網口連接到主機,在主機上通過手動輸入控制命令完成內核或者文件系統的升級方式更為便捷高效。

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

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


  2 關鍵技術

  2.1 Uboot工作原理

  Uboot是一個由德國DENX發起的,遵循GPL條款的開源項目,支持ARM、X86、MIPS、PowerPC等處理器,可啟動Linux、VxWorks、TREMS等嵌入式操作系統,其提供了豐富的配置、管理以及運行命令。

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

 

  ①啟動加載(Bootloading)模式:即Uboot從目標機上的某個固態存儲設備上將操作系統加載到RAM中運行,整個過程都是自動完成的。

  ②下載(Downloading)模式:在這種模式下,目標機的Uboot將通過串口或網絡等通信方式將內核或文件系統印象下載到RAM當中,然后再寫入相應的存儲設備中。這種工作模式通常在系統初次安裝和更新時使用。

  Uboot的實現依賴于CPU的體系結構,它分為stage1和stage2兩大部分。stage1存放用匯編語言實現的依賴于CPU體系結構的代碼,比如設備初始化代碼等;stage2則通常用具有更好的可讀性和可移植性的C語言來實現。

  Uboot Stage1的主要功能有:

  ①硬件設備初始化;

  ②為Uboot重定位至RAM中,準備RAM空間;

  ③重定位Uboot代碼到RAM中;

  ④設置堆棧,將BSS段清零;

  ⑤跳轉到第二階段的C程序入口點。

  Uboot Stage2的主要功能有:

  ①初始化硬件設備;

  ②將內核和文件系統映像從Flash讀到RAM中;

  ③設定內核啟動參數和調用內核。

  通過上面這兩個階段,Uboot就完成了引導內核啟動的任務。

  2.2 Uboot擴展升級功能

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

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

 

  2.3 具體實現

  通過上面的分析可以看出,擴展一個支持SD自動升級功能的Uboot需要完成如下步驟。

  (1)判斷是否存在SD卡

  判斷SD卡是否存在,通過使用Uboot當中提供的find_mmc_devICe函數,這里只要判斷該函數的返回值即可知道SD卡是否存在,實現代碼如下:

    (2)判斷SD卡中是否有內核映像文件
    如果存在,則將其燒寫到Flash相應的分區當中。實現這個功能需要使用到Uboot中的run_command函數,由于kernel的映像文件一般不會超過5 MB,所以在燒寫kernel的時候不需要檢查映像文件的大小。檢查內核映像文件是否存在也是通過執行命令的方式,如果存在,那么Env環境變量fileexist的值就是YES,并且此時的內核映像已經存在于SDRAM當中,可以直接通過命令燒寫到Flash相應的分區當中。具體的代碼如下:
    
    (3)判斷SD卡中是否有文件系統映像文件
    如果存在,則寫入到相應的Flash分區當中。本實驗設備上使用的文件系統是Yaffs2,通過Uboot命令燒寫Yaffs2文件系統的時候,必須要知道它的實際大小。由于升級很可能導致文件系統大小的變化,所以這里必須將讀取到SDRAM當中的文件大小記錄下來,這個工作在Uboot中已經完成,我們只需要通過getenv(filesize)就可以獲得載入SDRAM當中的文件大小,其他的步驟和燒寫內核映像是一樣的。具體代碼如下:
    
    經過上面3個步驟修改的Uboot程序可支持SD卡自動升級的功能,需要注意這段代碼應該放在Uboot自動加載系統之前,推薦將這些代碼放在main_loop函數中。

      結語

    本文通過定制擴展Uboot實現了用SD卡方式進行嵌入式設備操作系統的自動升級,這種方式不但克服了傳統升級方式的局限性,而且具有一定商業價值。目前,該方法經過調試,系統運行正常。顯然,要通過SD卡實現系統升級,需要嵌入式設備具有SD卡接口,因此,它并不適合所有的嵌入式系統,但是這種實現機制可供借鑒。

關鍵字:SD卡方式  設備操作系統  自動升級 引用地址:用SD卡方式進行嵌入式設備操作系統的自動升級的實現

上一篇:基于LPC2210和μC/OS—II的觸摸屏觸摸點數據采集系統
下一篇:基于arm920T嵌入式Linux的實驗平臺環境的構建

推薦閱讀

  在高通公司董事會一致駁回博通公司提出的最新1210億美元收購要約后,博通今天表示,這一收購提議已是“最佳、最終”要約。目前的僵局很可能會使得這筆惡意收購的未來將由高通股東在下月決定。下面就隨手機便攜小編一起來了解一下相關內容吧。  博通CEO陳福陽(Hock Tan)向高通董事長保羅·雅各布(Paul Jacobs)致信,督促高通在本周末會面討論每股82...
1. ADC簡介STM32F4xx系列一般都有3個ADC,這些ADC可以獨立使用,也可以使用雙重/三重模式(提高采樣率)。STM32F4的ADC是12位逐次逼近型的模擬數字轉換器。它有19個通道,可測量16個外部源、2個內部源和Vbat通道的信號。這些通道的A/D轉換可以單次、連續、掃描或間斷模式執行。ADC的結果可以左對齊或右對齊方式存儲在16位數據寄存器中。 模擬看門狗特性...
Analog Devices, Inc.(ADI)宣布與Jungo合作開發基于飛行時間(ToF)和2D紅外(IR)技術的攝像頭解決方案,以實現車內駕駛員及座艙監測。ADI的ToF技術和Jungo的CoDriver軟件相結合,有望通過觀察頭部、身體位置以及眼睛注視情況,監測車內人員的睡意和注意力分散程度。該解決方案還有望實現基于面部、身體和手勢的智能交互,提供各個車內人員的人臉識別功能,...
如果正在運行的機器人遭遇突然停電,可能會造成機器人原點丟失,其他基本沒有什么影響。 什么是零點 機器人零點是機器人操作模型的初始位置,每一臺機器人在出廠時就已經設置好了零點。當零點不正確時,機器人就不能正確的運動,此時就需要重新校準零點。 如何找回零點 1)發現位置出現偏差,確定零點位置丟失; 2)將機器人手動操作移動至原零點相...

史海拾趣

問答坊 | AI 解惑

一些基準源資料

本帖最后由 paulhyde 于 2014-9-15 09:20 編輯 一些常用基準源資料,歡迎分享  …

查看全部問答∨

警用概念自行車

在當今隨著汽車的普及,自行車正在慢慢退出,但是,在我們的城市中總有些地方汽車是去不了的,比如狹小的胡同,而摩托車也顯得有些不方便,這時候,如果能有個自行車也是不錯的,這款警用自行車就是基于這樣的考慮誕生的,它涵蓋了警察所常用的一些 ...…

查看全部問答∨

minicom不能顯示開發板啟動信息

我用的是s3c2410主機是linux操作系統,用minicom時,啟動開發板則不能顯示任何信息, minicom配置如下: A-Serial Device :dev/ttyS0 B-Lockfile Location :/var/lock E-Bps/Par/Bits      :115200 8N1 F-Hardware Flow ...…

查看全部問答∨

調查一下用的最多的單片機

說一下自己都用了哪些型號的單片機,主要是8位和16位的。 來看看哪種單片機用的比較多。 我在學校主要做過STC51的單片機和MSP430(TI)的16位的單片機。 目前主要用飛思卡爾的8位DZ60做CAN總線。…

查看全部問答∨

征求數公里范圍內無線組網方案,期待您的回復!

需求: 數公里范圍內無線組網,需要傳輸的數據量并不大,只是一些環境監測的數據。 可以是C/S架構,所有終端向服務器匯報,終端之間可以不聯網。 終端需要進入區域能及時發現,及時傳輸數據。 終端脫離區域也能匯報。 多謝您的指教! …

查看全部問答∨

怎么完成單片機與PC機通信?

本人想做一個單片機與PC機通信操作的實驗,看過資料,但有些地方不明白,請大家幫忙:   它們的通信是要通過MAX232嗎?MAX232還用不用接8250,然后再接九針插頭?它們的電路圖應該怎么接?   書上還說要對8250編 ...…

查看全部問答∨

LM3S811驅動的安裝

LM3S811驅動的安裝         我以前裝了8962的驅動,這次直接查上811上去就好使,不知道大家的是不是也是一樣的,下載程序沒問題。         如果你沒有安裝過LM3S系 ...…

查看全部問答∨

菜鳥求救

fpga設計一個移位函數,輸入是一個32位的數DATA,和一個左移、右移的控制信號shit_contr,其輸出是一個32位的數 設計一個連加函數,輸入的是起始數值和終止數值,輸入和輸出的數據位寬可由參考數化設定…

查看全部問答∨

stm32f4驅動0V7620

求指導,,,我發現stm32f4能夠進入DCMI的讀完的中斷,,DCMI的數據寄存器內有數據,但是DMA讀不到數據!! void Camera_DMA_Init() {   DMA_InitTypeDef DMA_InitStructure;    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 廊坊市| 海原县| 绥棱县| 济源市| 红原县| 达孜县| 门源| 山阳县| 新和县| 镇宁| 石渠县| 荣昌县| 宜城市| 沅江市| 海门市| 曲松县| 全州县| 神农架林区| 米易县| 宁国市| 依安县| 阿图什市| 海原县| 闽清县| 开阳县| 承德县| 玉屏| 犍为县| 七台河市| 雷山县| 曲阳县| 兴义市| 通河县| 香格里拉县| 绥棱县| 上林县| 五原县| 曲靖市| 门源| 承德市| 金湖县|