- 論壇徽章:
- 0
|
原帖由 Godbach 于 2008-11-17 16:43 發(fā)表 ![]()
一般AD采集的時(shí)候,write函數(shù)是用不上的。偶覺得?刂泼钜话愣纪ㄟ^ioctl來實(shí)現(xiàn),用戶空間除了發(fā)送命令之外,就剩下讀取轉(zhuǎn)換的數(shù)據(jù)了。而在用DAC的時(shí)候,是需要用write而用不上read的。
恩,我也是這么理解的。但是 我的這個(gè)驅(qū)動(dòng)中 就是看不懂ioctl這個(gè)函數(shù)到底是怎么工作的。
int adc0809_ioctl(struct inode *inode,
struct file *flip,
unsigned int command,
unsigned long arg)
{
int err = 0;
switch (command) {
case IOCTRL_ADC_0:
adc_write_addr = ADC_0;
//printk("adc0809_ioctl: adc addr: %x\n",adc_write_addr);
/* start collect and convert */
(*(volatile unsigned char *) adc_write_addr) = (char) arg;
return 0;
case IOCTRL_ADC_1:
adc_write_addr = ADC_1;
(*(volatile unsigned char *) adc_write_addr) = (char) arg;
return 0;
case IOCTRL_ADC_2:
adc_write_addr = ADC_2;
書上是說 ioctl用來選著 相應(yīng)的管腳(ADC_0.1.2.3...)和觸發(fā)中斷。
不解的是函數(shù)這里只是一個(gè)地址的傳遞,怎么就實(shí)現(xiàn)了對管腳的選著呢???還有下面只是對相應(yīng)的地址賦值,怎么又是觸發(fā)了中斷呢。最主要就是這里看不懂郁悶啊 |
|