Uboot下備份恢復作業系統方法

2021-06-08 08:29:23 字數 2401 閱讀 4831

第一次發部落格,想把總結的乙個uboot下備份恢復作業系統的方法分享一下。

下面開發環境是ti 的dm365,根據資料手冊利用io功能實現系統上電在uboot讀取核心的時候按下io鍵檢測恢復系統

首先,由於需要使用uboot下的命令,uboot下修改cmd_mem.c,

增加乙個命令

u_boot_cmd(

cmp,       4,    1,    do_mem_mycmp,

"memory compare",

"[.b, .w, .l] addr1 value count" );

//命令增加的函式,功能主要是對比乙個位址和乙個值

int do_mem_mycmp (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv) {

ulong      addr1,value, count;

int     rcode = 0;

if (argc != 4)

return cmd_usage(cmdtp);

addr1 = ******_strtoul(argv[1], null, 16);

addr1 += base_address;

addr2 = ******_strtoul(argv[2], null, 16);

value += base_address;

count = ******_strtoul(argv[3], null, 16);

if(*(ulong*)addr1 == value ) {

return 1;

}else{

return 0;}

}上面的修改就是在uboot命令下增加了乙個命令。使用方法如下:

mycmp addr value(hex)count

example:mycmp 0x01c67098 0x00000000 1(比較位址0x0c167098位址的值和0x00000000是否相等,相等則返回1,否則返回0)

配置並獲取

io狀態:

此外的操作就是根據不同板級的復用引腳之類的配置出乙個按鍵的io口,如gzh-801c是101號gpio作為輸入。所以我需要在uboot讀取101號gpio的高低電平。

gpio 101在arm subsystem reference文件裡面可以看到,屬於pinmux0的復用腳,將0x01c40000位址的4-5位配置為01,則復用腳工作在io狀態,接下來要配置io的輸入和輸出方向,在資料手冊tms320dm36x dmsoc general-purpose input_output user's guide.pdf裡面可以了解到io方向位址0表示輸出,1表示輸入。101號io屬於gpiobank6配置位址為0x01c67088 ,將此位址配置第5位為1表示輸入,接下來就可以讀取io的值了,在uboot下md命令可以讀取實體地址值,這個實體地址指的是cpu的。101 io的io電平表現位址在0x01c67098。

正常狀態md 0x01c67098 1讀取的值是0x00000020高電平

如果鍵被按下,那麼值將是0x00000000。

這樣我們就可以根據uboot檢測上電按鍵來選擇恢復flash的檔案系統了。

補充一點,上面配置復用腳和設定輸入輸出可以在uboot原始碼裡面做,也可以直接在命令處理。

命令列:

setenv bootcmd 'nboot 0x80700000 0 0x400000;

mw 0x01c40000 0x00fd0010;//

命令列配置復用腳為

ioif mycmp 0x01c67098 0x00000000 1;//

讀取狀態為按下狀態

then       nand erase 0x800000 0x2000000 ;//

擦除燒寫操作

nand read.jffs2 0x82000000 0x4800000 0xda0000;

nand write.jffs2 0x82000000 0x800000 0xda0000;

fi;//

結束if判斷

bootm'

對於這個uboot的指令碼應用,網上基本找不到資料,我是根據ti在uboot裡使用指令碼總結出來,剛好利用做恢復,否則uboot恢復無法進行。

結構如下:

if ***;

then 滿足***;

fi;

可以多重巢狀

if ***;

then if ***;

then if ***;

fi;fi;

fi;//

利用這種結構我們可以在上電時同時按下組合鍵來確定恢復系統,可以使用

sleep

,至於更多的命令我沒有驗證。

根據上面的做法,只有獲取到io並拉出來做按鍵,便可以做系統備份處理。任何平台都可以實現。

在Linux作業系統下備份恢復技術的應用

本文講述linux環境下,如何使用備份的指令碼和命令以及商業化的軟體來合理高效地保護磁碟資料安全。備份與恢復系統承擔著事前備份與事後恢復的職能。在當前高速發展的網路環境下,任何乙個網路上的資訊 系統都不可能保證絕對的安全。只要有網路存在,就會有來自網路的形形色色的威脅。為了抵禦網路的攻擊和入侵,雖然...

Linux作業系統中備份恢復技術的應用

備份與恢復系統承擔著事前備份與事後恢復的職能。在當前高速發展的網路環境下,任何乙個網路上的資訊 系統都不可能保證絕對的安全。只要有網路存在,就會有來自網路的形形色色的威脅。為了抵禦網路的攻擊和入侵,雖然我們引入了日趨成熟的入侵檢測系統 防火牆系統等,黑客們的入侵手段也日益高明,他們總能找到這些系統的...

Ubuntu無法進入作業系統的恢復和備份操作

適用情況有伺服器開機後無法進入作業系統,系統損壞等情景,用於簡單的系統修復或備份檔案。例如,如果是因為修改檔案導致系統無法開機的,可以使用本文件方法進入系統後還原。二 進入finnix系統 finnix是基於debian系統,開機選擇finnix映象啟動,例如。一般選擇第乙個。三 修復磁碟 檢視可識...