字符驱动
文章平均质量分 88
# 字符驱动
lucky tiger
要一直前进,一直静下心来学习。
展开
-
深入linux内核架构1.3.14——Kernel设备模型基础框架kobject
内核中很多地方都需要跟踪记录C语言中结构的实例(借鉴C++对象,内核里面有许多的结构体实例化),尽管这些对象的用法大不相同,但各个不同子系统的某些操作非常相似,例如引用计数,这导致了代码复制。在内核版本2.5开发期间,内核采用了一般性的内核方法来管理内核对象,所引入的框架并不只是为了防止代码复制,同时也为内核不同部分管理的对象提供了一致的视图,在内核的许多部分可以有效地使用相关信息,如电源管理。一般性内核对象机制可用于执行下列对象操作:引用计数 管理对象链表(集合) 集合加锁 将对象属性导原创 2021-04-08 22:30:47 · 325 阅读 · 0 评论 -
Linux设备驱动程序中常用的ioctl方法和read/write方法的异同点
ioctl是iocontrol的缩写,就是IO控制。行为上:简单来说,如果你在写驱动程序时zhi候,碰到一些IO操作,在逻辑上不能归类到read,不能归类到write,那就可以认为是ioctl的部分。read和write应该是写入和读出数据的,应该是作为单纯的数据交换的方式来处理。而ioctl则是控制read和write一些选项的。比如:你做了一个通用的读写IO端口的驱动模块。read和write是从端口读写数据的,但是更改读写的端口,这个操作应该如何处理呢?显然用ioctl来实现比较合理。比如你的re原创 2020-06-28 19:16:16 · 3009 阅读 · 0 评论 -
linux下的helloworld实践1
新建一个.c文件#include<stdio.h>int main(){printf(“hello,world!/n”);return 0;}编译生成可执行文件gcc hello.c -o hello./hello接着试一下gcc编译的东西能不能在我的ARM板子上执行我用scp把可执行文件hello传到开发板上去打开超级终端ssh root@192.168.2...原创 2019-02-23 21:40:34 · 704 阅读 · 0 评论 -
Linux驱动hello入门实践
新建这样一个目录,里面新建hello.c 和Makefile文件hello.c 如下:#include &amp;lt;linux/init.h&amp;gt;#include &amp;lt;linux/module.h&amp;gt;static int __init hello_init(void) {printk(“Hello, world\n”);return 0;}static void __exit原创 2019-03-01 11:21:28 · 306 阅读 · 0 评论 -
字符驱动------实战代码分析之mknod命令(4)
命令mknod,可以生成块设备文件或者字符设备文件,格式为:mknod [OPTION] NAME TYPE [MAJOR MINOR]OPTION是选项,比较有用的是-m,表示生成的设备文件的权限;NAME是生成的设备的名称TYPE是设备类型,b表示块设备,c表示字符设备,p表示管道MAJOR是主设备号,MINOR是次设备号,主设备号是由文件/usr/include/linu...原创 2020-01-09 19:39:12 · 641 阅读 · 0 评论 -
第一个字符驱动操作及代码分析
#include <linux/module.h>#include <linux/types.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/mm.h>#include <linux/sched.h>#include <linux/...原创 2019-07-24 16:06:28 · 162 阅读 · 0 评论 -
驱动helloworld
#include <linux/init.h>#include <linux/sched.h>#include <linux/module.h>MODULE_LICENSE("GPL");MODULE_AUTHOR("feixiaoxing");MODULE_DESCRIPTION("This is just a hello module!\n...原创 2019-07-23 15:01:35 · 154 阅读 · 0 评论 -
字符驱动------实战代码分析(3)
基本知识:(为什么要用主设备号和次设备号)主设备号被系统用来确定驱动程序(设备类型:如USB设备,硬盘设备),次设备号被驱动程序用来确定具体的设备。#include<linux/module.h>#include<linux/kernel.h>#include<linux/cdev.h>#include<linux/fs.h>#in...原创 2020-01-08 21:45:15 · 116 阅读 · 0 评论 -
read write学习理解1
位置内核文件下的fs里面cd linux-4.15/fsSYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, size_t, count)1...原创 2019-07-23 22:06:28 · 193 阅读 · 0 评论 -
字符驱动 cdev.h
之前一直找不到,原来在内核头文件下面版本一致然后去相应头文件下查找原创 2019-07-23 14:13:06 · 212 阅读 · 0 评论 -
.ko 文件(驱动模块文件)
.ko文件是kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核外边, 需要的时候插入内核,不需要时卸载。挂载的是.ko文件,驱动模块文件...原创 2019-07-18 19:55:36 · 2790 阅读 · 0 评论 -
cdev解释
cdev是linux用来管理字符设备的结构体,其在内核中采用数组结构设计,这样系统中有多少个主设备号就约定了数组大小,此设备号采用链表管理,同一主设备号下可以有多个子设备。设备即文件,上层应用要访问设备,必须通过文件,cdev中包含file_operations结构体,该结构体就是驱动的文件操作集合。cdev定义在include/linux/cdev.h中,如下。具体实现在fs/cha...原创 2019-07-18 12:41:38 · 1400 阅读 · 0 评论 -
字符驱动1
通过/proc/devices 来查看对应的设备号。通过mknod /dev/xxx c major minor 来产生设备节点。从而将设备挂接到/dev文件夹下。或者在编写驱动程序时动态的获取主设备号以及动态产生设备节点。字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、...原创 2019-07-14 14:48:37 · 101 阅读 · 0 评论