两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法

文檔序號(hào):6440710閱讀:450來源:國知局
專利名稱:一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,屬于嵌入式系統(tǒng)技術(shù)領(lǐng)域。
背景技術(shù)
隨著信息技術(shù)的不斷發(fā)展,眾多的手持設(shè)備因其低功耗及便攜性已經(jīng)成為大眾化的上網(wǎng)設(shè)備。因此,應(yīng)用于各種手持設(shè)備上的嵌入式操作系統(tǒng)也逐漸走入大眾的視野中。 Linux是一個(gè)類UNIX內(nèi)核以網(wǎng)絡(luò)為核心支持多用戶、多任務(wù)、多線程、多CPU的操作系統(tǒng),是目前最有活力的操作系統(tǒng)之一。此外,Linux系統(tǒng)稍加修改裁剪,被用到嵌入式系統(tǒng)中,有很大的應(yīng)用前景。傳統(tǒng)的嵌入式系統(tǒng)多為一次性系統(tǒng),需要連接上位機(jī)才能完成系統(tǒng)修復(fù)與升級(jí), 無法自主進(jìn)行智能還原。因此,本系統(tǒng)還原方法設(shè)計(jì)了一種利用SD卡對(duì)嵌入式設(shè)備操作系統(tǒng)一鍵還原的方法。用戶將想要修復(fù)或升級(jí)的系統(tǒng)拷貝到SD卡,按下還原按鍵后,系統(tǒng)將自行恢復(fù),并在恢復(fù)完成后進(jìn)入新的系統(tǒng)。

發(fā)明內(nèi)容
為了克服現(xiàn)有技術(shù)的缺陷和不足,以解決現(xiàn)有市面上嵌入式設(shè)備中系統(tǒng)無法自主進(jìn)行智能還原的問題,本發(fā)明提供了一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法。本發(fā)明的技術(shù)方案是采用如下方式來實(shí)現(xiàn)的。一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,系統(tǒng)一鍵還原裝置包括直流電源模塊、開關(guān)控制模塊、主處理器模塊、主處理器啟動(dòng)控制模塊、主處理器復(fù)位模塊、 協(xié)處理器模塊、SD卡模塊和Nand Flash模塊,直流電源模塊給整個(gè)系統(tǒng)供電;開關(guān)控制模塊和協(xié)處理器模塊相連接;協(xié)處理器模塊通過通用IO 口分別與主處理器啟動(dòng)控制模塊和主處理器復(fù)位模塊相連接;主處理器模塊分別與SD卡模塊和Nand Flash模塊相連接;主處理器模塊中,主處理器采用以ARMll為內(nèi)核的S3C6410,主處理器外置128M的SDRAM ;協(xié)處理模塊中,協(xié)處理器為基于8051核具有可編程功能的單片機(jī);主處理器復(fù)位模塊采用復(fù)位芯片MAX811 ;開關(guān)控制模塊中,開關(guān)為按鍵開關(guān)。系統(tǒng)一鍵還原方法中,協(xié)處理器負(fù)責(zé)在主處理器的正常啟動(dòng)模式(從Nand Flash 啟動(dòng))與一鍵還原模式(從SD卡啟動(dòng))之間切換;一鍵還原代碼燒寫在SD卡的特定位置, 包括引導(dǎo)代碼與完整的啟動(dòng)代碼;一鍵還原代碼負(fù)責(zé)刪除Flash上的舊系統(tǒng)文件,并重新燒寫新的系統(tǒng)文件,新系統(tǒng)文件存放在SD卡中。系統(tǒng)一鍵還原方法如下1)系統(tǒng)一鍵還原裝置上電;2)協(xié)處理器初始化;3)主處理器啟動(dòng),判斷系統(tǒng)啟動(dòng)控制信號(hào)線電平,如果為高,轉(zhuǎn)向下一步,否則轉(zhuǎn)向步驟10);4)設(shè)定一鍵還原代碼,一鍵還原代碼由8K的引導(dǎo)代碼bootloaderl簡稱BLl和 256K的完整啟動(dòng)代碼bootloaderf簡稱BL2組成,將一鍵還原代碼從SD卡讀入主處理器模塊中的SDRAM,并跳轉(zhuǎn)到SDRAM中執(zhí)行一鍵還原代碼;5)主處理器初始化開始,包括a)配置主處理器相關(guān)參數(shù);b)配置主處理器模塊中的SDRAM ;c)配置SD卡模塊中的SD卡;d)初始化 Nand Flash 模塊;6)擦除Nand Flash中的舊系統(tǒng)文件,包括bootloader文件、Linux內(nèi)核文件、 yaffs2 文件;7)從SD卡中分別讀取新的bootloader文件、Linux內(nèi)核文件、yaffs2文件到 SDRAM,并拷貝至Nand Flash中,拷貝完成后發(fā)送信號(hào)至協(xié)處理器,一鍵還原代碼執(zhí)行結(jié)束;8)協(xié)處理器控制主處理器復(fù)位;9)主處理器重新啟動(dòng),判斷系統(tǒng)啟動(dòng)控制信號(hào)線電平,如果為低,轉(zhuǎn)向下一步,否則返回步驟4);10)進(jìn)入還原后的新系統(tǒng);11)結(jié)束。步驟2~)中協(xié)處理器初始化的步驟如下a)開始;b)初始化協(xié)處理器1/0 口 ;C)設(shè)置中斷向量表;d)開啟外部中斷0;e)檢測一鍵還原按鍵是否按下,如果是,轉(zhuǎn)向下一步,否則,等待;f)開啟定時(shí)器,設(shè)置系統(tǒng)啟動(dòng)控制信號(hào)線電平為高,復(fù)位主處理器,開始系統(tǒng)還原;g)協(xié)處理器初始化結(jié)束。系統(tǒng)上電后首先啟動(dòng)協(xié)處理器,由協(xié)處理器的外部中斷判斷是否一鍵還原按鍵被按下。主處理器啟動(dòng)后,當(dāng)一鍵還原按鍵被按下時(shí),將系統(tǒng)啟動(dòng)控制信號(hào)線電平置為高,主處理器啟動(dòng)模式被設(shè)定為從SD卡啟動(dòng),復(fù)位主處理器,系統(tǒng)還原開始。步驟4)中將一鍵還原代碼從SD卡讀入主處理器模塊中的SDRAM,并跳轉(zhuǎn)到SDRAM 中執(zhí)行一鍵還原代碼的具體步驟如下a)開始;b)讀取BLl,BLl存儲(chǔ)在SD卡最后18個(gè)扇區(qū)中開始的16個(gè)扇區(qū);c)將BLl復(fù)制到主處理器內(nèi)置的8K SRAM中,也就是M^pingMone,并跳轉(zhuǎn)到 SteppingStone的開始地址執(zhí)行BLl ;d)BLl初始化CPU、GPIO 口、CPU時(shí)鐘頻率、內(nèi)存控制寄存器以及UART和Nand Flash,并屏蔽所有中斷;
e)BLl從SD卡最后的第19個(gè)扇區(qū)開始讀取256K的完整啟動(dòng)代碼BL2,并將BL2 復(fù)制到BL2_BASE起始的SDRAM中,BL2_BASE定義為0x57E00000,就是U8M的SDRAM中最后2M;f) BLl執(zhí)行完畢,跳轉(zhuǎn)到BL2_BASE處,執(zhí)行完整的啟動(dòng)代碼BL2。系統(tǒng)還原開始,系統(tǒng)會(huì)首先加載支持從SD卡啟動(dòng)的一鍵代碼到SDRAM中。系統(tǒng)啟動(dòng)代碼包括引導(dǎo)代碼與完整啟動(dòng)代碼兩部分,8K的引導(dǎo)代碼BLl初始化CPU和一些核心器件,并負(fù)責(zé)拷貝BL2到Nand Flash中;256K的完整啟動(dòng)代碼BL2主要用于從SD卡啟動(dòng)系統(tǒng),并執(zhí)行步驟幻-步驟7)的系統(tǒng)啟動(dòng)命令。啟動(dòng)代碼加載完畢后會(huì)首先跳轉(zhuǎn)到SDRAM的開始地址,運(yùn)行引導(dǎo)代碼BL1,BLl主要負(fù)責(zé)初始化CPU和一些核心器件,并屏蔽所有中斷。 初始化結(jié)束后,BLl從SD卡中讀取完整啟動(dòng)代碼BL2,并跳轉(zhuǎn)到BL2中繼續(xù)其余系統(tǒng)硬件的初始化,并繼續(xù)執(zhí)行一鍵還原的系統(tǒng)命令。步驟6)中擦除Nand Flash中的舊系統(tǒng)文件的具體步驟如下a)開始;b)從零地址開始擦除整片Nand Flash ;c)判斷壞塊表中是否有壞塊?如果有,跳過壞塊,否則繼續(xù)執(zhí)行;d)擦除完畢。存放在Nand Flash上的系統(tǒng)文件包括bootloader文件、Iinux內(nèi)核文件、yaffs2 文件,當(dāng)這些文件出現(xiàn)問題導(dǎo)致系統(tǒng)無法啟動(dòng)的時(shí)候,擦除整個(gè)Flash上的內(nèi)容,重新寫入新的系統(tǒng)文件,從而完成系統(tǒng)還原。擦除Nand Flash時(shí),會(huì)按塊(1塊=16k)擦除,首先讀取該塊的壞塊表,如果該塊被標(biāo)記為壞塊,則跳過該塊,繼續(xù)擦除下一塊。步驟7)中從SD卡中分別讀取新的bootloader文件、Iinux內(nèi)核文件、yaffs2文件到SDRAM,并拷貝至Nand Flash中,拷貝完成后發(fā)送信號(hào)至協(xié)處理器的具體步驟如下a)開始;b)從FAT32格式的SD卡上查找bootloader文件;c)判斷是否查找到文件?如果是,轉(zhuǎn)向下一步,否則,輸出錯(cuò)誤信息,轉(zhuǎn)向步驟 g);d)將文件寫入SDRAM中0x50008000位置;e)將此文件從SDRAM向Nand Flash中拷貝,寫入Linux內(nèi)核中定義的bootloader 在 Nand Flash 的存放分區(qū)〃 Bootloader" =0x000000-0x100000 ;f) bootloader 寫入完成;g)從FAT32格式的SD上查找Linux內(nèi)核文件;h)判斷是否查找到文件?如果是,轉(zhuǎn)向下一步,否則,輸出錯(cuò)誤信息,轉(zhuǎn)向步驟 1);i)將文件寫入SDRAM中0x50008000位置;j)將此文件從SDRAM向Nand Flash中拷貝,寫入Linux內(nèi)核中定義的Linux內(nèi)核文件在 Nand Flash 的存放分區(qū)〃 Kernel" :0xl00000_0x600000 ;k) Linux內(nèi)核文件寫入完成;1)從FAT32格式的SD卡上查找yaffs2文件;m)判斷是否查找到文件?如果是,轉(zhuǎn)向下一步,否則,輸出錯(cuò)誤信息,轉(zhuǎn)向步驟q);η)將文件寫入SDRAM中0x50008000位置;ο)將此文件從SDRAM向Nand Flash中拷貝,寫入Linux內(nèi)核中定義的yaffs2文件在 Nand Flash 的存放分區(qū)〃 FileSystem" :0x7e00000-0x80000000 ;p) yaffs2文件寫入完成。q)主處理器初始化GPIO 口中GPM 口的控制位;r)主處理器向GPM 口中的GPM5數(shù)據(jù)位寫入低電平,并延時(shí)ls,一鍵還原代碼執(zhí)行完畢。當(dāng)我們所使用的SD卡為FAT32文件系統(tǒng)時(shí),我們可以從該文件系統(tǒng)中讀取特定文件名的文件到SDRAM中,然后寫入Nand Flash,寫入的分區(qū)位置在Linux內(nèi)核中定義。首先讀取130(^108(161~文件,拷貝至丨」妝11(1 Flash的bootloader分區(qū)。bootloader文件主要用于從Nand Flash啟動(dòng)嵌入式Linux操作系統(tǒng)。其次讀取Linux內(nèi)核文件,拷貝到Nand Flash 的Kernel分區(qū)。Iinux內(nèi)核文件主要用于操作與控制系統(tǒng)硬件,內(nèi)核功能主要包括存儲(chǔ)管理、CPU和進(jìn)程管理、文件系統(tǒng)、設(shè)備管理和驅(qū)動(dòng)、網(wǎng)絡(luò)通信,以及系統(tǒng)的初始化(引導(dǎo))、 系統(tǒng)調(diào)用等。最后從SD卡中讀取yaffs2文件系統(tǒng),拷貝到Nand Flash的File System分區(qū)。^ffs2文件系統(tǒng)中主要包括桌面系統(tǒng)與應(yīng)用軟件,即用戶直接看到的用戶圖形界面系統(tǒng)。至此,所有的新系統(tǒng)文件已經(jīng)燒寫完畢,主處理器通過GPM5發(fā)送信號(hào)給協(xié)處理器,通知協(xié)處理器將主處理器啟動(dòng)方式更改為從Nand Flash啟動(dòng),并復(fù)位主處理器。BL2到此執(zhí)行完畢,整個(gè)一鍵還原代碼結(jié)束。步驟8)中協(xié)處理器控制主處理器復(fù)位的具體步驟如下a)開始;b)協(xié)處理器檢測主處理器GPM5 口是否有低電平傳來,如果是,轉(zhuǎn)向下一步,否則等待;c)協(xié)處理器設(shè)置系統(tǒng)啟動(dòng)控制信號(hào)線為低電平,主處理器啟動(dòng)方式設(shè)置為從 NandFlash啟動(dòng)模式,復(fù)位主處理器。協(xié)處理器通過1/0 口檢測GPM5 口,當(dāng)接收到GPM5傳來的信號(hào)時(shí),將主處理器啟動(dòng)方式設(shè)置為從Nand Flash啟動(dòng),并復(fù)位主處理器。上面所述的步驟10)中進(jìn)入還原后的新系統(tǒng),具體步驟如下a)開始;b)從 Nand Flash 的 Bootloader 分區(qū)加載 bootloader 文件到 SDRAM 中,并跳轉(zhuǎn)到 SDRAM執(zhí)行;c)從Nand Flash中的Kernel分區(qū)加載Linux內(nèi)核文件到SDRAM,跳轉(zhuǎn)到SDRAM 中引導(dǎo)內(nèi)核鏡像;d)從 Nand Flash 的 File System 分區(qū)加載 yaffs2 文件;e)新系統(tǒng)啟動(dòng),進(jìn)入啟動(dòng)畫面。主處理器復(fù)位后,判斷系統(tǒng)啟動(dòng)控制信號(hào)線電平,如果為低,主處理器從Nand Flash啟動(dòng),分別加載bootloader文件、內(nèi)核鏡像文件與yaffs2文件系統(tǒng)文件,進(jìn)入還原后的嵌入式Linux操作系統(tǒng),整個(gè)系統(tǒng)還原完成。系統(tǒng)一鍵還原的主要流程是協(xié)處理器控制主處理器進(jìn)入SD卡啟動(dòng)模式,主處理器從SD卡讀取并執(zhí)行一鍵還原代碼,擦除舊的系統(tǒng)文件,燒寫新的系統(tǒng)文件,協(xié)處理器控制主處理器返回Nand Flash啟動(dòng)模式,重新啟動(dòng)系統(tǒng)。該流程首先啟動(dòng)協(xié)處理器模塊,協(xié)處理器負(fù)責(zé)判斷一鍵還原按鍵的按下,如果按下,設(shè)置系統(tǒng)啟動(dòng)控制信號(hào)線為高電平,并復(fù)位主處理器。主處理器判斷系統(tǒng)啟動(dòng)控制信號(hào)線,如果為高,從SD卡讀取并執(zhí)行一鍵還原代碼,一鍵還原代碼負(fù)責(zé)從SD卡中分別讀取bootloader文件、內(nèi)核鏡像文件與yaffs2文件,并分別燒寫到各自在Nand Flash的分區(qū)中。燒寫完畢后,主處理器通過GPM5 口傳遞低電平至協(xié)處理器,協(xié)處理器檢測到低電平,設(shè)置系統(tǒng)啟動(dòng)控制信號(hào)線電平為低,并復(fù)位主處理器。主處理器判斷啟動(dòng)控制信號(hào)線,如果為低,從Nand Flash中分別加載bootloader文件、內(nèi)核鏡像文件與yaffs2文件系統(tǒng)文件,啟動(dòng)新的操作系統(tǒng)。本發(fā)明的技術(shù)解決方案是本發(fā)明采用模塊化程序構(gòu)造,分為協(xié)處理器控制程序, 一鍵還原代碼。協(xié)處理器控制程序采用C語言編寫,依賴于協(xié)處理器與電源復(fù)位電路。一鍵還原代碼由8K的引導(dǎo)代碼bootloaderl簡稱BLl和256K的完整啟動(dòng)代碼bootloader2 簡稱BL2組成。一鍵還原代碼支持從SD卡驅(qū)動(dòng),可支持不同的嵌入式處理器硬件結(jié)構(gòu),對(duì)不同的嵌入式硬件架構(gòu)只需要修改其配置文件。一種系統(tǒng)一鍵還原裝置,包括直流電源模塊、開關(guān)控制模塊、主處理器模塊、主處理器啟動(dòng)控制模塊、主處理器復(fù)位模塊、協(xié)處理器模塊、SD卡模塊和Nand Flash模塊,直流電源模塊給整個(gè)系統(tǒng)供電;開關(guān)控制模塊和協(xié)處理器模塊相連接;協(xié)處理器模塊通過通用 10 口分別與主處理器啟動(dòng)控制模塊和主處理器復(fù)位模塊相連接;主處理器模塊分別與SD 卡模塊和Nand Flash模塊相連接。所述的主處理器模塊中,主處理器采用以ARMll為內(nèi)核的S3C6410,主處理器外置 256M 的 SDRASM。所述的協(xié)處理器為基于8051核具有可編程功能的單片機(jī)。所述的處理器復(fù)位模塊采用復(fù)位芯片MAX811。所述的開關(guān)控制模塊,開關(guān)為按鍵開關(guān)。系統(tǒng)一鍵還原裝置中各部件的工作功能如下(1)協(xié)處理器模塊,連接處理器啟動(dòng)控制模塊,控制處理器復(fù)位模塊。(2)主處理器啟動(dòng)控制模塊,負(fù)責(zé)控制主處理器的啟動(dòng)方式。(3)主處理器復(fù)位模塊,負(fù)責(zé)復(fù)位主處理器。通過上述功能組合,協(xié)處理器通過控制系統(tǒng)啟動(dòng)控制信號(hào)線來控制主處理器的啟動(dòng)模式,通過控制主處理器復(fù)位模塊來復(fù)位主處理器。主處理器通過程序設(shè)定,從SD卡啟動(dòng),擦除Flash上的舊系統(tǒng)文件(bootloader文件、內(nèi)核鏡像文件與yaffs2文件系統(tǒng)文件),從SD卡上讀取新的系統(tǒng)文件,并燒寫至Flash相應(yīng)的分區(qū);燒寫完畢后,主處理器通過GPM 口向協(xié)處理器發(fā)送燒寫完成的信號(hào)。協(xié)處理器接收到信號(hào),更改系統(tǒng)啟動(dòng)控制信號(hào)線電平,并復(fù)位主處理器,使主處理器從Flash啟動(dòng),并加載新的系統(tǒng)文件,至此系統(tǒng)一鍵還原完畢。本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明針對(duì)嵌入式Linux操作系統(tǒng)設(shè)計(jì)了一種系統(tǒng)一鍵還原方法。系統(tǒng)采用模塊化設(shè)計(jì),增加外設(shè)單片機(jī)作為協(xié)處理器模塊,控制主處理器的復(fù)位,更改主處理器的啟動(dòng)模式,并通過GPIO 口與主處理器通信,可適用于不同結(jié)構(gòu)的嵌入式主處理器。所需還原的系統(tǒng)文件存放在SD卡上,可隨時(shí)更改。本一鍵還原系統(tǒng)智能化程度高,操作簡單、方便,解決了普通嵌入式系統(tǒng)需要連接上位機(jī)還原系統(tǒng)的問題,使各種嵌入式Linux設(shè)備更加方便、 實(shí)用。


圖1為本發(fā)明系統(tǒng)一鍵還原方法的流程圖。圖2為本發(fā)明方法所述的步驟2、中協(xié)處理器初始化的具體步驟流程圖。圖3為本發(fā)明方法所述的步驟幻中將一鍵還原代碼從SD卡讀入主處理器模塊中的SDRAM,并跳轉(zhuǎn)到SDRAM中執(zhí)行一鍵還原代碼的具體步驟流程圖。圖4為本發(fā)明方法所述的步驟5)中擦除Flash中的舊系統(tǒng)文件的具體步驟流程圖。圖5為本發(fā)明方法所述的步驟6)中從SD卡中分別讀取新的bootloader文件、 Linux內(nèi)核文件、yaffs2文件到SDRAM,并拷貝至Nand Flash中,拷貝完成后發(fā)送信號(hào)至協(xié)處理器的具體步驟流程圖。圖6為本發(fā)明方法所述的步驟7)中協(xié)處理器控制主處理器復(fù)位的具體步驟流程圖。圖7為本發(fā)明方法所述的步驟8)中進(jìn)入還原后的新系統(tǒng)的具體步驟流程圖。 具體實(shí)施方案下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明做進(jìn)一步說明,但不限于此。實(shí)施例1 一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,系統(tǒng)一鍵還原裝置包括直流電源模塊、開關(guān)控制模塊、主處理器模塊、主處理器啟動(dòng)控制模塊、主處理器復(fù)位模塊、 協(xié)處理器模塊、SD卡模塊和Nand Flash模塊,直流電源模塊給整個(gè)系統(tǒng)供電;開關(guān)控制模塊和協(xié)處理器模塊相連接;協(xié)處理器模塊通過通用IO 口分別與主處理器啟動(dòng)控制模塊和主處理器復(fù)位模塊相連接;主處理器模塊分別與SD卡模塊和Nand Flash模塊相連接;主處理器模塊中,主處理器采用以ARMll為內(nèi)核的S3C6410,主處理器外置128M的SDRAM ;協(xié)處理模塊中,協(xié)處理器為基于8051核具有可編程功能的單片機(jī);主處理器復(fù)位模塊采用復(fù)位芯片MAX811 ;開關(guān)控制模塊中,開關(guān)為按鍵開關(guān);系統(tǒng)一鍵還原方法如下1)系統(tǒng)一鍵還原裝置上電;2)協(xié)處理器初始化;3)主處理器啟動(dòng),判斷系統(tǒng)啟動(dòng)控制信號(hào)線電平,如果為高,轉(zhuǎn)向下一步,否則轉(zhuǎn)向步驟10);4)設(shè)定一鍵還原代碼,一鍵還原代碼由8K的引導(dǎo)代碼bootloaderl簡稱BLl和 256K的完整啟動(dòng)代碼bootloaderf簡稱BL2組成,將一鍵還原代碼從SD卡讀入主處理器模塊中的SDRAM,并跳轉(zhuǎn)到SDRAM中執(zhí)行一鍵還原代碼;5)主處理器初始化開始,包括a)配置主處理器相關(guān)參數(shù);b)配置主處理器模塊中的SDRAM ;
C)配置SD卡模塊中的SD卡;d)初始化 Nand Flash 模塊;6)擦除Nand Flash中的舊系統(tǒng)文件,包括bootloader文件、Linux內(nèi)核文件、 yaffs2 文件;7)從SD卡中分別讀取新的bootloader文件、Linux內(nèi)核文件、yaffs2文件到 SDRAM,并拷貝至Nand Flash中,拷貝完成后發(fā)送信號(hào)至協(xié)處理器,一鍵還原代碼執(zhí)行結(jié)束;8)協(xié)處理器控制主處理器復(fù)位;9)主處理器重新啟動(dòng),判斷系統(tǒng)啟動(dòng)控制信號(hào)線電平,如果為低,轉(zhuǎn)向下一步,否則返回步驟4);10)進(jìn)入還原后的新系統(tǒng);11)結(jié)束。上面所述的步驟2~)中協(xié)處理器初始化的步驟如下a)開始;b)初始化協(xié)處理器1/0 口 ;C)設(shè)置中斷向量表;d)開啟外部中斷0;e)檢測一鍵還原按鍵是否按下,如果是,轉(zhuǎn)向下一步,否則,等待;f)開啟定時(shí)器,設(shè)置系統(tǒng)啟動(dòng)控制信號(hào)線電平為高,復(fù)位主處理器,開始系統(tǒng)還原;g)協(xié)處理器初始化結(jié)束。上面所述的步驟4)中將一鍵還原代碼從SD卡讀入主處理器模塊中的SDRAM,并跳轉(zhuǎn)到SDRAM中執(zhí)行一鍵還原代碼的具體步驟如下a)開始;b)讀取BLl,BLl存儲(chǔ)在SD卡最后18個(gè)扇區(qū)中開始的16個(gè)扇區(qū);c)將BLl復(fù)制到主處理器內(nèi)置的8K SRAM中,也就是M^pingMone,并跳轉(zhuǎn)到 SteppingStone的開始地址執(zhí)行BLl ;d)BLl初始化CPU、GPIO 口、CPU時(shí)鐘頻率、內(nèi)存控制寄存器以及UART和Nand Flash,并屏蔽所有中斷;e) BLl從SD卡最后的第19個(gè)扇區(qū)開始讀取256K的完整啟動(dòng)代碼BL2,并將BL2 復(fù)制到BL2_BASE起始的SDRAM中,BL2_BASE定義為0x57E00000,就是U8M的SDRAM中最后2M;f)BLl執(zhí)行完畢,跳轉(zhuǎn)到BL2_BASE處,執(zhí)行完整的啟動(dòng)代碼BL2。上面所述的步驟6)中擦除Nand Flash中的舊系統(tǒng)文件的具體步驟如下a)開始;b)從零地址開始擦除整片Nand Flash ;c)判斷壞塊表中是否有壞塊?如果有,跳過壞塊,否則繼續(xù)執(zhí)行;d)擦除完畢。上面所述的步驟7)中從SD卡中分別讀取新的bootloader文件、Iinux內(nèi)核文件、yaffs2文件到SDRAM,并拷貝至Nand Flash中,拷貝完成后發(fā)送信號(hào)至協(xié)處理器的具體步驟如下a)開始;b)從FAT32格式的SD卡上查找bootloader文件;c)判斷是否查找到文件?如果是,轉(zhuǎn)向下一步,否則,輸出錯(cuò)誤信息,轉(zhuǎn)向步驟 g);d)將文件寫入SDRAM中0x50008000位置;e)將此文件從SDRAM向Nand Flash中拷貝,寫入Linux內(nèi)核中定義的bootloader 在 Nand Flash 的存放分區(qū)〃 Bootloader" =0x000000-0x100000 ;f) bootloader 寫入完成;g)從FAT32格式的SD上查找Linux內(nèi)核文件;h)判斷是否查找到文件?如果是,轉(zhuǎn)向下一步,否則,輸出錯(cuò)誤信息,轉(zhuǎn)向步驟 1);i)將文件寫入SDRAM中0x50008000位置;j)將此文件從SDRAM向Nand Flash中拷貝,寫入Linux內(nèi)核中定義的Linux內(nèi)核文件在 Nand Flash 的存放分區(qū)〃 Kernel" :0xl00000_0x600000 ;k) Linux內(nèi)核文件寫入完成;1)從FAT32格式的SD卡上查找yaffs2文件;m)判斷是否查找到文件?如果是,轉(zhuǎn)向下一步,否則,輸出錯(cuò)誤信息,轉(zhuǎn)向步驟 q);η)將文件寫入SDRAM中0x50008000位置;ο)將此文件從SDRAM向Nand Flash中拷貝,寫入Linux內(nèi)核中定義的yaffs2文件在 Nand Flash 的存放分區(qū)〃 FileSystem" :0x7e00000-0x80000000 ;p) yaffs2文件寫入完成。q)主處理器初始化GPIO 口中GPM 口的控制位;r)主處理器向GPM 口中的GPM5數(shù)據(jù)位寫入低電平,并延時(shí)ls,一鍵還原代碼執(zhí)行完畢;上面所述的步驟8)中協(xié)處理器控制主處理器復(fù)位的具體步驟如下a)開始;b)協(xié)處理器檢測主處理器GPM5 口是否有低電平傳來,如果是,轉(zhuǎn)向下一步,否則等待;c)協(xié)處理器設(shè)置系統(tǒng)啟動(dòng)控制信號(hào)線為低電平,主處理器啟動(dòng)方式設(shè)置為從 NandFlash啟動(dòng)模式,復(fù)位主處理器。上面所述的步驟10)中進(jìn)入還原后的新系統(tǒng)的具體步驟如下a)開始;b)從 Nand Flash 的 Bootloader 分區(qū)加載 bootloader 文件到 SDRAM 中,并跳轉(zhuǎn)到 SDRAM執(zhí)行;c)從Nand Flash中的Kernel分區(qū)加載Linux內(nèi)核文件到SDRAM,跳轉(zhuǎn)到SDRAM 中引導(dǎo)內(nèi)核鏡像;
d)從 Nand Flash 的 File System 分區(qū)加載 yaffs2 文件;e)新系統(tǒng)啟動(dòng),進(jìn)入啟動(dòng)畫面。
權(quán)利要求
1.一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,系統(tǒng)一鍵還原裝置包括直流電源模塊、開關(guān)控制模塊、主處理器模塊、主處理器啟動(dòng)控制模塊、主處理器復(fù)位模塊、協(xié)處理器模塊、SD卡模塊和Nand Flash模塊,直流電源模塊給整個(gè)系統(tǒng)供電;開關(guān)控制模塊和協(xié)處理器模塊相連接;協(xié)處理器模塊通過通用IO 口分別與主處理器啟動(dòng)控制模塊和主處理器復(fù)位模塊相連接;主處理器模塊分別與SD卡模塊和Nand Flash模塊相連接;主處理器模塊中,主處理器采用以ARMll為內(nèi)核的S3C6410,主處理器外置128M的SDRAM ;協(xié)處理模塊中,協(xié)處理器為基于8051核具有可編程功能的單片機(jī);主處理器復(fù)位模塊采用復(fù)位芯片MAX811 ;開關(guān)控制模塊中,開關(guān)為按鍵開關(guān);其特征在于,系統(tǒng)一鍵還原方法如下1)系統(tǒng)一鍵還原裝置上電;2)協(xié)處理器初始化;3)主處理器啟動(dòng),判斷系統(tǒng)啟動(dòng)控制信號(hào)線電平,如果為高,轉(zhuǎn)向下一步,否則轉(zhuǎn)向步驟 10);4)設(shè)定一鍵還原代碼,一鍵還原代碼由8K的引導(dǎo)代碼bootloaderl簡稱BLl和256K 的完整啟動(dòng)代碼bootloaderf簡稱BL2組成,將一鍵還原代碼從SD卡讀入主處理器模塊中的SDRAM,并跳轉(zhuǎn)到SDRAM中執(zhí)行一鍵還原代碼;5)主處理器初始化開始,包括a)配置主處理器相關(guān)參數(shù);b)配置主處理器模塊中的SDRAM;c)配置SD卡模塊中的SD卡;d)初始化NandFlash模塊;6)擦除NandFlash中的舊系統(tǒng)文件,包括bootloader文件、Linux內(nèi)核文件、yaffs2 文件;7)從SD卡中分別讀取新的bootloader文件、Linux內(nèi)核文件、yaffs2文件到SDRAM, 并拷貝至Nand Flash中,拷貝完成后發(fā)送信號(hào)至協(xié)處理器,一鍵還原代碼執(zhí)行結(jié)束;8)協(xié)處理器控制主處理器復(fù)位;9)主處理器重新啟動(dòng),判斷系統(tǒng)啟動(dòng)控制信號(hào)線電平,如果為低,轉(zhuǎn)向下一步,否則返回步驟4);10)進(jìn)入還原后的新系統(tǒng);11)結(jié)束。
2.如權(quán)利要求1所述的一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,其特征在于,步驟2)所述的協(xié)處理器初始化的步驟如下a)開始;b)初始化協(xié)處理器1/0口 ;c)設(shè)置中斷向量表;d)開啟外部中斷0;e)檢測一鍵還原按鍵是否按下,如果是,轉(zhuǎn)向下一步,否則,等待;f)開啟定時(shí)器,設(shè)置系統(tǒng)啟動(dòng)控制信號(hào)線電平為高,復(fù)位主處理器,開始系統(tǒng)還原;g)協(xié)處理器初始化結(jié)束。
3.如權(quán)利要求1所述的一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,其特征在于,步驟4)所述的將一鍵還原代碼從SD卡讀入主處理器模塊中的SDRAM,并跳轉(zhuǎn)到 SDRAM中執(zhí)行一鍵還原代碼的具體步驟如下a)開始;b)讀取BLl,BLl存儲(chǔ)在SD卡最后18個(gè)扇區(qū)中開始的16個(gè)扇區(qū);c)將BLl復(fù)制到主處理器內(nèi)置的8KSRAM中,也就是乂???1叫乂01^,并跳轉(zhuǎn)到 SteppingStone的開始地址執(zhí)行BLl ;d)BLl初始化CPU、GPIO口、CPU時(shí)鐘頻率、內(nèi)存控制寄存器以及UART和Nand Flash, 并屏蔽所有中斷;e)BLl從SD卡最后的第19個(gè)扇區(qū)開始讀取256K的完整啟動(dòng)代碼BL2,并將BL2復(fù)制到 BL2_BASE 起始的 SDRAM 中,BL2_BASE 定義為 0x57E00000,就是 U8M 的 SDRAM 中最后 2M ;f)BLl執(zhí)行完畢,跳轉(zhuǎn)到BL2_BASE處,執(zhí)行完整的啟動(dòng)代碼BL2。
4.如權(quán)利要求1所述的一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,其特征在于,步驟6)所述的擦除Nand Flash中的舊系統(tǒng)文件的具體步驟如下a)開始;b)從零地址開始擦除整片NandFlash ;c)判斷壞塊表中是否有壞塊?如果有,跳過壞塊,否則繼續(xù)執(zhí)行;d)擦除完畢。
5.如權(quán)利要求1所述的一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,其特征在于,步驟7)所述的從SD卡中分別讀取新的bootloader文件、Iinux內(nèi)核文件、yaffs2 文件到SDRAM,并拷貝至Nand Flash中,拷貝完成后發(fā)送信號(hào)至協(xié)處理器的具體步驟如下a)開始;b)從FAT32格式的SD卡上查找bootloader文件;c)判斷是否查找到文件?如果是,轉(zhuǎn)向下一步,否則,輸出錯(cuò)誤信息,轉(zhuǎn)向步驟g);d)將文件寫入SDRAM中0x50008000位置;e)將此文件從SDRAM向NandFlash中拷貝,寫入Linux內(nèi)核中定義的bootloader在 Nand Flash 的存放分區(qū)〃 Bootloader" =0x000000-0x100000 ;f)bootloader 寫入完成;g)從FAT32格式的SD上查找Linux內(nèi)核文件;h)判斷是否查找到文件?如果是,轉(zhuǎn)向下一步,否則,輸出錯(cuò)誤信息,轉(zhuǎn)向步驟1);i)將文件寫入SDRAM中0x50008000位置;j)將此文件從SDRAM向Nand Flash中拷貝,寫入Linux內(nèi)核中定義的Linux內(nèi)核文件在 Nand Flash 的存放分區(qū)〃 Kernel" :0xl00000_0x600000 ; k) Linux內(nèi)核文件寫入完成; 1)從FAT32格式的SD卡上查找yaffs2文件;m)判斷是否查找到文件?如果是,轉(zhuǎn)向下一步,否則,輸出錯(cuò)誤信息,轉(zhuǎn)向步驟q); η)將文件寫入SDRAM中0x50008000位置;ο)將此文件從SDRAM向Nand Flash中拷貝,寫入Linux內(nèi)核中定義的yaffs2文件在 Nand Flash 的存放分區(qū)〃 File System" :0x7e00000-0x80000000 ; p)yaffs2文件寫入完成。q)主處理器初始化GPIO 口中GPM 口的控制位;r)主處理器向GPM 口中的GPM5數(shù)據(jù)位寫入低電平,并延時(shí)ls,一鍵還原代碼執(zhí)行完畢。
6.如權(quán)利要求1所述的一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,其特征在于,步驟8)所述的協(xié)處理器控制主處理器復(fù)位的具體步驟如下a)開始;b)協(xié)處理器檢測主處理器GPM5口是否有低電平傳來,如果是,轉(zhuǎn)向下一步,否則等待;c)協(xié)處理器設(shè)置系統(tǒng)啟動(dòng)控制信號(hào)線為低電平,主處理器啟動(dòng)方式設(shè)置為從 NandFlash啟動(dòng)模式,復(fù)位主處理器。
7.如權(quán)利要求1所述的一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,其特征在于,所述的步驟10)中進(jìn)入還原后的新系統(tǒng)的具體步驟如下a)開始;b)從NandFlash的Bootloader分區(qū)加載bootloader文件到SDRAM中,并跳轉(zhuǎn)到SDRAM 執(zhí)行;c)從NandFlash中的Kernel分區(qū)加載Linux內(nèi)核文件到SDRAM,跳轉(zhuǎn)到SDRAM中引導(dǎo)內(nèi)核鏡像;d)從Nand Flash 的 File System 分區(qū)加載 yaffs2 文件;e)新系統(tǒng)啟動(dòng),進(jìn)入啟動(dòng)畫面。
全文摘要
一種適用于嵌入式Linux操作系統(tǒng)的系統(tǒng)一鍵還原方法,屬于嵌入式系統(tǒng)技術(shù)領(lǐng)域。通過C語言和匯編語言構(gòu)建了一種嵌入式操作系統(tǒng)一鍵還原的方法。用戶通過一鍵還原按鈕開始系統(tǒng)的一鍵還原,要還原的操作系統(tǒng)存在普通的SD卡上。還原按鈕按下時(shí),觸發(fā)主處理器啟動(dòng)控制模塊的電平轉(zhuǎn)換,改變主處理器的啟動(dòng)方式為一鍵還原模式。還原結(jié)束時(shí),主處理器模塊發(fā)送信號(hào)至復(fù)位模塊,將啟動(dòng)方式改為正常啟動(dòng)模式,并將主處理器模塊復(fù)位,進(jìn)入系統(tǒng)。系統(tǒng)采用模塊化設(shè)計(jì),增加外設(shè)單片機(jī)作為協(xié)處理器模塊,控制主處理器的復(fù)位,更改主處理器的啟動(dòng)模式,并通過GPIO口與主處理器通信,適用于不同結(jié)構(gòu)的嵌入式主處理器,解決了普通嵌入式系統(tǒng)需要連接上位機(jī)恢復(fù)系統(tǒng)的問題。
文檔編號(hào)G06F11/14GK102520778SQ20111040913
公開日2012年6月27日 申請(qǐng)日期2011年12月9日 優(yōu)先權(quán)日2011年12月9日
發(fā)明者孫志猛, 孫文, 張海霞, 徐偉濤, 徐加利, 李宗璋, 紀(jì)洪亮, 翟慶羽, 赫明哲 申請(qǐng)人:山東大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
西平县| 新田县| 慈溪市| 北碚区| 钟祥市| 金堂县| 万载县| 赤峰市| 彭水| 嵊泗县| 赣榆县| 华亭县| 甘孜县| 宁海县| 博野县| 永寿县| 高雄市| 巴彦县| 措勤县| 海原县| 廊坊市| 浦城县| 崇信县| 道真| 定陶县| 博乐市| 安新县| 保山市| 澳门| 尖扎县| 长垣县| 乳山市| 上蔡县| 龙川县| 竹溪县| 连云港市| 鄢陵县| 泽州县| 华安县| 慈利县| 多伦县|