利用SD卡實(shí)現嵌入式Linux系統的自動(dòng)升級
2 關(guān)鍵技術(shù)
2.1 Uboot工作原理
Uboot是一個(gè)由德國DENX發(fā)起的,遵循GPL條款的開(kāi)源項目,支持ARM、X86、MIPS、PowerPC等處理器,可啟動(dòng)Linux、VxWorks、TREMS等嵌入式操作系統,其提供了豐富的配置、管理以及運行命令。
Uboot與大多數Bootloader一樣都包含兩種操作模式:
①啟動(dòng)加載(Bootloading)模式:即Uboot從目標機上的某個(gè)固態(tài)存儲設備上將操作系統加載到RAM中運行,整個(gè)過(guò)程都是自動(dòng)完成的。
②下載(Downloading)模式:在這種模式下,目標機的Uboot將通過(guò)串口或網(wǎng)絡(luò )等通信方式將內核或文件系統印象下載到RAM當中,然后再寫(xiě)入相應的存儲設備中。這種工作模式通常在系統初次安裝和更新時(shí)使用。
Uboot的實(shí)現依賴(lài)于CPU的體系結構,它分為stage1和stage2兩大部分。stage1存放用匯編語(yǔ)言實(shí)現的依賴(lài)于CPU體系結構的代碼,比如設備初始化代碼等;stage2則通常用具有更好的可讀性和可移植性的C語(yǔ)言來(lái)實(shí)現。
Uboot Stage1的主要功能有:
①硬件設備初始化;
②為Uboot重定位至RAM中,準備RAM空間;
③重定位Uboot代碼到RAM中;
④設置堆棧,將BSS段清零;
⑤跳轉到第二階段的C程序入口點(diǎn)。
Uboot Stage2的主要功能有:
①初始化硬件設備;
②將內核和文件系統映像從Flash讀到RAM中;
③設定內核啟動(dòng)參數和調用內核。
通過(guò)上面這兩個(gè)階段,Uboot就完成了引導內核啟動(dòng)的任務(wù)。
2.2 Uboot擴展升級功能
Uboot本身并不帶有系統升級功能,本文在Uboot現有的功能上做擴展,使其完成系統升級的功能,將新的內核或者文件系統映像燒寫(xiě)到Flash的相應分區中。本文的實(shí)驗對象是Samsung公司的S3C2440微處理器,該設備上有64 MB的SDARM和256 MB的NAND Flash,NAND Flash的起始地址映射到0x00000000,SDRAM的起始地址映射到0x30000000。設備上的Uboot將256 MBNAND Flash分為Bootloader、Bootloader參數、ker nel和rootfs四個(gè)區。其中,Bootloader分區是用于存放Uboot映像,它的起始地址為NAND Flash的起始地址0x00000000;Bootloader參數區是用于存放Uboot的參數;kernel區用于存放Linux內核;rootfs區用于存放文件系統,在我們的設備上使用的文件系統是Yaffs2。這4個(gè)分區的起始地址和大小如表1所列。本文引用地址:http://dyxdggzs.com/article/148225.htm
linux相關(guān)文章:linux教程
評論