引言
嵌入式系統在各個領域有著廣泛的應用,嵌入式系統的維護與升級也變得日益重要。由于新技術的不斷涌現和對系統功能、性能等要求的不斷提高,開發者必須能夠針對系統進行升級和維護,以延長系統的使用周期,改善系統性能,增強系統適應性。
傳統的嵌入式升級方式通常由維護人員到達設備現場進行重新燒寫系統或者更換Flash存儲部件,當設備數量龐大并且分布范圍廣泛時,這種升級維護方式的工作量將非常大,而且耗費的時間長、成本高。隨著嵌入式技術的迅速發展,嵌入式系統的遠程升級技術得到了快速發展。參考文獻提出了一種基于GPRS的嵌入式系統軟件的遠程在線升級,通過GPRS網絡實現對ARM嵌入式終端的系統軟件進行在線升級。這種方法的不足在于無法實現系統本身的遠程升級。參考文獻實現了一種在Bootloader中實現嵌入式系統自動升級的方法,這種方法是將映像文件存儲在CF卡中,系統重啟時Bootloader將檢測CF卡中的映像文件,讀取映像文件并燒寫到目標板的Flash中,實現升級。如果終端的數量較大且分布廣泛,采用這種方法會增加很大的工作量。
本文針對嵌入式Linux操作系統提出了一種新的更新機制,并且基于ARM9微處理器和NAND Flash存儲器,對uboot和Linux內核進行修改,實現了對嵌入式Linux系統的遠程自動更新。克服了傳統方法工作量大的缺點,具有操作簡單、更新速度快的特點。
1 基本原理
1.1 總體結構
支持遠程自動更新的嵌入式Linux系統機構,它可以分為嵌入式終端和遠程管理系統兩部分。系統的總體結構如圖1所示,嵌入式終端采用基于ARM9架構的AT91RM9200微處理器,采用擴展的32MB SDRAM,由2片16位數據寬度的SDRAM芯片HY57V281620并連而成,采用64MB NANDFla sh存儲芯片K9F1208,運行嵌入式Linux系統。遠程管理系統選用PC機。嵌入式終端通過以太網連接到遠程管理系統,管理人員可以通過telne t即可對各個嵌入式終端進行監控、管理和遠程更新。
1.2 系統更新流程
本設計對uboot和Linux內核進行改造,使其支持YAFFS2文件系統,對系統添加ftp、telnet等應用服務。系統更新流程如圖2所示。系統正常運行時管理人員可以通過telnet遠程登錄到嵌入式終端進行監控和管理。當需要對系統進行更新時,通過遠程管理系統的ftp客戶端登錄到嵌入式終端,將需要更新的內核映像和文件系統上傳到NAND Flash。上傳完畢后對原有的內核映像和文件系統進行備份并重啟系統。系統重啟后uboot將NAND Flash中更新后的內核映像和文件系統搬運到SDRAM中,然后跳轉到SDRAM中啟動Linux系統,掛載YAFFS2文件系統,啟動各種應用服務。
2 關鍵技術
2.1 uboot支持YAFFS2文件系統
YAFFS2是專門針對嵌入式設備,特別是使用NAND Flash作為存儲器的嵌入式設備而創建的一種文件系統。對uboot進行修改,使其支持YAFFS2文件系統,能夠將系統內核和文件系統燒寫到NAND Flash,同時也能夠在NAND Flash中引導啟動系統。NAND Flash的分布圖如圖3所示。系統燒寫時,首先用JTAG丁具將uboot燒寫到NAND Flash的最前面;然后在uboot上執行tftp命令將內核映像zImage和根文件系統ramdisk傳送到SDRAM中;在uboot上執行ymount命令掛載yaffs2文件系統;在uboot上執行ywrm命令可以將zImage和ramdisk燒寫到NAND Flash中,此時也可以通過yls命令看到已經燒寫的zImage和ramdisk。系統運行時,uboot從NAND Flash中引導zImage和ramdisk,在uboot上執行ymount命令掛載YAFFS2文件系統;執行yrdm命令將zImage和ramdisk讀到SDRAM相應的地址中;執行go命令開始引導內核,首先解壓ramdisk.gz文件,然后跳轉到zImage處執行,zImage自解壓后調用start_ker_nel()啟動內核。
本實驗是將uboot直接燒寫在NAND Flash的chunk中,uboot在剩余的空間上掛載YAFFS2文件系統,并將zImage和ramdisk寫入文件系統。當系統運行起來后,在相同的NAND Flash空間上掛載YAFFS2文件系統后,可以看到和編輯uboot寫入的zImage和ramdisk。同樣uboot在啟動時也可以看到kernel寫入NAND Flash的文件。這樣就實現了在uhoot和kernel中都可以升級和更新系統。
2.2 YAFFS2文件系統制作 Y
AFFS(Yet Another Flash File System)文件系統是專門針對NAND閃存設計的嵌入式文件系統,它是一種類似于JFFS2的日志型文件系統。相對于JFFS2,YAFFS減少了一些功能,因此速度更快、占用內存更少,并且對NAND Flash具有很好的保護機制,能夠延長NAND Flash的使用壽命。因此,YAFFS文件系統的出現,使得價格低廉的NAND Flash芯片具有高效性和健壯性。基于NANDFlash的YAFFS文件系統結構框圖如圖4所示。目前有YAFFS和YAFFS2 2個版本,2個版本的主要區別之一在于YAFFS2能夠更好地支持大容量的NAND Flash芯片。
嵌入式Linux內核本身并不支持YAFFS2文件系統,實現Linux內核對YAFFS2文件系統的支持有2種方法:一種是直接把YAFFS2編譯到內核,另外一種是將YAFFS2編譯成單獨的模塊進行加載。為了方便調試,本文選用第二種方法。首先下載YAFFS2源碼,這里要注意uboot中的YAFFS2應該和內核中的版本一致。然后將YAFFS2源碼解壓縮,進行相應的代碼修改,編譯生成yaffs2.ko模塊。將此模塊加到ramdisk中,系統啟動后掛載yaffs2.ko模塊,此時就可以對NAND Flash進行讀寫。
結語
本文針對嵌入式Linux操作系統,基于uboot和內核對YAFFS2文件系統的支持,利用NAND Flash實現對嵌入式系統的遠程更新。本系統從NAND Flash中引導內核與文件系統,可以省去NOR Flash,降低成本。通過以太網對遠程嵌入式終端進行自動更新,具有操作簡單、更新速度快的特點。
上一篇:基于ARM9和μC/OS-II操作系統的SD卡文件系統的設計與
下一篇:單片機系統的故障重現設計與實現
推薦閱讀
史海拾趣
隨著技術的不斷進步,ABCO公司意識到只有不斷創新才能在競爭中保持領先地位。因此,公司加大了對研發的投入,建立了一支高效的技術團隊。這支團隊不僅成功研發出了多款具有自主知識產權的新型傳感器,還積極探索傳感器與其他電子設備的融合應用,為公司開辟了新的增長點。
2008年全球金融危機的爆發對ELPIDA造成了巨大沖擊。由于DRAM需求的急劇下降和價格的暴跌,公司的業績急劇惡化。在這種情況下,ELPIDA不得不采取一系列措施來應對困境,包括削減成本、優化生產流程等。然而,這些措施并未能完全扭轉公司的頹勢。
在成立初期,ELPIDA憑借其強大的技術實力和規模效應,迅速在全球DRAM市場中占據了重要地位。公司不斷推出創新產品,擴大市場份額,成為行業內的重要參與者。然而,隨著市場競爭的加劇和技術的快速變化,ELPIDA也面臨著巨大的挑戰。
在“2018慕尼黑上海電子展”上,ABLIC展示了其即將推出的紫外傳感器。這一產品的推出,彰顯了ABLIC在傳感器領域的創新能力。紫外傳感器在環境監測、安全防護等領域具有廣泛應用前景。ABLIC憑借其在半導體技術方面的深厚積累,成功研發出具有高性能和穩定性的紫外傳感器,為市場帶來了新的選擇。
2020年4月,ABLIC成為MinebeaMitsumi集團的一員。這一合作對于ABLIC來說具有重要意義。MinebeaMitsumi集團作為一家在電子元器件領域具有強大實力的企業,為ABLIC提供了更廣闊的發展空間和資源支持。通過融入MinebeaMitsumi集團的“八矛戰略”,ABLIC的模擬半導體業務得到了進一步提升,其在集團內部的地位也愈發重要。
高創科技起源于1987年的以色列,最初是一家專注于直驅運動控制驅動器開發的廠商。在以色列的三十多年里,高創積累了豐富的軟件算法技術,特別是在運動控制領域形成了獨特優勢。這種積累不僅體現在其產品的穩定性和高性能上,更為后續的技術創新和市場拓展奠定了堅實基礎。
用flash magic 給 P89V51RD2FBC 燒程序,燒不進去,總是出現如下提示: unable to connect at zhe specified baud rate,try reducing zhe baud rate .reset zhe hardware into ISP mode again. 我波特率設置是96 ...… 查看全部問答∨ |
本人現在使用的這臺電腦,Win2000 Pro系統,偶爾會出現自動重啟現象,是在正常的操作下的,沒有任何提示,系統就自動重新啟動了!系統是剛剛安裝的,而且沒有任何提示,所以不會是病毒;用磁盤檢查命令發現磁盤有問題。 我在命令提示符下輸入磁盤 ...… 查看全部問答∨ |
在ARM匯編中,碰到sub sp,sp,#0x89,30這個語句,sub指令不都是三個參數么,為什么還有30這個參數,這個語句又是什么意思,謝~~~~… 查看全部問答∨ |
$(\'swf_IOd\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMjA3ODM0ODAw/v.sw ...… 查看全部問答∨ |
問題如標題所示,我現在用的是sed1335,應該怎樣編寫程序呢,我使用2812的gpiob0-b7作為液晶的數據口,用gpiod口的四個口模擬液晶的讀寫時序,請高人指點一下,十分感謝。… 查看全部問答∨ |
|
自己總結的,望對有需要的朋友有點用處。 http://www.cnblogs.com/kongtiao/archive/2011/08/13/2137286.html nRF24L01無線模塊在單片機與FPGA上的應用… 查看全部問答∨ |