![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设备驱动
文章平均质量分 84
悲伤的小强
我是一只悲伤的小强
展开
-
LVGL WIN32模拟器环境搭建
LVGL PC 模拟器环境搭建原创 2023-02-20 12:01:49 · 1924 阅读 · 1 评论 -
GPIO 模拟SPI
GPIO 模拟SPI总线原创 2022-10-21 17:09:43 · 3033 阅读 · 1 评论 -
ASCII码对照表
记录ASCII码对照表十进制十六进制ASCII码00x00NUL10x01SOH20x02STX30x03ETX40x04EOT50x05ENQ60x06ACK70x07BEL80x08BS90x08HT100x0aLF110x0bVT120x0cFF130x0dCR140x0eSO150x0fSI160x10DLE翻译 2022-04-07 10:53:26 · 9015 阅读 · 0 评论 -
Ubuntu 小知识
设置root密码终端输入sudo passwd root, 在[sudo] password for landry:后输入当前用户的密码安装net服务apt install net-toolsubuntu开启SSH服务SSH分客户端openssh-client和openssh-server安装 SSH :sudo apt-get install openssh-server然后确认sshserver是否启动了:ps -e | grep ssh如果看到sshd那说明ssh-serv原创 2022-02-15 18:46:46 · 568 阅读 · 0 评论 -
LINUX网络驱动开发
1 Linux网络设备驱动程序概述Linux网络驱动程序遵循通用的接口。设计时采用的是面向对象的方法。一个设备就是一个对象(net_device 结构),它内部有自己的数据和方法。一个网络设备最基本的方法有初始化,发送和接收。Linux网络驱动程序的体系结构可以划分为四层:网络协议接口,网络设备接口,设备驱动功能,网络设备和网络媒介层网络驱动程序,最主要的工作就是完成设备驱动功能层。在Linux中所有网络设备都抽象为一个接口,这个接口提供了对所有网络设备的操作集合。由数据构struct net原创 2021-12-08 21:44:38 · 1698 阅读 · 0 评论 -
LINUX块设备驱动开发
1. 块设备驱动程序简介块设备驱动程序提供了面向数据块的设备的访问块设备驱动一般以随机的方式传输数据,并且数据总是具有固定大小的块。典型的块设备是磁盘驱动器类设备。块设备驱动程序简介块设备驱动接口相对复杂,字符设备接口简单。块设备驱动程序对整个系统的性能影响较大,速度和效率是设计块设备驱动要重点考虑的问题。系统中使用缓冲区与访问请求的优化管理(合并与重新排序)来提高系统性能。块设备驱动不可以通过节点直接访问。它需要通过文件系统挂载到目录下访问。当执行mount时则open。Umoun原创 2021-12-07 21:48:54 · 1238 阅读 · 0 评论 -
内存与IO访问
提 纲LINUX内存管理内存存取I/O内存访问接口将设备地址映射到用户空间I/O内存的静态映射DMA1 LINUX内存管理用户空间 0~3GB 内核空间3~4GB 每个进程的用户空间是完全独立、互不相干的,用户进程各自有不同的页表。内核空间是由内核负责映射,不会跟着进程改变。用户程序需要通过系统调用才能访问内核空间。当系统的物理内存大于4GB,则需要使用CPU的扩展分页(需要CPU支持)。2 内存存取2.1 用户空间内存动态申请char *p = (char *)mal原创 2021-11-22 19:52:09 · 623 阅读 · 0 评论 -
中断与时钟
中断处理中断指CPU在执行程序的过程中,出现了某些突发事件时CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。中断分类:外部中断 VS 内部中断可屏蔽中断 VS 不可屏蔽中断向量中断 VS 非向量中断LINUX中处理中断程序的架构如果中断本身要处理的工作很少,则直接在顶半步完成。中断实现在Linux驱动程序中,为设备实现一个中断包含两个步骤:1.向内核注册中断2.实现中断处理函数中断注册在<linux/interrupt.h原创 2021-11-22 19:37:14 · 1008 阅读 · 0 评论 -
异步 IO
IO分类阻塞IO非阻塞IOIO复用(select)异步IO(信号驱动的IO)IO类型1、异步通知:一旦设备就绪,则主动通知应用程序。异步通知意味则设备通知自身可访问,实现了异步I/O.由内核向应用程序发信号,类似中断。2、阻塞I/O意味着一直等待设备可访问后再访问。3、非阻塞IO,设备不可访问,则马上返回。4、轮询I/O,使用poll()查询设备是否可访问。Linux 中最为常见信号的含义及其默认操作,详见Linux信号列表.pdf。重点关注的信号:SIGIO 键盘输入或原创 2021-11-15 19:28:22 · 1821 阅读 · 0 评论 -
阻塞 IO
进程的状态在操作系统中,进程至少要有三种基本状态:运行状态,就绪状态和等待状态。1)就绪——执行:对就绪状态的进程,当进程调度程序按一种选定的策略从中选中一个就绪进程,为之分配了处理机后,该进程便由就绪状态变为执行状态;2)执行——等待:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为等待状态,如进程提出输入/输出请求而变成等待外部设备传输信息的状态,进程申请资源(主存空间或外部设备)得不到满足时变成等待资源状态,进程运行中出现了故障(程序出错或主存储器读写错等)变成等待干预状态等等;原创 2021-11-15 19:11:05 · 1034 阅读 · 0 评论 -
并发与竞争
什么是并发?并发指的是多个执行单元同时被执行。并发的执行单元对共享资源(硬件资源和软件上的全局变量等)的访问就容易导致竞态。即使最简单的设备驱动程序也要考虑并发与竞态并作出相应处理。例:if (copy_from_user(dev->mem+p, buf, count))ret = -EFAULT; goto out;假设有 2 个进程试图写入同一个设备的相同偏移,就会造成数据混乱。导致并发的可能原因1 对称多处理器的多个CPU多个CPU可访问共同的外设和存储器2 单CPU原创 2021-11-09 20:28:47 · 138 阅读 · 0 评论 -
字符设备驱动(2)
字符设备驱动在Linux字符设备驱动程序设计中,有4种非常重要的数据结构:Struct fileStruct inodeStruct cdevStruct file_operationsStruct File(sbh_p92)代表一个打开的文件,系统中每个打开的文件在内核空间都有一个关联的 struct file。它由内核在打开文件时创建, 在文件关闭后,内核释放这个数据结构。重要成员:1 loff_t f_pos /文件读写位置/2 struct file_operations *原创 2021-11-03 23:28:20 · 302 阅读 · 0 评论 -
字符设备驱动(1)
主次设备号字符设备通过字符设备文件来存取。字符设备文件由使用ls -l 的输出的第一列的“C”标识。如果使用ls -l命令,会看到在设备文件项中有两个数(由一个逗号分隔),这些数字就是设备文件的主次设备编号。(举例查看 /dev)设备号作用主设备号用来标识与设备文件相连的驱动程序。次设备号被驱动用来决定操作的是哪个设备。** 主设备号用来体现设备类型** 次设备号用来体现某种设备类型中的第几个Q: 内核中如何描述设备号A:struct dev_t ,实质为unsigned int 32位整数,原创 2021-11-03 23:11:47 · 186 阅读 · 0 评论 -
LINUX 内核模块
范例程序结构模块加载函数(必须)安装模块是被系统自动调用的函数,通过module_init宏来指定,在HelloWorld模块中,模块加载函数为hello_init。一般以__init表示声明。__init是宏,代表这个函数会放到段“.init.text”模块卸载函数(必须)卸载模块是被系统自动调用的函数,通过module_exit宏来指定,在HelloWorld模块中,模块卸载函数为hello_exit。一般以__exit表示声明。模块加载函数和卸载函数的功能程序结构许可证申明(必须原创 2021-11-01 21:36:49 · 173 阅读 · 0 评论 -
Linux设备驱动入门
Linux驱动配置什么是驱动程序驱动程序是应用层和硬件设备之间的一个软件层。它向应用层提供了一组标准化的调用接口,同时完全隐藏设备的工作细节。无操作系统时的设备驱动有操作系统时候的设备驱动有了操作系统之后,设备驱动反而变得更加复杂了,那么还要操作系统做什么?一个复杂的软件系统需要处理多个并发的任务提供内存管理机制,对于LINUX操作提供可以让每个进程都独立的访问硬件设备设备驱动都按照操作系统给出的独立于设备的接口而设计,应用程序将可使用统一的系统调用接口来访问各个设备LIN原创 2021-11-01 20:51:24 · 2160 阅读 · 0 评论