博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux设备驱动程序知识点
阅读量:4285 次
发布时间:2019-05-27

本文共 1491 字,大约阅读时间需要 4 分钟。

  • 注意: 网络设备驱动和块设备驱动不在内

在这里插入图片描述

  • 字符设备驱动
1. 了解linux内核字符设备驱动程序的架构2. 了解linux字符设备驱动相关的api3. 了解linux内存管理的api4. 了解linux内核中断管理的api5. 了解linux内核同步和锁等相关的api6. 了解你索要编写驱动的芯片原理

1. 了解linux内核字符设备驱动程序的架构

1. 申请设备号(主设备号和次设备号)2. 申请 dev_t 结构体,并填充ops,并用cdev_add注册该结构体3. 其他的都是非必要成分,是为了创建节点
该demo 自动创建了节点.直接打开该节点,并读写即可.读写堆栈可看该demo下面的堆栈信息
  • 系统调用触发流程
系统调用的入口是 vector_swi通过例程ret_fast_syscall来返回

2. 了解linux字符设备驱动相关的api

  • 字符设备的描述
struct cdev
  • 设备号的管理
1. 驱动开发者自己定设备号2. 设备号由系统分配
  • file_operations 的实现
结构体的调用	该结构体指针在驱动中被赋值到 struct inode *inode	open 时通过 chrdev_open 找到 file_operations	open 时 将 file_operations 挂载到 struct file *filp	之后的系统调用都是通过 struct file *flp 寻找的 file_operations结构体内容	1. 驱动中没实现的为NULL,编译时决定的.	2. 主要的有 llseak read write poll close unlocked_ioctl compat_ioctl mmap open flush aio_read aio_write fsync , 这些里面该怎么实现私有数据怎么存放	struct file *filp  private_data
  • linux 设备模型管理
bbd 模型

3. 了解linux内存管理的api

  • 设备数据如何和用户程序交互
copy_to_user put_user	copy_from_user get_user
  • 设备DMA操作
  • 设备内存映射到用户空间 mmap

4. 了解linux内核中断管理的api

  • 硬件(MCU+中断控制器gic)中断流程
做了什么事	需要软件做什么事
  • linux内核提供的中断管理相关的接口函数
中断注册		request_irq request_thread_irq	如何编写中断处理程序		底半部			工作队列			软中断			tasklet
  • 中断触发流程
vector_irq

5. 了解linux内核同步和锁等相关的api(只考虑内核空间,不考虑用户空间)

并发源 : 访问临界区的执行线程或代码路径临界区 : 访问和操作共享数据的代码段保护对象 : 资源或者数据,不是代码自旋锁还是互斥锁在中断上下文中毫不犹豫地使用自旋锁,中断上下文不应该有睡眠,隐含睡眠的动作及内核api.如果临界区有睡眠,隐含睡眠的动作及内核api,应避免选择自旋锁自旋锁内的选择	绝对不允许被抢占和睡眠的临界区,用 raw_spin_lock ,否则使用spin_lock

6. 了解你要编写驱动的芯片原理

  • 1/ 接口
uart	i2c	spi	usb
  • 2/ 上电时序
有几根线,时序	pinctrl		定义功能,定义config	gpio 		定义gpio 的 方向和电平
  • 3/ 读写操作
读写间隔,读写寄存器位置.
  • 4/ 中断
怎么去中断标识位	中断流程

转载地址:http://eoigi.baihongyu.com/

你可能感兴趣的文章
【JAVA】三层架构,综合练习
查看>>
【Java】Filter和Listener
查看>>
【Python3】网络编程基础
查看>>
【Flask】制作用户登陆
查看>>
javascript操作html元素CSS属性
查看>>
献给那些前端学习迷茫的人 -----前端开发必备的11项技能!!!
查看>>
《Javascript权威指南》学习笔记之十四:JavaScript内建类
查看>>
JavaScript实现简单日历
查看>>
论”犯贱“ --生活小记
查看>>
JavaScript实现简单图片滚动 --9张图告诉你,C罗欲哭无泪
查看>>
国外优秀JavaScript资源推荐
查看>>
JS中单引号/双引号以及外部js引入的一些问题
查看>>
加班防猝死的十个小建议
查看>>
《JavaScript权威指南》学习笔记之二十---XMLHttpRequest和AJAX解决方案
查看>>
Ubuntu安装二:在VM中安装Ubuntu
查看>>
PHP获取表单方法总结
查看>>
Git学习笔记总结和注意事项
查看>>
谈“穷”-----穷只是一种结果,真正穷的是思维和行动
查看>>
六位创业者分享内心最恐惧的事情
查看>>
JavaScript数值转换总结
查看>>