1、Linux驅動程序調用方法概述
在Linux環(huán)境中,通過驅動程序來操作相應硬件接口,對于應用程序來說就是打開特定文件名稱的文件,然后通過常規(guī)的對文件讀寫或控制的方法,來實現對硬件接口的訪問。在嵌入式系統(tǒng)中,對硬件的讀寫通常采用ioctl函數的形式,其典型的流程如下:
流程 | 實現功能 | 實現函數 | 備注 |
第一步 | 打開文件 | fd = open(devname, …); | 特定設備文件名稱 |
第二步 | 訪問接口 |
rc = ioctl(fd, cmd, …); rc = read(fd, buf, size); rc = write(fd, buf, size); |
可能調用多次,多種cmd |
第三步 | 關閉文件 | close(fd); | 不再操作,則關閉 |
其中ioctl(…)的基本定義為:
int ioctl(int fd, int cmd, unsigned long arg);
輸入參數 fd: 為打開文件獲得的文件描述符
cmd: 操作命令碼,在EM9280_drivers.h頭文件中以定義
arg: 需要傳遞的參數指針,不同的命令必須嚴格匹配相應的參數類型
返回值 = 0: 調用成功
= EBADF: 非法文件描述符
= EFAULT: arg指向不可訪問的內存空間
= EINVAL: 非法的cmd或arg參數
= ENOTTY: 文件描述符未指向特殊的字符設備
2、EM9280 AD驅動的應用
EM9280共有2路低速的模擬AD通道AIN1和AIN2,輸入量程為0 – 3.6V,AD分辨率12-bit。所謂低速通道,表示這兩個通道只能用于外部的直流或慢變化類型的信號。除此之外,EM9280還可提供對輸入的+5V電源電壓、+3.3V電源電壓以及核心CPU基片溫度的監(jiān)測。
EM9280 AD驅動是以模塊(module)形式提供給客戶,相應的驅動文件放在根文件系統(tǒng)中:/lib/modules/2.6.35.3/em9280_ad.ko,EM9280 AD驅動所對應的設備文件名稱為“/dev/em9280_ad”。
首先需要加載em9280_ad驅動:
#>insmod /lib/ modules/2.6.35.3/em9280_ad.ko
然后應用程序可打開AD驅動程序對應的設備文件“/dev/em9280_ad”,可多次調用read( )來讀取各類數據。read( )函數需要帶上如下結構數據:
struct daq_info
{
unsigned int cmd; // 命令碼 = 0, 1, 2, ....
unsigned int data; // 返回的AD數據
char unit[16]; // 返回的單位字串: 'mV', 'Kalvin'等
} ;
其中cmd參數用于定義AD通道:
0 ---- AD采集通道1
1 ---- AD采集通道2
2 ---- +5V電源電壓
3 ---- +3.3V電源電壓
6 ---- 核心CPU基片溫度
注意返回的溫度參數均為開氏溫度,轉換成攝氏溫度,大致減去273即可。在此基礎上,應用程序的典型代碼如下:
int main(int argc, char** argv)
{
int fd;
int i1, rc;
int nChIndex;
struct daq_info ad;
printf('Driver em9280_ad test v1.0\n');
nChIndex = 1;
if(argc > 1)
{
nChIndex = atoi( argv[1] );
}
fd = open('/dev/em9280_ad', O_RDWR);
printf('open file = %d\n', fd);
if( fd<0 )
{
return -1;
}
ad.cmd = nChIndex;
for( i1=0; i1<20; i1++)
{
rc = read(fd, (void*)&ad, sizeof(ad) );
printf( 'nValue = %d (%s)\n', ad.data, ad.unit );
sleep(1);
}
close(fd);
printf('close file\n');
return 0;
}
-
嵌入式系統(tǒng)
+關注
關注
41文章
3625瀏覽量
129755 -
Linux
+關注
關注
87文章
11345瀏覽量
210395
發(fā)布評論請先 登錄
相關推薦
龍芯中科榮獲2024年度信息技術應用創(chuàng)新工作委員會卓越貢獻成員單位
芯盛智能榮獲2024年信息技術應用創(chuàng)新工作委員會卓越貢獻成員單位
中科曙光入選2024年江蘇省信息技術應用創(chuàng)新優(yōu)秀解決方案名單
飛騰助力首屆教育信息技術應用創(chuàng)新大賽圓滿落幕
有方科技參編的信息技術團體標準發(fā)布
龍芯中科助力2024首屆教育信息技術應用創(chuàng)新大賽成功舉辦
拓維信息參與牽頭組建!長沙新一代信息技術產教聯(lián)合體正式獲批
![拓維<b class='flag-5'>信息</b>參與牽頭組建!長沙新一代<b class='flag-5'>信息技術</b>產教聯(lián)合體正式獲批](https://file.elecfans.com/web2/M00/46/D0/pYYBAGKV5wiAQkFLAAA0HUPKaH4034.jpg)
中科創(chuàng)達榮獲2024年軟件和信息技術服務優(yōu)秀企業(yè)
易智瑞榮獲“信息技術應用創(chuàng)新工作委員會技術活動單位”
![易智瑞榮獲“<b class='flag-5'>信息技術</b>應用創(chuàng)新工作委員會<b class='flag-5'>技術</b>活動單位”](https://file1.elecfans.com/web1/M00/F2/B0/wKgaoWcIkFiAdRIeAACXthvg4R0222.png)
信創(chuàng)國產化背景下的工控主板發(fā)展現狀
梯度科技入選2023年信息技術應用創(chuàng)新解決方案名單
linux驅動程序如何加載進內核
龍芯中科成功舉辦拉薩市信息技術創(chuàng)新應用工作交流會
龍芯中科突破“卡脖子”難題,構建新型信息技術體系
龍芯中科三項信創(chuàng)方案入圍工信部2023年信息技術應用創(chuàng)新應用示范案例名單
![龍芯中科三項信<b class='flag-5'>創(chuàng)</b>方案入圍工信部2023年<b class='flag-5'>信息技術</b>應用創(chuàng)新應用示范案例名單](https://file1.elecfans.com/web2/M00/C3/19/wKgZomXpfwWAT16RAABpz-I0EpY201.png)
評論