新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式操作系統(tǒng)休眠喚醒后自動運(yùn)行程序的方法

嵌入式操作系統(tǒng)休眠喚醒后自動運(yùn)行程序的方法

作者: 時(shí)間:2012-10-03 來源:網(wǎng)絡(luò) 收藏


本文引用地址:http://m.butianyuan.cn/article/148374.htm



1.2 開關(guān)控制模塊


此模塊的功能是控制守護(hù)進(jìn)程中的Autoflg標(biāo)志位,此標(biāo)志位是在守護(hù)進(jìn)程中的主調(diào)函數(shù)中設(shè)置的,用來控制目標(biāo)腳本和應(yīng)用狀態(tài)。其具體框圖如圖6所示。


1.3 模塊


此模塊實(shí)現(xiàn)守護(hù)進(jìn)程和控制模塊之間的通信,采用系統(tǒng)調(diào)用的方式,目的是通過控制模塊的執(zhí)行來控制守護(hù)進(jìn)程中標(biāo)志位的變化,而這種控制是通過在內(nèi)核中插入信號傳遞模塊來實(shí)現(xiàn)。


1.4 配置文件


配置文件(即執(zhí)行)過程:


(1)執(zhí)行時(shí)首先守護(hù)進(jìn)程,但要通過Autoflg標(biāo)志位保證目標(biāo)腳本和應(yīng)用程序處于不狀態(tài)。


(2)運(yùn)行控制標(biāo)志位函數(shù)修改Autoflg,讓其保證目標(biāo)腳本和應(yīng)用程序可以運(yùn)行。


(3)執(zhí)行快速啟動,系統(tǒng)執(zhí)行快速啟動程序同時(shí)確保保存到磁盤或其他存儲設(shè)備中的標(biāo)志位是處于可以使目標(biāo)腳本和應(yīng)用程序運(yùn)行的狀態(tài)。


(4)因?yàn)榛?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/休眠">休眠的快速啟動是以快照的方式把內(nèi)存內(nèi)容保存到磁盤或其他存儲設(shè)備中,并且一旦執(zhí)行,里面的內(nèi)容將無法修改,所以以后每次啟動時(shí)都能保證守護(hù)進(jìn)程的正常運(yùn)行,同時(shí)也能保證守護(hù)進(jìn)程中的標(biāo)志位處于能夠使目標(biāo)腳本和應(yīng)用程序處于運(yùn)行的狀態(tài),從而使目標(biāo)腳本和應(yīng)用程序能夠正常運(yùn)行。


(5)為了提高CPU的運(yùn)行速度和整個(gè)系統(tǒng)的使用效率,本設(shè)置守護(hù)進(jìn)程在每次啟動目標(biāo)腳本和應(yīng)用程序后都退出。因?yàn)樵O(shè)置守護(hù)進(jìn)程的目的就是在每次啟動時(shí),使其啟動目標(biāo)腳本和應(yīng)用程序,待這項(xiàng)工作完成以后,它的使命也隨之完成(即從系統(tǒng)的運(yùn)行速度和運(yùn)行效率角度來看,已沒有其存在的必要性)。

2 實(shí)驗(yàn)分析


為了確保本文所提方法的實(shí)用性和可靠性,把其應(yīng)用到海爾數(shù)字電視上進(jìn)行了驗(yàn)證,并對驗(yàn)證結(jié)果進(jìn)行了詳細(xì)的分析。


實(shí)驗(yàn)環(huán)境如下:


(1)硬件環(huán)境:MSTAR 6I98電視主板:主頻為700 MHz,內(nèi)存為512 MB,F(xiàn)lash為256 MB,總線為I2C、PCI。


(2)軟件環(huán)境:電視主板中運(yùn)行Linux-2.6.28.9,串口控制臺服務(wù)器為Linux操作系統(tǒng)。


首先對海爾數(shù)字電視采用基于的技術(shù)對其操作系統(tǒng)進(jìn)行改進(jìn),實(shí)現(xiàn)數(shù)字電視的快速啟動。但當(dāng)采用休眠方式啟動后,發(fā)現(xiàn)一些應(yīng)用程序(如/applications/df_

logo、/applications/bin/haier_board)都無法正常運(yùn)行。對此采用ps命令行查看其進(jìn)程是否存在,發(fā)現(xiàn)某些進(jìn)程(如df_logo)在控制臺上有顯示,但在實(shí)際情況中不能正常運(yùn)行,而有些進(jìn)程(如haier_board)根本就沒有顯示。


經(jīng)研究表明,這些腳本或應(yīng)用程序不能正常啟動的原因是:logo文件的執(zhí)行過程或haier_board應(yīng)用程序中的一些動態(tài)界面的顯示過程在休眠時(shí)不能夠完全保存到休眠文件中,從而導(dǎo)致在休眠啟動后雖然用命令行查看這些程序的進(jìn)程在控制臺上有顯示,而電視界面不能按正常的方式顯示。為了解決這個(gè)問題,把本文方法應(yīng)用到操作系統(tǒng)中,最后結(jié)果顯示:df_logo和haier_board兩個(gè)應(yīng)用程序在系統(tǒng)啟動完成后即能正常啟動運(yùn)行,其效果和采用非休眠方式啟動的效果一樣,而且電視界面也能夠正常顯示。


實(shí)驗(yàn)步驟如下:


(1)把不能正常運(yùn)行的應(yīng)用程序和腳本文件(df_logo、haier_board)編寫成目標(biāo)腳本并把它放到指定目錄下;


(2)編寫內(nèi)核模塊,并用系統(tǒng)調(diào)用的方式把模塊插入到內(nèi)核,用交叉編譯生成新的內(nèi)核和模塊的.ko文件;


(3)編寫守護(hù)進(jìn)程函數(shù),并用交叉編譯生成可執(zhí)行文件;


(4)編寫控制模塊(控制模塊里包含可以使操作系統(tǒng)實(shí)現(xiàn)快速啟動的函數(shù)),并用交叉編譯生成可執(zhí)行文件;


(5)重新燒寫新的內(nèi)核;


(6)在/etc/init.d/文件夾的相應(yīng)文件里加一句加載上述模塊的語句,使其在系統(tǒng)每次啟動時(shí)都能夠加載到內(nèi)核;


(7)為此模塊建立設(shè)備文件;


(8)執(zhí)行守護(hù)進(jìn)程可執(zhí)行文件,使其在操作系統(tǒng)后臺運(yùn)行;


(9)執(zhí)行控制模塊的可執(zhí)行文件,使其在改變標(biāo)志位后立即執(zhí)行快速啟動程序,從而保證系統(tǒng)以后每次重啟后都能夠運(yùn)行目標(biāo)腳本和應(yīng)用程序。


本文提出了一種新的方法,實(shí)現(xiàn)了基于休眠的操作系統(tǒng)啟動后,自動運(yùn)行任何形式的目標(biāo)腳本和應(yīng)用程序。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

linux相關(guān)文章:linux教程



上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉