本發(fā)明涉及應(yīng)用程序的運(yùn)行領(lǐng)域,特別是涉及一種嵌入式系統(tǒng)及其自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法。
背景技術(shù):
隨著科技的發(fā)展,客戶對電子產(chǎn)品的需求也越來越多,越來越獨(dú)特,在某些嵌入式電子產(chǎn)品中,除了要滿足客戶的基本需求外,還需要在產(chǎn)品中運(yùn)行第三方的擴(kuò)展程序以實(shí)現(xiàn)更多功能,但是,目前的嵌入式電子產(chǎn)品一般不具備這個(gè)功能。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要提供一種嵌入式系統(tǒng)及其自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法,可以實(shí)現(xiàn)第三方擴(kuò)展程序在嵌入式系統(tǒng)中的自動(dòng)加載和運(yùn)行。
一方面,本發(fā)明提出一種嵌入式系統(tǒng)自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法,包括:
為第三方擴(kuò)展程序的腳本程序和根據(jù)所述腳本程序自動(dòng)啟動(dòng)的源程序在讀寫存儲(chǔ)區(qū)分配存儲(chǔ)區(qū)域;
在系統(tǒng)的啟動(dòng)配置文件中,將所述存儲(chǔ)區(qū)域掛載到所述讀寫存儲(chǔ)區(qū);
在系統(tǒng)的啟動(dòng)配置文件中,判斷所述存儲(chǔ)區(qū)域是否存在所述腳本程序,若是,運(yùn)行所述腳本程序,若否,從所述第三方擴(kuò)展程序的云端服務(wù)器中下載所述腳本程序。
上述自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法,包括為第三方擴(kuò)展程序的腳本程序和根據(jù)所述腳本程序自動(dòng)啟動(dòng)的源程序在讀寫存儲(chǔ)區(qū)分配存儲(chǔ)區(qū)域,在系統(tǒng)的啟動(dòng)配置文件中,將所述存儲(chǔ)區(qū)域掛載到所述讀寫存儲(chǔ)區(qū),在系統(tǒng)的啟動(dòng)配置文件中,判斷所述存儲(chǔ)區(qū)域是否存在所述腳本程序,若是,運(yùn)行所述腳本程序,若否,從所述第三方擴(kuò)展程序的云端服務(wù)器中下載所述腳本程序;在啟動(dòng)配置文件中,將為第三方擴(kuò)展程序分配的存儲(chǔ)區(qū)域掛載在讀寫存儲(chǔ)區(qū),并判斷該存儲(chǔ)區(qū)域是否存在該第三方擴(kuò)展程序的腳本程序,根據(jù)判斷的結(jié)果運(yùn)行該腳本程序,進(jìn)而啟動(dòng)對應(yīng)的第三方擴(kuò)展程序,實(shí)現(xiàn)第三方擴(kuò)展程序的自動(dòng)加載和運(yùn)行。
在其中一個(gè)實(shí)施例中,所述從所述第三方擴(kuò)展程序的云端服務(wù)器中下載所述腳本程序的步驟之前,還包括:
定時(shí)檢測所述系統(tǒng)所在的設(shè)備是否連接網(wǎng)絡(luò)。
在其中一個(gè)實(shí)施例中,所述在系統(tǒng)的啟動(dòng)配置文件中,將所述存儲(chǔ)區(qū)域掛載到所述讀寫存儲(chǔ)區(qū)的步驟之前還包括:
建立所述系統(tǒng)所在的設(shè)備與所述云端服務(wù)器之間的數(shù)據(jù)通信連接。
在其中一個(gè)實(shí)施例中,所述從所述第三方擴(kuò)展程序的云端服務(wù)器中下載所述腳本程序的步驟之后還包括:
對所述腳本程序進(jìn)行校驗(yàn),若校驗(yàn)通過,所述腳本程序正確;若校驗(yàn)未通過,返回定時(shí)檢測所述系統(tǒng)所在的設(shè)備是否連接網(wǎng)絡(luò)的步驟。
在其中一個(gè)實(shí)施例中,所述若校驗(yàn)通過,所述腳本程序正確的步驟之后還包括:
停止定時(shí)檢測所述系統(tǒng)所在的設(shè)備是否連接網(wǎng)絡(luò),并運(yùn)行所述腳本程序。
在其中一個(gè)實(shí)施例中,所述運(yùn)行所述腳本程序的步驟之后,還包括:
根據(jù)所述腳本程序啟動(dòng)所述第三方擴(kuò)展程序的源程序。
另一方面,本發(fā)明提出一種自動(dòng)運(yùn)行第三方擴(kuò)展程序的嵌入式系統(tǒng),包括:
存儲(chǔ)區(qū)域分配模塊,用于為第三方擴(kuò)展程序的腳本程序和根據(jù)所述腳本程序自動(dòng)啟動(dòng)的源程序在讀寫存儲(chǔ)區(qū)分配存儲(chǔ)區(qū)域;
存儲(chǔ)區(qū)域掛載模塊,用于在系統(tǒng)的啟動(dòng)配置文件中,將所述存儲(chǔ)區(qū)域掛載到所述讀寫存儲(chǔ)區(qū);
腳本程序判斷模塊,用于在系統(tǒng)的啟動(dòng)配置文件中,判斷所述存儲(chǔ)區(qū)域是否存在所述腳本程序,若是,運(yùn)行所述腳本程序,若否,從所述第三方擴(kuò)展程序的云端服務(wù)器中下載所述腳本程序。
在其中一個(gè)實(shí)施例中,還包括:
監(jiān)測模塊,用于定時(shí)檢測所述系統(tǒng)所在的設(shè)備是否連接網(wǎng)絡(luò)。
在其中一個(gè)實(shí)施例中,還包括:
通訊連接建立模塊,用于建立所述系統(tǒng)所在的設(shè)備與所述云端服務(wù)器之間的數(shù)據(jù)通信連接。
在其中一個(gè)實(shí)施例中,還包括:
校驗(yàn)?zāi)K,用于對所述腳本程序進(jìn)行校驗(yàn),若校驗(yàn)通過,所述腳本程序正確;若校驗(yàn)未通過,返回定時(shí)檢測所述系統(tǒng)所在的設(shè)備是否連接網(wǎng)絡(luò)的步驟;
定時(shí)結(jié)束模塊,用于在所述校驗(yàn)?zāi)K對所述腳本程序的校驗(yàn)通過時(shí),停止定時(shí)檢測所述系統(tǒng)所在的設(shè)備是否連接網(wǎng)絡(luò),并運(yùn)行所述腳本程序;
程序啟動(dòng)模塊,用于根據(jù)所述腳本程序啟動(dòng)所述第三方擴(kuò)展程序的源程序。
附圖說明
圖1為一實(shí)施例中嵌入式系統(tǒng)自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法的方法流程圖;
圖2為另一實(shí)施例中嵌入式系統(tǒng)自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法的方法流程圖;
圖3為一實(shí)施例中自動(dòng)運(yùn)行第三方擴(kuò)展程序的嵌入式系統(tǒng)的系統(tǒng)方框圖;
圖4為另一實(shí)施例中自動(dòng)運(yùn)行第三方擴(kuò)展程序的嵌入式系統(tǒng)的系統(tǒng)方框圖。
具體實(shí)施方式
參見圖1,圖1為一實(shí)施例中嵌入式系統(tǒng)自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法的方法流程圖。
在本實(shí)施例中,該嵌入式系統(tǒng)自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法包括:
s101,為第三方擴(kuò)展程序的腳本程序和根據(jù)所述腳本程序自動(dòng)啟動(dòng)的源程序在讀寫存儲(chǔ)區(qū)分配存儲(chǔ)區(qū)域。
在嵌入式設(shè)備的開發(fā)階段,在讀寫存儲(chǔ)區(qū),如閃存中劃分一個(gè)數(shù)據(jù)存儲(chǔ)區(qū),用于存放第三方擴(kuò)展程序的腳本程序和根據(jù)所述腳本程序自動(dòng)啟動(dòng)的源程序。如在閃存的第四塊mtdblock4中劃出一個(gè)分區(qū)作為該數(shù)據(jù)存儲(chǔ)區(qū),該分區(qū)的大小為512kb,不限于512kb。
閃存為是一種長壽命的非易失性(在斷電情況下仍能保持所存儲(chǔ)的數(shù)據(jù)信息)的存儲(chǔ)器,電子可擦除。存儲(chǔ)在閃存中的第三方擴(kuò)展程序可以長久保存,同時(shí)也可以刪除。
s102,在系統(tǒng)的啟動(dòng)配置文件中,將所述存儲(chǔ)區(qū)域掛載到所述讀寫存儲(chǔ)區(qū)。
該系統(tǒng)為linux(嵌入式)操作系統(tǒng),該操作系統(tǒng)中設(shè)置有啟動(dòng)配置文件etc/init.d/rcs。在設(shè)備啟動(dòng)時(shí),會(huì)自動(dòng)運(yùn)行該啟動(dòng)配置文件,該啟動(dòng)配置文件中設(shè)置有若干條指令,設(shè)備啟動(dòng)后將自動(dòng)順序執(zhí)行這些指令,將設(shè)備運(yùn)行起來。
在設(shè)備的開發(fā)階段,在系統(tǒng)的啟動(dòng)配置文件etc/init.d/rcs目錄下,通過掛載指令將上述用于存放腳本程序和源程序的存儲(chǔ)區(qū)域掛載到閃存的分區(qū)上,該指令可以為mount-tjffs2/dev/mtdblock4/data。在設(shè)備啟動(dòng)時(shí),通過該掛載指令可以訪問該存儲(chǔ)區(qū)域。
該設(shè)備采用的系統(tǒng)不限于linux(嵌入式)操作系統(tǒng)。
s103,在系統(tǒng)的啟動(dòng)配置文件中,判斷所述存儲(chǔ)區(qū)域是否存在所述腳本程序,若是,進(jìn)入步驟s104,若否,進(jìn)入步驟s105。
在設(shè)備的開發(fā)階段,在系統(tǒng)的啟動(dòng)配置文件中,設(shè)置相應(yīng)的指令判斷用于存放腳本程序和源程序的存儲(chǔ)區(qū)域是否存在該腳本程序。
s104,運(yùn)行所述腳本程序。
s105,從所述第三方擴(kuò)展程序的云端服務(wù)器中下載所述腳本程序。
設(shè)備啟動(dòng)后,啟動(dòng)配置文件自動(dòng)運(yùn)行,順序執(zhí)行文件內(nèi)的指令,通過上述掛載指令訪問用于存放腳本程序和源程序的存儲(chǔ)區(qū)域,判斷該存儲(chǔ)區(qū)域是否存在該腳本程序,若存在,運(yùn)行該腳本程序,進(jìn)而啟動(dòng)對應(yīng)的第三方擴(kuò)展程序的源程序;若不存在,從第三方擴(kuò)展程序的云端服務(wù)器中下載該腳本程序。
當(dāng)設(shè)備首次啟動(dòng)時(shí),自動(dòng)從云端服務(wù)器中將需要下載的第三方擴(kuò)展程序,包括腳本程序和源程序下載下來,其中需要下載的第三方擴(kuò)展程序的名稱在設(shè)備的開發(fā)階段通過指令的形式存儲(chǔ)在設(shè)備中,該名稱和第三方擴(kuò)展程序在云端服務(wù)器中的名稱一致。如設(shè)備中的腳本程序的名稱和云端服務(wù)器中的腳本程序的名稱均命名為bootstrap.sh,在設(shè)備啟動(dòng)后,通過一致的名稱從云端服務(wù)器中找到對應(yīng)的腳本程序并下載,下載后存儲(chǔ)在上述存儲(chǔ)區(qū)域。
當(dāng)設(shè)備再次啟動(dòng)時(shí),啟動(dòng)配置文件自動(dòng)運(yùn)行,檢測到上述存儲(chǔ)區(qū)域已經(jīng)存在需要下載的第三方擴(kuò)展程序的腳本程序,直接運(yùn)行該腳本程序并啟動(dòng)對應(yīng)的源程序,不需要再次下載,節(jié)省了啟動(dòng)時(shí)間,加快了啟動(dòng)速度。
該設(shè)備包括所有需要運(yùn)行第三方擴(kuò)展程序的嵌入式電子產(chǎn)品,如路由器、智能工控設(shè)備、pos/atm機(jī)等。
上述嵌入式系統(tǒng)自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法,在啟動(dòng)配置文件中,將為第三方擴(kuò)展程序分配的存儲(chǔ)區(qū)域掛載在讀寫存儲(chǔ)區(qū),并判斷該存儲(chǔ)區(qū)域是否存在該第三方擴(kuò)展程序的腳本程序,根據(jù)判斷的結(jié)果運(yùn)行該腳本程序,進(jìn)而啟動(dòng)對應(yīng)的第三方擴(kuò)展程序,實(shí)現(xiàn)第三方擴(kuò)展程序的自動(dòng)加載和運(yùn)行,當(dāng)設(shè)備再次啟動(dòng)時(shí),第三方擴(kuò)展程序的相關(guān)文件已經(jīng)下載在了上述存儲(chǔ)區(qū)域中,無需再次下載,節(jié)省了啟動(dòng)時(shí)間,加快了啟動(dòng)速度。
參見圖2,圖2為另一實(shí)施例中嵌入式系統(tǒng)自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法的方法流程圖。
在本實(shí)施例中,該嵌入式系統(tǒng)自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法包括:
s201,為第三方擴(kuò)展程序的腳本程序和根據(jù)所述腳本程序自動(dòng)啟動(dòng)的源程序在讀寫存儲(chǔ)區(qū)分配存儲(chǔ)區(qū)域。
s202,建立系統(tǒng)所在的設(shè)備與所述云端服務(wù)器之間的數(shù)據(jù)通信連接。
在設(shè)備的開發(fā)階段,該設(shè)備為讀寫存儲(chǔ)區(qū)所在的設(shè)備,同時(shí)也為承載系統(tǒng)的設(shè)備,通過開源代碼實(shí)現(xiàn)wget命令及產(chǎn)品的cmd接口。wget是一個(gè)從網(wǎng)絡(luò)上自動(dòng)下載文件的自由工具,用于遠(yuǎn)程下載,cmd接口用于與產(chǎn)品進(jìn)行數(shù)據(jù)交互。通過該設(shè)置可以實(shí)現(xiàn)設(shè)備與云端服務(wù)器之間的數(shù)據(jù)通信連接。
s203,在系統(tǒng)的啟啟動(dòng)配置文件中,將所述存儲(chǔ)區(qū)域掛載到所述讀寫存儲(chǔ)區(qū)。
s204,在系統(tǒng)的啟動(dòng)配置文件中,判斷所述存儲(chǔ)區(qū)域是否存在所述腳本程序,若是,進(jìn)入步驟s205,若否,進(jìn)入步驟s207。
s205,運(yùn)行所述腳本程序。
s206,根據(jù)所述腳本程序啟動(dòng)所述第三方擴(kuò)展程序的源程序。
s207,定時(shí)檢測所述系統(tǒng)所在的設(shè)備是否連接網(wǎng)絡(luò),若是,進(jìn)入步驟s208,若否,回到步驟s207。
s208,從所述第三方擴(kuò)展程序的云端服務(wù)器中下載所述腳本程序。
若檢測到存儲(chǔ)區(qū)域不存在需要下載的第三方擴(kuò)展程序的腳本程序,啟動(dòng)監(jiān)測程序,首先檢測設(shè)備是否連接網(wǎng)絡(luò),若否,啟動(dòng)定時(shí)器進(jìn)行定時(shí)檢測,當(dāng)檢測到網(wǎng)絡(luò)正常連接之后,設(shè)備與第三方擴(kuò)展程序的云端服務(wù)器可以進(jìn)行數(shù)據(jù)通信,從該云端服務(wù)器中下載對應(yīng)的腳本程序。
s209,對所述腳本程序進(jìn)行校驗(yàn),若校驗(yàn)通過,進(jìn)入步驟s210,若校驗(yàn)未通過,回到步驟s207。
下載第三方擴(kuò)展程序的腳本程序之后對其進(jìn)行crc(cyclicredundancycheck,循環(huán)冗余校驗(yàn)),驗(yàn)證該腳本程序是否正確,若正確,表明下載成功,運(yùn)行該腳本程序并啟動(dòng)對應(yīng)的源程序,第三方擴(kuò)展程序開始運(yùn)行;若不正確,重新回到上述監(jiān)測過程,并在網(wǎng)絡(luò)正常連接時(shí),重新下載該腳本程序。
s210,停止定時(shí)檢測所述系統(tǒng)所在的設(shè)備是否連接網(wǎng)絡(luò),并回到步驟s205。
腳本程序下載成功之后,停止上述監(jiān)測過程,運(yùn)行該腳本程序,啟動(dòng)所述第三方擴(kuò)展程序的源程序。
當(dāng)?shù)谌綌U(kuò)展程序更新升級(jí)時(shí),只需要通過設(shè)備與其云端服務(wù)器之間的數(shù)據(jù)通信連接獲取其更新通知,重新從其云端服務(wù)器中下載新的腳本程序和對應(yīng)的源程序,觸發(fā)更新升級(jí)的行為由第三方擴(kuò)展程序來決策,無需設(shè)備自帶的系統(tǒng)進(jìn)行干預(yù),如果第三放擴(kuò)展程序出現(xiàn)異常,也不會(huì)對系統(tǒng)中的宿主程序造成影響。
上述嵌入式系統(tǒng)自動(dòng)運(yùn)行第三方擴(kuò)展程序的方法,建立設(shè)備和第三方擴(kuò)展程序的云端服務(wù)器之間的數(shù)據(jù)通信連接,當(dāng)設(shè)備首次啟動(dòng)時(shí),系統(tǒng)的啟動(dòng)配置文件自動(dòng)運(yùn)行,在該文件中判斷用于存儲(chǔ)第三方擴(kuò)展程序的腳本程序和源程序的存儲(chǔ)區(qū)域是否存在該腳本程序,若不存在,定時(shí)檢測設(shè)備是否連接網(wǎng)絡(luò),若是,從該云端服務(wù)器中下載該腳本程序并運(yùn)行,進(jìn)而啟動(dòng)對應(yīng)的源程序,第三方擴(kuò)展程序開始運(yùn)行;當(dāng)設(shè)備再次啟動(dòng)時(shí),存儲(chǔ)區(qū)域已經(jīng)存在該腳本程序,直接運(yùn)行并啟動(dòng)對應(yīng)的源程序,第三方擴(kuò)展程序開始運(yùn)行,無需再次下載,節(jié)省了啟動(dòng)時(shí)間,加快了啟動(dòng)速度。
參見圖3,圖3為一實(shí)施例中自動(dòng)運(yùn)行第三方擴(kuò)展程序的嵌入式系統(tǒng)的系統(tǒng)方框圖。
在本實(shí)施例中,該自動(dòng)運(yùn)行第三方擴(kuò)展程序的嵌入式系統(tǒng)包括:
存儲(chǔ)區(qū)域分配模塊10,用于為第三方擴(kuò)展程序的腳本程序和根據(jù)所述腳本程序自動(dòng)啟動(dòng)的源程序在讀寫存儲(chǔ)區(qū)分配存儲(chǔ)區(qū)域。
存儲(chǔ)區(qū)域掛載模塊11,用于在系統(tǒng)的啟動(dòng)配置文件中,將所述存儲(chǔ)區(qū)域掛載到所述讀寫存儲(chǔ)區(qū)。
腳本程序判斷模塊12,用于在系統(tǒng)的啟動(dòng)配置文件中,判斷所述存儲(chǔ)區(qū)域是否存在所述腳本程序,若是,運(yùn)行所述腳本程序,若否,從所述第三方擴(kuò)展程序的云端服務(wù)器中下載所述腳本程序。
參見圖4,在其中一個(gè)實(shí)施例中,該自動(dòng)運(yùn)行第三方擴(kuò)展程序的嵌入式系統(tǒng)還包括:
監(jiān)測模塊13,用于定時(shí)檢測所述系統(tǒng)所在的設(shè)備是否連接網(wǎng)絡(luò)。
在其中一個(gè)實(shí)施例中,該系統(tǒng)還包括:
通訊連接建立模塊14,用于建立所述系統(tǒng)所在的設(shè)備與所述云端服務(wù)器之間的數(shù)據(jù)通信連接。
在其中一個(gè)實(shí)施例中,該系統(tǒng)還包括:
校驗(yàn)?zāi)K15,用于對所述腳本程序進(jìn)行校驗(yàn),若校驗(yàn)通過,所述腳本程序正確;若校驗(yàn)未通過,返回從所述第三方擴(kuò)展程序的云端服務(wù)器中下載所述腳本程序的步驟。
在其中一個(gè)實(shí)施例中,該系統(tǒng)還包括:
定時(shí)結(jié)束模塊16,用于在所述校驗(yàn)?zāi)K15對所述腳本程序的校驗(yàn)通過時(shí),停止定時(shí)檢測所述系統(tǒng)所在的設(shè)備是否連接網(wǎng)絡(luò),并運(yùn)行所述腳本程序。
程序啟動(dòng)模塊17,用于根據(jù)所述腳本程序啟動(dòng)所述第三方擴(kuò)展程序的源程序。
上述自動(dòng)運(yùn)行第三方擴(kuò)展程序的嵌入式系統(tǒng),建立設(shè)備和第三方擴(kuò)展程序的云端服務(wù)器之間的數(shù)據(jù)通信連接,當(dāng)設(shè)備首次啟動(dòng)時(shí),系統(tǒng)的啟動(dòng)配置文件自動(dòng)運(yùn)行,在該文件中判斷用于存儲(chǔ)第三方擴(kuò)展程序的腳本程序和源程序的存儲(chǔ)區(qū)域是否存在該腳本程序,若不存在,定時(shí)檢測設(shè)備是否連接網(wǎng)絡(luò),若是,從該云端服務(wù)器中下載該腳本程序并運(yùn)行,進(jìn)而啟動(dòng)對應(yīng)的源程序,第三方擴(kuò)展程序開始運(yùn)行;當(dāng)設(shè)備再次啟動(dòng)時(shí),存儲(chǔ)區(qū)域已經(jīng)存在該腳本程序,直接運(yùn)行并啟動(dòng)對應(yīng)的源程序,第三方擴(kuò)展程序開始運(yùn)行,無需再次下載,節(jié)省了啟動(dòng)時(shí)間,加快了啟動(dòng)速度。
以上所述實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡潔,未對上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。