linux的字符设备控制,学习手记-字符型设备控制

进入到了iTOP4412开发板的字符型设备控制,主要的学习内容是通过main函数传递参数实现“LED灯的亮灭”、“蜂鸣器发音”、ADC转换等功能。

(这几节配套教程质量不高,测试代码引入了不少可有可无的格式/数值判断语句,真正学习的人会把焦点放在知识点应用上,闲着没事的才去输入一些不合规的字符,让程序运行出错。视频教程耗费大量时间写这些东西,然后一遍遍地编译出错,看着也是醉了)

百度找到的相关定义如下:

ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。当然,也可以通过其他手段实现I/O控制,先这么用着慢慢体会。

字符型设备控制所用到的主要函数是:int ioctl(int fd,int cmd,int req.) fd是打开驱动文件的文件标志符(或称为"句柄"(handle),个人不喜欢这个译法,太装逼(一个简单直观的概念,非得搞个专业词汇来显摆)。其实,它就是个文件标志符,原理上是文件指针.,cmd=command(命令)驱动中定义为输出高/低电平,req=request(请求)驱动中定义为控制对象。

LED、蜂鸣器外设具体操作步骤:

1.编写C程序

1)头文件引用 (和open引用的相同)

2)main函数参数传递

3)open函数打开驱动文件(这里做一下判断以便于debug)

4)成功打开后,调用ioctl函数控制设备输出

5)close函数释放资源

2.通过SSH将.c文件放入Ubantu系统指定目录下,使用arm交叉编译器将.c文件编译成二进制文件

3.通过SSH将二进制文件拷贝至U盘,插入带最小系统的开发板中,挂载之

4.执行该二进制文件,同时传递参数cmd(亮、灭),req.(哪个LED)。(完)

ADC外设具体操作步骤:

1.编写C程序

1)头文件引用 (和read引用的相同)

2)声明char缓存数组变量,并用memset函数对该数组进行初始化。

3)open函数打开驱动文件(这里做一下判断以便于debug)

4)成功打开后,调用read函数读取数据并存入缓存(判断其返回值以便于debug),将缓存内的char强转为int类型待用。

5)量程转换以便输出电阻值(当然,量程可以自定义,例如百分比啥的)

6)close函数释放资源

2.通过SSH将.c文件放入Ubantu系统指定目录下,使用arm交叉编译器将.c文件编译成二进制文件

3.通过SSH将二进制文件拷贝至U盘,插入带最小系统的开发板中,挂载之

4.执行该二进制文件,调节电位器,再执行,再调节...观察数值变化趋势。(完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值