專利名稱:運用ide接口的多個設(shè)備的文件系統(tǒng)操作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種嵌入式操作系統(tǒng)下實現(xiàn)同時運用多個設(shè)備的文件系統(tǒng)操作方法,特別涉及一種VxWorks操作系統(tǒng)下運用具有IDE接口的多個設(shè)備的文件系統(tǒng)操作方法。
背景技術(shù):
嵌入式操作系統(tǒng)特別是VxWorks操作系統(tǒng)包含用于標(biāo)準(zhǔn)IDE接口的設(shè)備的文件系統(tǒng),該設(shè)備是使用標(biāo)準(zhǔn)IDE接口的硬盤或者電子盤,使得文件系統(tǒng)可以隨意與設(shè)備驅(qū)動程序連接。嵌入式操作系統(tǒng)特別是VxWorks操作系統(tǒng)包括用于串行通信線、磁盤、RAM磁盤、任務(wù)間通信設(shè)備和網(wǎng)絡(luò)上設(shè)備的設(shè)備驅(qū)動程序。同時應(yīng)用程序開發(fā)人員根據(jù)需要,可以寫入額外的驅(qū)動程序。嵌入式操作系統(tǒng)容許不再引導(dǎo)系統(tǒng),而是動態(tài)地安裝和拆去驅(qū)動程序。
嵌入式操作系統(tǒng)特別是VxWorks操作系統(tǒng)的文件系統(tǒng)的原代碼提供的設(shè)備驅(qū)動程序只支持第1個接口的設(shè)備的文件操作;但一些特定的應(yīng)用中,需要在多個設(shè)備中進行文件操作,那么此時原代碼提供的設(shè)備驅(qū)動程序就不能支持其它IDE接口的設(shè)備的正常工作,無法使用多個具有IDE接口的設(shè)備。
發(fā)明內(nèi)容
本發(fā)明的目的是使嵌入式操作系統(tǒng)特別是VxWorks操作系統(tǒng)文件系統(tǒng)在使用多個設(shè)備時能正常工作,擴大嵌入式操作系統(tǒng)特別是VxWorks操作系統(tǒng)的應(yīng)用范圍。
為實現(xiàn)所述目的本發(fā)明的操作方法為 (1)用DOS系統(tǒng)啟動盤把系統(tǒng)啟動起來,在DOS下分區(qū)、格式化設(shè)備; (2)在本機BIOS系統(tǒng)下讀取設(shè)備的參數(shù),包括柱面、磁盤大小、磁盤讀寫頭、中斷號的參數(shù); (3)在板級支持軟件包中修改參數(shù),包括柱面、磁盤大小、磁盤讀寫頭的參數(shù); (4)在板級支持軟件包中進行中斷號參數(shù)修改; (5)板級支持軟件包中關(guān)閉嵌入式操作系統(tǒng)原代碼的設(shè)備驅(qū)動程序; (6)編寫設(shè)備驅(qū)動程序 A、根據(jù)硬盤設(shè)備號、IDE接口控制號進行設(shè)備參數(shù)設(shè)定; B、設(shè)備初始化; C、把設(shè)備設(shè)置為DOS文件系統(tǒng); D、設(shè)置輸入/輸出系統(tǒng)缺省路徑; (7)在應(yīng)用程序的入口處,加載編寫的每個設(shè)備驅(qū)動程序。編程人員即可在多個具有IDE接口的設(shè)備進行文件系統(tǒng)的操作。嵌入式操作系統(tǒng)特別是VxWorks操作系統(tǒng)與硬件的層次關(guān)系分4層 第一層是硬件設(shè)備。
第二層是板級支持軟件包,也稱BSP,對各種板子的硬件功能提供了統(tǒng)一的軟件接口,它包括硬件初始化、中斷產(chǎn)生和處理、硬件時鐘和計時器管理、局域和總線內(nèi)存地址映射、內(nèi)存分配等,每個板級支持包包括一個ROM啟動或其它啟動機制。
第三層是嵌入式操作系統(tǒng)的微內(nèi)核和基本模塊wind是VxWorks操作系統(tǒng)的微內(nèi)核,它的主要特點包括快速多任務(wù)切換、搶占式任務(wù)調(diào)度、任務(wù)間通信手段多樣化等,還有任務(wù)間切換時間短、中斷延遲小、網(wǎng)絡(luò)流量大等特點。
Components是VxWorks操作系統(tǒng)的基本模塊,包括調(diào)試、輸入/輸出系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)等。
第四層是設(shè)備驅(qū)動程序,包括 語句邏輯層程序語句的邏輯是否正確 功能層設(shè)計的功能是否可以實現(xiàn) 任務(wù)層任務(wù)的劃分、調(diào)度是否合理 系統(tǒng)層系統(tǒng)的可靠性、效率 在嵌入式操作系統(tǒng)特別是VxWorks操作系統(tǒng)中,文件系統(tǒng)沒有被束縛到設(shè)備或驅(qū)動程序上,一個設(shè)備可以與任何文件系統(tǒng)相聯(lián)。依靠文件系統(tǒng)、設(shè)備驅(qū)動程序和輸入/輸出系統(tǒng)之間具有同樣的標(biāo)準(zhǔn)接口,程序員編寫的設(shè)備驅(qū)動程序可以使用嵌入式操作系統(tǒng)特別是VxWorks操作系統(tǒng)中的文件系統(tǒng)。其文件操作系統(tǒng)接口關(guān)系為 設(shè)備驅(qū)動程序是操作設(shè)備的軟件模塊,它完成簡單的操作,把數(shù)據(jù)寫入設(shè)備,從設(shè)備中讀取數(shù)據(jù)。在輸入/輸出系統(tǒng)中初始化設(shè)備驅(qū)動程序,應(yīng)用程序調(diào)用的一般文件系統(tǒng)函數(shù),如read()--讀文件函數(shù),實際上是嵌入式操作系統(tǒng)調(diào)用下層驅(qū)動函數(shù)接口,也稱xxDriver()上驅(qū)動程序指定的程序,如xxread()--讀文件函數(shù)。
根據(jù)硬盤設(shè)備號、IDE接口控制號進行設(shè)備參數(shù)設(shè)定,其參數(shù)設(shè)定為 控制器號設(shè)為0,第1個IDE接口插槽的硬盤或者電子盤進行文件系統(tǒng)的操作,如設(shè)備為C盤,設(shè)備號選0;為D盤,設(shè)備號選1。
控制器號設(shè)為1,第2個具有IDE接口插槽的硬盤或者電子盤進行文件系統(tǒng)的操作,如設(shè)備為C盤,設(shè)備號選0;為D盤,設(shè)備號選1。
通過設(shè)定參數(shù),即可在多個具有IDE接口的硬盤或者電子盤進行文件系統(tǒng)的操作。
嵌入式操作系統(tǒng)特別是VxWorks操作系統(tǒng)中文件系統(tǒng)的原代碼提供的設(shè)備驅(qū)動程序只支持第1個IDE接口插槽的設(shè)備的文件操作,本發(fā)明就是通過新的驅(qū)動程序替代原代碼驅(qū)動程序,使得文件系統(tǒng)可以既支持第1個IDE接口插槽的設(shè)備的文件系統(tǒng)操作,又支持另外多個IDE接口插槽的設(shè)備的文件系統(tǒng)操作,方便文件系統(tǒng)操作;擴大嵌入式操作系統(tǒng)的運用范圍。
圖1嵌入式操作系統(tǒng)與硬件的層次關(guān)系示意圖 圖2文件操作系統(tǒng)接口關(guān)系圖 圖3本發(fā)明操作方法流程圖
具體實施例方式 以下為嵌入式操作系統(tǒng)特別是VxWorks操作系統(tǒng)下多個設(shè)備的文件系統(tǒng)操作方法的具體步驟,以第2個IDE接口的設(shè)備為電子盤的文件系統(tǒng)操作為例。其具體步驟為 1.用DOS系統(tǒng)啟動盤把系統(tǒng)啟動起來,分區(qū)、格式化電子盤 fdisk c format c 2.進入本機的BIOS系統(tǒng),讀取電子盤的參數(shù)其柱面為490、磁盤讀寫頭為4、扇區(qū)為32、磁盤大小為32、電子盤中斷號為0xf。
3.在Tornado\target\config路徑下,復(fù)制pcPentium目錄,并把復(fù)制的目錄改名為mypcPentiumBSP,新建一個工程,在新建過程中選mypcPentiumBSP目錄為新工程的板級支持軟件包(BSP)。
4.板級支持軟件包(BSP)中進行柱面、磁盤大小、磁盤讀寫頭參數(shù)設(shè)置,Tornado\target\config\mypcPentiumBSP\sysLib.c中修改結(jié)構(gòu)-ataTypes[][]參數(shù) /*************************************************/ /*******************修改前************************/ /*************************************************/ ATA_TYPE ataTypes[ATA_MAX_CTRLS][ATA_MAX_DRIVES]= { {{761,8,39,512,0xff}, /*ctrl 0 drive 0*/ {761,8,39,512,0xff}}, /*ctrl 0 drive 1*/ {{761,8,39,512,0xff}, /*ctrl 1 drive 0*/ {761,8,39,512,0xff}},/*ctrl 1 drive 1*/ }; /**********************************************************/ /***********************修改后*****************************/ /**********************************************************/ ATA_TYPE ataTypes[ATA_MAX_CTRLS][ATA_MAX_DRIVES]= { {{761,8,39,512,0xff},/*ctrl 0 drive 0*/ {761,8,39,512,0xff}}, /*ctrl 0 drive 1*/ {{490,4,32,512,0xff},/*ctrl 1 drive 0*/<!-- SIPO <DP n="5"> --><dp n="d5"/> {761,8,39,512,0xff}}, /*ctrl 1 drive 1*/ }; /**********************************************************/ 5.板級支持軟件包(BSP)中進行中斷設(shè)置,Tornado\target\config\mypcPentiumBSP\pc.h中 修改中斷號ATA1_INT_LVL參數(shù) /*************************************************/ /*******************修改前************************/ /*************************************************/ #define ATA1_INT_LVL 0x09 /**********************************************************/ /***********************修改后*****************************/ /**********************************************************/ #define ATA1_INT_LVL 0x0f 6.板級支持軟件包(BSP)中關(guān)閉VxWorks操作系統(tǒng)原代碼的設(shè)備驅(qū)動程序,修改Tornado\target\config\comps\src\usrAta.c中函數(shù)usrAtaInit() /*************************************************/ /*******************修改前************************/ /*************************************************/ void usrAtaInit(void) { int ix;<!-- SIPO <DP n="6"> --><dp n="d6"/> ATA_RESOURCE *pAtaResource; for(ix=0;ix<ATA_MAX_CTRLS;ix++) { pAtaResource=&ataResources[ix]; if(pAtaResource->ctrlType==IDE_LOCAL) ataDrv (ix, pAtaResource->drives,pAtaResource->intVector, pAtaResource->intLevel,pAtaResource->configType, pAtaResource->semTimeout,pAtaResource->wdgTimeout); } } /**********************************************************/ /***********************修改后*****************************/ /**********************************************************/ void usrAtaInit(void) { int ix; ATA_RESOURCE*pAtaResource; /*for(ix=0;ix<ATA_MAX_CTRLS;ix++) {<!-- SIPO <DP n="7"> --><dp n="d7"/> pAtaResource=&ataResources[ix]; if(pAtaResource->ctrlType==IDE_LOCAL) ataDrv (ix, pAtaResource->drives,pAtaResource->intVector, pAtaResource->intLevel,pAtaResource->configType, pAtaResource->semTimeout,pAtaResource->wdgTimeout); }*/ } 7.編寫電子盤驅(qū)動程序,根據(jù)電子盤設(shè)備號(drive)、IDE口控制號(ctrl)進行電子盤參數(shù)設(shè)定如C盤drive=0,E盤drive=1;第1個IDE口ctrl=0,第2個IDE口ctrl=1,第3個IDE口ctrl=2,第4個IDE口ctrl=3。
/*********電子盤驅(qū)動程序******/ STATUS DiskFunc() { /******電子盤為C盤,第2個IDE口*****/ int ctrl=1,drive=0; IMPORT ATA_RESOURCE ataResources[]; ATA_RESOURCE *pAtaResource=&ataResources[ctrl]; int fd;<!-- SIPO <DP n="8"> --><dp n="d8"/> /********初始化電子盤******/ if(ataDrv(ctrl,pAtaResource->drives, pAtaResource->intVector,pAtaResource->intLevel, pAtaResource->configType,pAtaResource->semTimeout, pAtaResource->wdgTimeout)==ERROR) { printErr(″Could not initialize.\n″); return(ERROR); } printf(″Attaching to ATA disk device....″); /**********把電子盤設(shè)定為DOS文件系統(tǒng)********/ if(usrAtaConfig(ctrl,drive,″/atal″)==ERROR) { printErr(″usrAtaConfig failed.devName=%s\n″,ATA_NAME); return(ERROR); } /**********設(shè)置輸入/輸出系統(tǒng)缺省路徑*******/ ioDefPathSet(″/atal″); /**************建目錄*******************/ mkdir(″/atal/pathl″);<!-- SIPO <DP n="9"> --><dp n="d9"/> } 8.在應(yīng)用程序的入口處,加載編寫的電子盤驅(qū)動程序 /*********程序入口*********/ void usrAppInit(void) {#ifdef USER_APPL_INIT USER_APPL_INIT;/*for backwards compatibility*/#endif /******入口處加載電子盤驅(qū)動程序****/DiskFunc(); }
權(quán)利要求
1、一種運用多個具有IDE接口的設(shè)備的文件系統(tǒng)操作方法,所述的方法包括以下步驟
(1)用DOS系統(tǒng)啟動盤把系統(tǒng)啟動起來,在DOS下分區(qū)、格式化設(shè)備;
(2)在本機BIOS系統(tǒng)下讀取設(shè)備的參數(shù),包括柱面、磁盤大小、磁盤讀寫頭、中斷號的參數(shù);
(3)在板級支持軟件包中修改參數(shù),包括柱面、磁盤大小、磁盤讀寫頭的參數(shù);
(4)在板級支持軟件包中進行中斷號參數(shù)修改;
(5)板級支持軟件包中關(guān)閉嵌入式操作系統(tǒng)原代碼的設(shè)備驅(qū)動程序;
(6)編寫設(shè)備驅(qū)動程序
A、根據(jù)硬盤設(shè)備號、IDE接口控制號進行設(shè)備參數(shù)設(shè)定;
B、設(shè)備初始化;
C、把設(shè)備設(shè)置為DOS文件系統(tǒng);
D、設(shè)置輸入/輸出系統(tǒng)缺省路徑;
(7)在應(yīng)用程序的入口處,加載編寫的每個設(shè)備驅(qū)動程序。
全文摘要
本發(fā)明涉及一種嵌入式操作系統(tǒng)下實現(xiàn)同時運用多個設(shè)備的文件系統(tǒng)操作方法,特別涉及一種VxWorks操作系統(tǒng)下運用具有IDE接口的多個設(shè)備的文件系統(tǒng)操作方法,本發(fā)明就是通過以下步驟在DOS下分區(qū)、格式化設(shè)備;讀取設(shè)備的參數(shù);修改參數(shù);關(guān)閉嵌入式操作系統(tǒng)原代碼的設(shè)備驅(qū)動程序;編寫設(shè)備驅(qū)動程序;加載編寫的每個設(shè)備驅(qū)動程序;使得文件系統(tǒng)可以既支持第1個IDE接口插槽的設(shè)備的文件系統(tǒng)操作,又支持另外多個IDE接口插槽的設(shè)備的文件系統(tǒng)操作,方便文件系統(tǒng)操作;擴大嵌入式操作系統(tǒng)的運用范圍。
文檔編號G06F9/44GK1632745SQ20031010406
公開日2005年6月29日 申請日期2003年12月22日 優(yōu)先權(quán)日2003年12月22日
發(fā)明者毛江梅 申請人:中國電子科技集團公司第三十研究所