
linux内核驱动开发
Ablerry
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
正则表达式好的文章
参考这篇博客https://deerchao.cn/tutorials/regex/regex.htm转载 2020-08-18 14:47:53 · 144 阅读 · 0 评论 -
linux常用的一些链表以及内存操作函数
1.对双向链表的具体操作如下:list_add ———向链表添加一个条目list_add_tail ———添加一个条目到链表尾部__list_del_entry ———从链表中删除相应的条目list_replace———用新条目替换旧条目list_del_init———从链表中删除条目后重新初始化list_move———从一个链表中删除并加入为另一个链表的头部list_move_tail———从一个列表中删除并加入为另一个链表的尾部list_is_last———测试是否为链表的最后一个条目转载 2020-08-18 14:32:21 · 1070 阅读 · 0 评论 -
总线、设备和驱动
总线程序vbus.c#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/device.h>///*当接入一个USB设备时,USB总线会立即感知到这件事,并去遍历所有注册在USB总线上的驱动(这个过程可能会自动加载一个匹配的驱动)然后调用驱动中的一段代码来探测是否能否驱动插入的USB设备,如果可以,那么原创 2020-07-24 15:50:49 · 238 阅读 · 0 评论 -
平台设备以及驱动
1.0设备和驱动没有分离,设备的信息是硬编码在驱动代码中,这个驱动代码程序造成了极大地限制,如果硬件有所改动,那么必然要修改驱动代码,这样驱动的通用性就比较差2.0没有类似于windows系统中的设备管理器3.0不能自动创建设备节点4.0驱动不能自动加载5.0U盘和SD卡不能自动挂载`要满足linux设备模型,就必须有总线,设备和驱动。但是有的设备并没有对应的物理总线,比如LED,RTC和蜂鸣1器内核开发了一种虚拟的总线-----platform总线,用来连接这些没有物理总线的设备或者一些不支持原创 2020-07-24 14:11:31 · 263 阅读 · 0 评论 -
gcc以及makefile规则应用
gcc生成ELF文件的整个流程1.0预处理#开头的都是预处理,生成.i文件2.0编译对预处理过后的代码进行词法与句法分析,生成目标系统的汇编代码,生成.s文件3.0汇编对汇编文件进行优化,生成目标代码文件,生成.o文件4.0链接解析目标代码的外部引用,将多个目标代码文件连接为一个可执行文件gcc命令gcc 【选项】 文件列表过程控制选项(1)预处理选项(-E)(2)编译选项(-S)(3)汇编选项(-c)输出目标选项控制-o filenamegcc main.c原创 2020-06-30 09:28:30 · 183 阅读 · 0 评论 -
字符设备驱动基础
一、mknod 命令解析mknode /dev/vser0 c 256 0#创建一个 设备文件vser0 主设备号 256 次设备号 0 c 代表 字符设备 b 代表块设备ls -li /dev/vser0-i选项是列出/dev/vser0的节点号过程 :1.0创建一个设备节点(一个节点代表一个文件),2.0 mknod = make node3.0这个节点号在文件系统中是唯一的4.0将初始化的节点写入磁盘 ##总结:mknod 命令将文件名、文件类型和主次设备号等信息保存在磁盘上原创 2020-06-02 16:14:37 · 256 阅读 · 0 评论 -
linux内核驱动代码模块之Makefile解析
#makefileifeq($(KERNELRELEASE),) ifeq($(ARCH),arm) KERNELDIR ?= 内核的makeconfig目录的所在地 ROOTFS ?=/nfs/rootfselse KERNELDIR ?= PC平台的build工具endif PWD := $(shell pwd) #对当前模块的所在目录的变量PWD定义 module...原创 2020-04-23 13:42:27 · 436 阅读 · 0 评论 -
linux内核驱动代码模块之内核模块参数传递解析
在进行内核module被加载时调用,但是该函数不接受参数,如果我们在模块加载时对模块的行为进行控制,就不是很方便。因此希望通过模块参数的形式来允许用户通过命令行指定参数值,然后赋值给对应的变量,这个过程发生在调用模块初始化函数之前。#include <linux/init.h>#include <linux/kernel.h>#include <linux/mo...原创 2020-04-23 13:56:51 · 255 阅读 · 0 评论