《原子嵌入式Linux驱动开发详解与实战》第一章阅读心得
[复制链接]
最近一周粗略看了下本书的
第1章字符设备驱动开发
字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。
LINUX应用程序对驱动的调用如图
前两章重点讲解了LINUX的设备驱动的开发
LINUX上做过一些应用
但是驱动我自己真的还没有完整的做过
一:详细讲解了字符设备驱动的开发实验
能够对 chrtest 进行打开和关闭操作,设备打开和关闭是最基本的要求,几乎所有的设备都得提供打开和关闭的功能。
对 chrtest 进行读写操作
假设 chrtest 这个设备控制着一段缓冲区(内存),应用程序需要通过 read 和 write 这两个函数对 chrtest 的缓冲区进行读写操作。所以需要实现 file_operations 中的 read 和 write 这两个函数
书中列举了一个例子,详细分析了chrdevbase_read和chrdevbase_write函数的编写内容
tatic ssize_t chrdevbase_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt)
{
int retvalue = 0;
/* 接收用户空间传递给内核的数据并且打印出来 */
retvalue = copy_from_user(writebuf, buf, cnt);
if(retvalue == 0){
printk("kernel recevdata:%s\r\n", writebuf);
}else{
printk("kernel recevdata failed!\r\n");
}
//printk("chrdevbase write!\r\n");
return 0;
}
驱动函数完成后就需要编写应用APP函数
其实APP函数简单了很多,编写测试 APP 就是编写 Linux 应用,操作有关的一些函数,比如open、 read、 write 和 close 这四个函数。
编写完成后就是编译
加在驱动文件insmod chrdevbase.ko
然后运行
|