機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
實(shí)時(shí)操作系統(tǒng)VxWorks下電子盤驅(qū)動(dòng)程序的開發(fā)
實(shí)時(shí)操作系統(tǒng)VxWorks下電子盤驅(qū)動(dòng)程序的開發(fā)
 更新時(shí)間:2008-8-18 14:58:57  點(diǎn)擊數(shù):48
【字體: 字體顏色
  
    如圖1所示,DOC2000由系統(tǒng)接口單元(System Interface)、系統(tǒng)引導(dǎo)模塊(Boot Block)、錯(cuò)誤檢測(cè)與更正單元(EDC/ECC),閃存控制單元(Flash Control)以及Flash存儲(chǔ)介質(zhì)組成。其中系統(tǒng)接口單元為DOC2000提供一個(gè)類SRAM 接口,使之能通過CPU的本地總線、ISA總線、SRAM 總線、EEPROM 接口建立與操作系統(tǒng)的連接。DOC提供片選信號(hào)(CE#)、讀寫信號(hào)(WE#)、使能信號(hào)(OE#)以及13位寬的地址線(A[0:12])和8位寬的數(shù)據(jù)總線(D[0:7])。每個(gè)DOC占用系統(tǒng)8K的地址空間,通過地址窗的滑動(dòng)來訪問整個(gè)DOC空間。系統(tǒng)引導(dǎo)模塊用來響應(yīng)PC機(jī)結(jié)構(gòu)中BIOS擴(kuò)展設(shè)備的搜索。當(dāng)BIOS檢測(cè)到DOC2000為擴(kuò)展設(shè)備時(shí),它可以執(zhí)行保存在系統(tǒng)引導(dǎo)模塊中的TrueFFS的驅(qū)動(dòng)程序,通過系統(tǒng)調(diào)用TrueFFS格式轉(zhuǎn)換軟件,系統(tǒng)可以把DOC2000映射為普通的硬盤從而方便地進(jìn)行讀寫。DOC2000的錯(cuò)誤檢測(cè)和更正模塊用來提供數(shù)據(jù)錯(cuò)誤的檢測(cè)、更正以及數(shù)據(jù)保護(hù)。Flash控制模塊主要用來完成TrueFFS地址與Flash介質(zhì)地址之間的轉(zhuǎn)換、數(shù)據(jù)傳輸控制等功能。

2 電子盤設(shè)備驅(qū)動(dòng)程序的基本結(jié)構(gòu)流程
    在VxWorks下,設(shè)備驅(qū)動(dòng)程序既可以嵌入內(nèi)核隨系統(tǒng)一起啟動(dòng),也可以作為可加載模塊在系統(tǒng)啟動(dòng)之后運(yùn)行。
2.1可選加載方式
    可選加載方式驅(qū)動(dòng)電子盤是一種比較常用的方式。它是把驅(qū)動(dòng)程序制作成一個(gè)可獨(dú)立運(yùn)行的應(yīng)用程序,當(dāng)需要的時(shí)候可以選擇加載到用戶程序集中。利用可選加載方式驅(qū)動(dòng)電子盤的第一步是要確定電子盤所占用的系統(tǒng)地址窗的范圍。一般主機(jī)板都給出了幾個(gè)可以選擇的范圍,通過跳線可以設(shè)置電子盤的地址窗的起始、結(jié)束地址。啟動(dòng)VxWorks下TrueFFS驅(qū)動(dòng)程序,根據(jù)實(shí)際的地址將地址窗參數(shù)配置好。第二步將TrueFFS映射成DOS文件系統(tǒng)。調(diào)用tffsMakeHandle()函數(shù)得到驅(qū)動(dòng)器的描述符。將此描述符傳遞給驅(qū)動(dòng)器句柄。然后定義一個(gè)塊設(shè)備的指針用于保存一個(gè)虛擬DOS文件系統(tǒng)分區(qū)的信息。調(diào)用tffsDevCreate()函數(shù)將剛才檢測(cè)到句柄的TrueFFS驅(qū)動(dòng)器映射成DOS文件系統(tǒng)分區(qū),并將該函數(shù)的返回值傳遞給定義好的塊設(shè)備指針。至此,就完成了TrueFFS到DOSFS的映射過程。完成DOSFS設(shè)備初始化后,在Tornado的Shell環(huán)境下運(yùn)行devs命令就可以看到tffs設(shè)備已經(jīng)在系統(tǒng)設(shè)備列表中了。第三步,讀寫電子盤上的文件。設(shè)置好要讀寫的文件的文件名、路徑。利用標(biāo)準(zhǔn)C++的文件系統(tǒng)函數(shù)就可以方便的讀寫文件了。

2.2嵌入系統(tǒng)方式
    嵌入系統(tǒng)方式比可選加載方式要復(fù)雜。它將驅(qū)動(dòng)程序嵌入系統(tǒng)內(nèi)核中,這樣電子盤可以在系統(tǒng)啟動(dòng)的時(shí)候被驅(qū)動(dòng)。這種方式主要應(yīng)用于系統(tǒng)引導(dǎo)文件放在電子盤上的情況。嵌入系統(tǒng)方式又分為X86機(jī)的嵌入方式和其它(如PowerPC,MIPs等)嵌入方式。這里以X86方式為例。
    第一步修改目標(biāo)BSP目錄下的config.h文件,增加電子盤設(shè)備的定義,修改引導(dǎo)設(shè)備。第二步修改系統(tǒng)BSP目錄下的bootconfig.C文件,將電子盤的驅(qū)動(dòng)程序加入。第三步修改系統(tǒng)BSP目錄下的usrconfig.h文件,調(diào)用電子盤的驅(qū)動(dòng)程序。

3 設(shè)備驅(qū)動(dòng)程序示例
    下面給出DOC2000的可選加載方式的驅(qū)動(dòng)程序的框架代碼,嵌入系統(tǒng)方式下的DOC2000的驅(qū)動(dòng)程序涉及VxWorks系統(tǒng)內(nèi)核,這里不作詳細(xì)敘述。

3.1定義頭文件、常量、全局變量
#include "fldrvvxw.h"
#include "dosFsLib.h"
long tfsAddresses[2]={0xd8000,0xdfff};
/*定義電子盤的地址窗范圍*/
int iSocket=0;
/*TrueFFS內(nèi)部變量*/
int iDisk=0; /*電子盤數(shù)量(1個(gè))*/
nt handle; /*驅(qū)動(dòng)器句柄*/
nt flags=0;
/*將TrueFFS仿真成DOS FAT16的格式*/
BLK_DEV * tffs_blk_dev; /*塊設(shè)備指針*/
char FilePath[50]="/tffs0/test.txt"; /*文件路徑*/
File fp; /*文件指針*/

3.2 驅(qū)動(dòng)電子盤并將TrueFFS映射為DOSFS
DOCDriver()
{
tfsSetup(1,tfsAddresses); /*TrueFFS驅(qū)動(dòng)程序*/
handle= tfsMakeHandle(iSocket,iDisk);
/{得到驅(qū)動(dòng)器的句柄{/
tfs_ blk_dev=tfsDevCreate(handle,flags);
/*得到仿真DOSFS的塊設(shè)備信息*/
dosFsInit (20);
/*初始化DOSFS的參數(shù)*/
dosFsDevInit ("/tfs0/",tffs_blk_dev,NULL); /*初始化DOSFS設(shè)備*/
taskDelay(sysClkRateGet()/2); /*系統(tǒng)延時(shí)*/
}

3.3 電子盤文件的讀寫
FileReadWrite()
{
fp=fopen(FilePath,"r+");
…… /*相關(guān)文件操作*/
fclose(fp);
}

<!--自定義字段-->
  • 上一篇: 單片機(jī)控制的步進(jìn)電機(jī)自動(dòng)定位系統(tǒng)
  • 下一篇: 實(shí)時(shí)操作系統(tǒng)VxWorks的內(nèi)核任務(wù)調(diào)度研究
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1