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

一種控制系統(tǒng)自啟動程序的實現(xiàn)方法

文檔序號:6606408閱讀:189來源:國知局
專利名稱:一種控制系統(tǒng)自啟動程序的實現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及到自動化領(lǐng)域,更具體地說,涉及到嵌入式設(shè)備領(lǐng)域。
背景技術(shù)
U-Boot,全稱 Universal Boot Loader,U-Boot 不僅僅支持嵌入式 Linux 系統(tǒng)的 引導,還支持 NetBSD,Vxfforks, QNX, RTEMS, artos, LynxOS 嵌入式操作系統(tǒng)。U-Boot 支持 PowerPC, MIPS, X86,ARM, NI0S, XScale等諸多常用系統(tǒng)的處理器。U-Boot項目的開發(fā)目 標,即是支持盡可能多的嵌入式處理器和嵌入式操作系統(tǒng)。U-Boot的特點1,開放源碼;2,支持多種嵌入式操作系統(tǒng)內(nèi)核,如LinuxNetBSD, Vxfforks, QNX, RTEMS, artos, LynxOS ;3,支持多個處理器系列,如 PowerPC,MIPS, X86, ARM, NIOS,XScale ;4,較高的可靠性和穩(wěn)定性;5,高度靈活的功能設(shè)置,適合U-Boot調(diào)試、操作 系統(tǒng)不同引導要求等;6,豐富的設(shè)備驅(qū)動源碼,如串口、以太網(wǎng)、SDRAM、FLASH、EEraOM、RTC、 鍵盤等;7,較為豐富的開發(fā)調(diào)試文檔與強大的網(wǎng)絡(luò)技術(shù)支持。在計算機科學中,Shell俗稱殼(用來區(qū)別于核),是指“提供使用者使用界面”的 軟件(命令解析器)。它類似于DOS下的command, com。它接收用戶命令,然后調(diào)用相應(yīng)的 應(yīng)用程序。同時它又是一種程序設(shè)計語言。作為命令語言,它交互式解釋和執(zhí)行用戶輸入 的命令或者自動地解釋和執(zhí)行預(yù)先設(shè)定好的一連串的命令;作為程序設(shè)計語言,它定義了 各種變量和參數(shù),并提供了許多在高階語言中才具有的控制結(jié)構(gòu),包括循環(huán)和分支。命令行 式 shell (Command Line Interface shell,艮口 CLI shell)例如bash/sh/ksh/csh(Unix/ linux系統(tǒng))。傳統(tǒng)意義上的shell指的是命令行式的shell,以后如果不特別注明,shell 是指命令行式的shell。文字操作系統(tǒng)與外部最主要的接口就叫做shell。shell是操作 系統(tǒng)最外面的一層。shell管理你與操作系統(tǒng)之間的交互等待你輸入,向操作系統(tǒng)解釋你 的輸入,并且處理各種各樣的操作系統(tǒng)的輸出結(jié)果。shell提供了你與操作系統(tǒng)之間通訊 的方式。這種通訊可以以交互方式(從鍵盤輸入,并且可以立即得到響應(yīng)),或者以shell script (非交互)方式執(zhí)行。shell script是放在文件中的一串shell和操作系統(tǒng)命令, 它們可以被重復使用。本質(zhì)上,shell script是命令行命令簡單的組合到一個文件里面。 Shell基本上是一個命令解釋器,它接收用戶命令(如Is等),然后調(diào)用相應(yīng)的應(yīng)用程序。 較為通用的shell有標準的Bourne shell (sh)和C shell (csh)。交互式shell和非交互 式shell。交互式模式就是shell等待你的輸入,并且執(zhí)行你提交的命令。這種模式被稱作 交互式是因為shell與用戶進行交互。這種模式也是大多數(shù)用戶非常熟悉的登錄、執(zhí)行一 些命令、簽退。當你簽退后,shell也終止了。shell也可以運行在另外一種模式非交互式 模式。在這種模式下,shell不與你進行交互,而是讀取存放在文件中的命令,并且執(zhí)行它 們。當它讀到文件的結(jié)尾,shell也就終止了。首個重要的標準Unix Shell是1970年底在 V7Unix(AT&T第7版)中引入的,并且以它的創(chuàng)始科技部基礎(chǔ)條件平臺“國家氣象網(wǎng)絡(luò)計算 應(yīng)用節(jié)點建設(shè)”(2004DKA50730)資助者St印hen Bourne的名字命名。Bourne shell是一個 交換式的命令解釋器和命令編程語言。Bourne shell可以運行為login shell或者loginshell 的子 shell (subshell)。只有 login 命令可以調(diào)用 Bourne shell 作為一個 login shell。此時,shell 先讀取 /etc/profile 文件和 $H0ME/. profile 文件。/etc/profile 文 件為所有的用戶定制環(huán)境,$H0ME/. profile文件為本用戶定制環(huán)境。最后,shell會等待 讀取你的輸入。Bill Joy于20世紀80年代早期,在Berkeley的加利福尼亞大學開發(fā)了 C shell。它主要是為了讓用戶更容易的使用交互式功能,并把ALGOL風格的語法結(jié)構(gòu)變成了 C語言風格。它新增了命令歷史、別名、文件名替換、作業(yè)控制等功能。Korn Shell有很長 一段時間,只有兩類shell供人們選擇,Bourne shell用來編程,C shell用來交互。為了 改變這種狀況,AT&T的bell實驗室David Korn開發(fā)了 Korn shell。ksh結(jié)合了所有的C shell的交互式特性,并融入了 Bourne shell的語法。因此,Korn shell廣受用戶的歡迎。 它還新增了數(shù)學計算,進程協(xié)作(coprocess)、行內(nèi)編輯(inline editing)等功能。Korn Shell是一個交互式的命令解釋器和命令編程語言.它符合POSIX——一個操作系統(tǒng)的國 際標準.POSIX不是一個操作系統(tǒng),而是一個目標在于應(yīng)用程序的移植性的標準——在源程 序一級跨越多種平臺。Bourne Again Shell (bash)是GNU計劃的一部分,用來替代Bourne shell。它用于基于 GNU 的系統(tǒng)如 Linux.大多數(shù)的 Linux (Red Hat, Slackware, Caldera) 都以bash作為缺省的shell,并且運行sh時,其實調(diào)用的是bash。POSIX shell是Korn shell 的一個變種· POSIX shell 就是 /bin/sh,而 bsh 是 /usr/old/bin/sh。我們目前的自動啟動程序列表是存放在系統(tǒng)的文件中的,當系統(tǒng)啟動之后才允許 對其進行更改,如果自啟動程序出現(xiàn)故障,導致系統(tǒng)宕機,有可能導致系統(tǒng)無法使用。自動 啟動程序列表是存放在系統(tǒng)的文件中固化不能自由控制,并且占內(nèi)存,程序調(diào)試很不方便。

發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有技術(shù)中的不足,提供一種控制系統(tǒng)自啟動程序的實現(xiàn)方 法。本發(fā)明的技術(shù)方案是通過在引導程序的啟動參數(shù)中存儲自啟動程序列表,通過修改自 動啟動程序列表確定需要啟動的程序,可以在系統(tǒng)啟動前通過引導程序?qū)α斜磉M行修改, 也可以當系統(tǒng)啟動之后對列表進行修改。自啟動程序列表分為兩部分系統(tǒng)自帶自啟動程序列表,用戶自啟動程序。自啟動控制程序?qū)⒆x取引導程序存儲的啟動程序列表,并依次啟動指定的程序, 具體步驟讀取系統(tǒng)自帶自啟動程序列表,讀取用戶自啟動程序。自啟動程序列表包含三種內(nèi)容代表不同的狀態(tài),列表為空時、為O時、為其他內(nèi)容 或1時。系統(tǒng)自帶自啟動程序列表包含三種內(nèi)容代表不同的狀態(tài)Al、當列表為空時,系統(tǒng)認為此時為啟動所有系統(tǒng)自帶自啟動程序;A2、當列表值為O時,系統(tǒng)禁止所有系統(tǒng)自帶自啟動程序;A3、其他內(nèi)容時,系統(tǒng)將自動啟動列表中的程序。其他內(nèi)容自啟動程序列表,包含以分號分隔的自啟動程序的路徑。用戶自啟動程序列表包含三種內(nèi)容代表不同的狀態(tài)Bi、當列表為空時,系統(tǒng)認為此時為啟動用戶自啟動程序;B2、當列表內(nèi)容為O時,系統(tǒng)禁止用戶自啟動程序;
4
B3、當列表內(nèi)容為1時,系統(tǒng)認為此時為啟動用戶自啟動程序。系統(tǒng)啟動以后,自啟動控制程序包括以下配置功能Cl、添加自啟動程序;C2、刪除自啟動程序;C3、設(shè)置自啟動程序;C4、使能全部自啟動程序;C5、禁止全部自啟動程序;C6、清除自啟動程序列表;C7、查看當前自啟動程序列表;C8、查看所有自啟動程序列表。系統(tǒng)啟動前引導程序可以對自動啟動列表進行修改和配置,其步驟為D1、從flash中讀取變量列表到內(nèi)存;D2、通過set命令改變變量中的內(nèi)容;D3、通過saveenv命令將變量中的內(nèi)容存儲至flash中。本發(fā)明的有益效果是本發(fā)明解決了嵌入式系統(tǒng)中自啟動程序固化不能自由控制 的弊端,通過控制程序的自啟動,有效的減少了內(nèi)存和CPU的使用。當自動啟動程序出現(xiàn)故 障時,可將系統(tǒng)重新啟動,并在引導程序中對列表中的程序進行修改,再次啟動系統(tǒng)時,將 不啟動故障程序,從而保持系統(tǒng)的穩(wěn)定性與可靠性,另外方便系統(tǒng)調(diào)試。


圖1系統(tǒng)流程框圖;圖2模塊結(jié)構(gòu)具體實施例方式下面結(jié)合附圖對本發(fā)明進行說明。圖1指示了系統(tǒng)流程,包括步驟101 系統(tǒng)啟動,執(zhí)行自動啟動控制程序;步驟201 自動啟動控制程序執(zhí)行系統(tǒng)自帶控制程序自啟動命令;步驟202 系統(tǒng)自帶控制程序從引導參數(shù)中讀取啟動程序列表;步驟203 當啟動列表為空時,選擇默認列表為所有自啟動程序;步驟204 當啟動列表為0時,選擇默認列表為空;步驟205 當啟動列表為其他值時,使用列表中的程序項為默認自啟動程序;其他 值為自啟動程序列表,其內(nèi)容為以分號分隔的自啟動程序的路徑;步驟206 循環(huán)列表中的自啟動程序,如果程序可以運行,則執(zhí)行加載和運行腳 本;步驟301 自動啟動控制程序執(zhí)行用戶自啟動程序啟動命令;步驟302 用戶自啟動控制程序從引導參數(shù)中讀取啟動程序標志;步驟303 當啟動標志為空時,默認選擇啟動用戶自啟動程序;步驟304 當啟動標志為1時,選擇啟動用戶自啟動程序;
步驟305 當啟動標志為0時,選擇關(guān)閉用戶自啟動程序;
步驟401 系統(tǒng)啟動后,系統(tǒng)自帶自啟動控制程序還包括以下命令
1、添加自啟動程序
2、刪除自啟動程序
3、設(shè)置自啟動程序
4、使能所有自啟動程序
5、禁止所有自啟動程序
6、清空自啟動程序
7、顯示當前自啟動程序列表
8、顯示所有自啟動程序列表
步驟402 系統(tǒng)啟動后,用戶自啟動控制程序還包括以下命令
1、使能用戶自啟動程序
2、禁止用戶自啟動程序
3、查看用戶自啟動程序標志
圖2指示了模塊結(jié)構(gòu),包括引導程序、引導參數(shù)、內(nèi)核及應(yīng)用程序,指示了各個模
塊在flass中的存儲結(jié)構(gòu);自啟動程序列表設(shè)置在引導參數(shù)中。自啟動程序的存儲格式為
4B CRC 校 驗存儲的變 量名存儲的 變量內(nèi) 容\0 . \0\0間隔符結(jié)束符其中1、系統(tǒng)自帶自啟動程序列表的存儲變量名為rc. start ;2、用戶自啟動程序的存儲變量名為rc. local。步驟501 系統(tǒng)啟動前引導程序可以對自動啟動列表進行修改和配置。其步驟為1、從flash中讀取變量列表到內(nèi)存;2、通過set命令改變變量中的內(nèi)容;3、通過saveenv命令將變量中的內(nèi)容存儲至flash中。系統(tǒng)啟動后,自啟動控制程序命令實現(xiàn)方法如下附系統(tǒng)自動啟動程序控制腳本# ! /bin/shuboot_env = /usr/local/sbin/uboot_envsave_name = " rc. start"scripts = " /etc/init. d/SOl氺〃case" $1〃 instart)
start_sh = ‘$uboot_env-r$save_name 2 > /dev/nulTif [“ $ ? “ _ne〃 0〃 ] ;thenstart_sl = $scriptselsestart_sl = ~echo$start_sh |sed_e〃 s/$save_name =//〃 _e' s/ ; $//' -e' s/;An/g'、fifor sh in $start_sldoif [-x$sh] ;then$sh boot > /dev/null 2〉&1 && $sh start > dev/null 2 > &1fidone;;add)if [-f" $2〃 ] ;thenstart_sh = ‘ $uboot_env-r $save_name 2 > /dev/null |sed_e〃 s/$save_ name =//" _e' s/ ;$ //' _e' s/ ;A n/g'“echo $start_sh |gr印〃 $2〃 > /dev/nullif[“ $ ? 〃二〃 0〃 ] ;thenecho“ Script already in the start list."exit 1fistart_sl=〃 $start_sh $2〃$uboot_env-w $save_name~ echo $start_sl|sed-e" s// ;/g〃elseecho" Script not found"exit 2fi;;del)if [-f" $2〃 ] ;thenstart_sh =、$uboot_env_r $save_name 2 > /dev/null、if [“ $ ? “ 一ne〃 0〃 ] ;thenecho" No Script found"exit 3fiecho $start_shstart_sl = ~ echo $start_sh sed-e “ s/$save_name = /Γ' _e ' s/ ;
7$//' -e' s/ ;Λ n/g' |grep-ν" $2〃、$uboot_env-w $save_name~ echo $start_sl|sed-e" s// ;/g"elseecho" Script not found"exit 2fi;;set)start_sl = ~echo$@|awk' {for(i = 2 ;i <= NF ;i++) {printf (" % s", $i) ;}}'、for sh in $start_sldoif[-x〃 $sh〃 ] ; thenecho $shelseecho“ $sh not found or cannot be execute"exit 3fidone$uboot_env-w $save_name~ echo $start_sl|sed-e" s// ;/g";;enall)start_sh=〃 ‘‘for sh in $scriptsdostart_sh = " $start—sh $sh〃donestart_sl = ~echo $start_sh sed' s廠[\t]*//;s/[\t]*$//'、$uboot_env-w $save_name~ echo $start_sl|sed-e" s// ;/g";;disall)$uboot_env~w $save_name 0;;clear)$uboot_env~w $save_name;;list)startsh = ‘$uboot_env-r$save_name 2 > /dev/nulTif [“ $ ? “ _ne〃 0〃 ] ;then
for sh in $scriptsdoecho $shdoneelseecho $startsh |sed_e〃 s/$save_name = //" _e〃 s/;$//〃 _e〃 s/ ;
Λη/g"fi
;;listall)for sh in $scriptsdoecho $shdone;;*)echo “ Usage $0 [start add| del |enall |disall | set
丨clear丨list丨listall]";;esacexit 0以上所述僅為本發(fā)明的過程及方法實施例,并不用以限制本發(fā)明,凡在本發(fā)明的 精神和實質(zhì)之內(nèi)所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明保護范圍之內(nèi)。
權(quán)利要求
一種控制系統(tǒng)自啟動程序的實現(xiàn)方法,其特征在于,通過在引導程序的啟動參數(shù)中存儲自啟動程序列表,通過修改自動啟動程序列表確定需要啟動的程序,可以在系統(tǒng)啟動前通過引導程序?qū)α斜磉M行修改,也可以當系統(tǒng)啟動之后對列表進行修改。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,自啟動程序列表分為兩部分系統(tǒng)自帶自 啟動程序列表,用戶自啟動程序。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,自啟動控制程序?qū)⒆x取引導程序存儲 的啟動程序列表,并依次啟動指定的程序,具體步驟讀取系統(tǒng)自帶自啟動程序列表,讀取 用戶自啟動程序。
4.根據(jù)權(quán)利要求1或2或3所述的方法,其特征在于,自啟動程序列表包含三種內(nèi)容代 表不同的狀態(tài),列表為空時、為0時、為其他內(nèi)容或1時。
5.根據(jù)權(quán)利要求1或2或3或4所述的方法,其特征在于,系統(tǒng)自帶自啟動程序列表包 含三種內(nèi)容代表不同的狀態(tài)Al、當列表為空時,系統(tǒng)認為此時為啟動所有系統(tǒng)自帶自啟動程序; A2、當列表值為0時,系統(tǒng)禁止所有系統(tǒng)自帶自啟動程序; A3、其他內(nèi)容時,系統(tǒng)將自動啟動列表中的程序。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,其他內(nèi)容自啟動程序列表,包含以分號分 隔的自啟動程序的路徑。
7.根據(jù)權(quán)利要求1或2或3或4所述的方法,其特征在于,用戶自啟動程序列表包含三 種內(nèi)容代表不同的狀態(tài)Bi、當列表為空時,系統(tǒng)認為此時為啟動用戶自啟動程序;B2、當列表內(nèi)容為0時,系統(tǒng)禁止用戶自啟動程序;B3、當列表內(nèi)容為1時,系統(tǒng)認為此時為啟動用戶自啟動程序。
8.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,系統(tǒng)啟動以后,自啟動控制程序包括 以下配置功能Cl、添加自啟動程序; C2、刪除自啟動程序; C3、設(shè)置自啟動程序; C4、使能全部自啟動程序; C5、禁止全部自啟動程序; C6、清除自啟動程序列表; C7、查看當前自啟動程序列表; C8、查看所有自啟動程序列表。
9.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,系統(tǒng)啟動前引導程序可以對自動啟動 列表進行修改和配置,其步驟為D1、從flash中讀取變量列表到內(nèi)存; D2、通過set命令改變變量中的內(nèi)容; D3、通過saveenv命令將變量中的內(nèi)容存儲至flash中。
全文摘要
本發(fā)明公開了一種控制系統(tǒng)自啟動程序的實現(xiàn)方法,旨在提供嵌入式計算機領(lǐng)域控制系統(tǒng)自啟動程序的實現(xiàn)方法。其技術(shù)方案的要點是,通過在引導程序的啟動參數(shù)中存儲自啟動程序列表,并在系統(tǒng)啟動后加載并執(zhí)行此列表中的自啟動程序;自啟動程序列表分為兩部分系統(tǒng)自帶自啟動程序列表,用戶自啟動程序。本發(fā)明的用途本發(fā)明解決了嵌入式系統(tǒng)中自啟動程序固化不能自由控制的弊端,通過控制程序的自啟動,有效的減少了內(nèi)存和CPU的使用,并為程序的調(diào)試提供了方便。
文檔編號G06F9/445GK101916197SQ20101023397
公開日2010年12月15日 申請日期2010年7月22日 優(yōu)先權(quán)日2010年7月22日
發(fā)明者曲健寧 申請人:北京東土科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
永新县| 宜宾县| 汉寿县| 腾冲县| 乌恰县| 通化县| 陇川县| 宝应县| 青龙| 芮城县| 黔南| 通辽市| 云安县| 汶川县| 滨州市| 乌海市| 沛县| 同江市| 阿拉尔市| 银川市| 化州市| 昌邑市| 柘城县| 鲜城| 独山县| 恭城| 大关县| 远安县| 赣州市| 尼勒克县| 文安县| 丰宁| 巍山| 安化县| 新巴尔虎右旗| 叶城县| 和政县| 大宁县| 朝阳市| 孝义市| 台中市|