基于eCos系統的SPCE3200中SD卡驅動(dòng)程序的開(kāi)發(fā)
設備驅動(dòng)程序是介于硬件和嵌入式系統eCos內核之間的軟件接口,是一種底層的、專(zhuān)用于某一硬件的軟件組件。在eCos系統[1]中,設備驅動(dòng)程序以包(Package)的形式存在,當需要使用該設備時(shí),通過(guò)eCos環(huán)境配置工具把該設備驅動(dòng)程序包加載到內核中,編譯后生成一個(gè)庫文件,用戶(hù)使用時(shí),只需要打開(kāi)該設備,直接調用接口A(yíng)PI函數即可。設備驅動(dòng)程序的作用如圖1所示[2]。
在eCos系統中一般把設備分為4類(lèi):字符設備、塊設備、網(wǎng)絡(luò )接口、其他設備。
SPCE3200是凌陽(yáng)公司推出的一款32位支持嵌入式系統處理器,其內部具有SD卡控制器,屬于塊設備類(lèi)[3]。對SPCE3200內部的SD卡控制器必須編寫(xiě)驅動(dòng)程序,以便完成SD卡的讀寫(xiě)操作。下面將介紹具體實(shí)現過(guò)程,這里規定SD卡使用“/dev/sd”作為其名稱(chēng)。
1 建立SD卡驅動(dòng)程序目錄結構
在編寫(xiě)驅動(dòng)程序前,首先需要為SD卡驅動(dòng)建立其目錄結構。eCos系統要求所有驅動(dòng)程序均保存在/packages/devs目錄下的對應子目錄內,按照圖2所示在eCos/ packages/devs/sd/Spce3200 目錄下分別建立名為“cdl”、“include”、“current”3個(gè)目錄,分別用于存放SD卡驅動(dòng)所需的cdl文件、驅動(dòng)程序頭文件和源程序文件。
2 建立SD卡驅動(dòng)程序文件
在cdl目錄內,首先創(chuàng )建一個(gè)叫做“sd_spce3200.cdl”的文件。然后,在src目錄內建立一個(gè)名為“sd_spce3200.c”驅動(dòng)程序的源程序,并將名為“sd_card_driver_spce3200.c”的文件復制到src目錄內,該文件是凌陽(yáng)科技提供的針對SPCE3200內部SD卡控制器的基本操作程序。
3 設計SD卡驅動(dòng)的CDL文件
組件定義語(yǔ)言CDL(Component Definition Language)是eCos組件框架的一個(gè)關(guān)鍵部分。eCos中所有的包都必須具有至少一個(gè)CDL腳本對其進(jìn)行描述[4]。CDL腳本包含了該包中所有配置選項的詳細信息,并提供了如何對該包進(jìn)行編譯的信息[5]。這里,在CDL文件的模板框架中添加關(guān)于SD卡配置項的代碼如下:
cdl_package CYGPKG_DEVS_SD_SPCE3200 {
display 'SD driver for SPCE3200'
include_dir cyg/io
compile sd_card_driver_spce3200.c
compile -library=libextras.a sd_spce3200.c
description 'SD driver for SCORE SPCE3200'
cdl_component CYGPKG_DEVS_SD_SPCE3200_OPTIONS {
display'CompileOptions'
flavor rnone
no_define
cdl_optionCYGDAT_DEVS_SD_SPCE3200_NAME{
display 'Device name for theSDDriver'
flavor data
default_value{''/dev/sd''}
description ' This option specifies the name of the sd-card device'
}
}
}
評論