基于Linux-2.6.16的高速模數(shù)轉(zhuǎn)換器AD7859L的應(yīng)用
3.1 平臺(tái)資源
在2.6內(nèi)核中將每個(gè)設(shè)備的資源用結(jié)構(gòu)platform_device描述,該結(jié)構(gòu)體在/include/linux/platform_device.h中定義。AD7859L驅(qū)動(dòng)的平臺(tái)資源如下。在文件/arch/arm/roach―s3c2410/devs.c中添加下述結(jié)構(gòu)體。
該宏定義在map.h文件中。第二組描述了AD7859L設(shè)備的中斷向量號(hào)。flags描述資源類型,設(shè)備驅(qū)動(dòng)會(huì)根據(jù)flags來獲取相應(yīng)的資源信息。在結(jié)構(gòu)體static struct platform_device*smdk2410_devices[]__initdata添加上述s3c_device_ad7859adc平臺(tái)資源。該結(jié)構(gòu)體在/arch/arm/mach―s3c2410/mach―smdk2410.C文件中定義。
3.2 MISC類設(shè)備
在AD7859L的結(jié)構(gòu)體內(nèi)創(chuàng)建一個(gè)miscdevice類型設(shè)備驅(qū)動(dòng)的結(jié)構(gòu)體指針,增添一個(gè)misc類型設(shè)備。該結(jié)構(gòu)體在/include/miscdevice.h中定義。
在AD7859L驅(qū)動(dòng)的probe函數(shù)中調(diào)用misc_register(stmctmiscdevice*misc)函數(shù),對(duì)misc類設(shè)備注冊(cè),這個(gè)函數(shù)會(huì)為內(nèi)核注冊(cè)一個(gè)misc類型設(shè)備,如果minor被設(shè)置為MISCDYNAMIC_MINOR,系統(tǒng)會(huì)動(dòng)態(tài)的為該設(shè)備分配一個(gè)次設(shè)備號(hào),用以區(qū)分其他的設(shè)備。不同類型的設(shè)備調(diào)用的設(shè)備注冊(cè)和注銷函數(shù)有所不同。misc類設(shè)備的注銷函數(shù)為misc_deregister(struct miscdevice}misc)。成功均返回零,否則返回一個(gè)錯(cuò)誤代碼。
3.3 應(yīng)用
測(cè)試的應(yīng)用程序相對(duì)簡單,利用open函數(shù)打開設(shè)備文件,通過ioctl函數(shù)設(shè)置AD7859L的各個(gè)采樣參數(shù),包括選擇哪幾路通道進(jìn)行采樣,采樣的時(shí)間間隔,采樣的方式等等。利用read函數(shù)讀取緩沖區(qū)數(shù)據(jù),在程序退出時(shí)調(diào)用close函數(shù)關(guān)閉設(shè)備文件。
4 結(jié)語
AD7859L是一款高速、低功耗的模數(shù)轉(zhuǎn)換器,在測(cè)量行業(yè)有著很廣闊的應(yīng)用前景。隨著大家對(duì)Linux的認(rèn)可,嵌入式Linux會(huì)被越來越多的人所接受。通過介紹在Linux下以MISC類設(shè)備方式開發(fā)AD7859L的設(shè)備驅(qū)動(dòng)程序,讓大家更清楚的理解MISC類型設(shè)備的操作方法。
評(píng)論