随笔分类 -  linux驱动

摘要:一、概念 platform是一个驱动管理模型,它不是从设计驱动的角度考虑,而是从管理驱动的角度考虑 platform device:描述硬件信息的部分(硬件不通,信息或资源不同)。 platform driver:描述软件信息的部分(对硬件资源的操作,保持相对稳定,较少修改)。 platform b 阅读全文
posted @ 2022-01-08 11:40 轻轻的吻 阅读(221) 评论(0) 推荐(0) 编辑
摘要:参考链接:linux驱动并发与竞态 Linux内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的API。 一、引言 在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步 阅读全文
posted @ 2022-01-03 16:04 轻轻的吻 阅读(158) 评论(0) 推荐(0) 编辑
摘要:一、概述 输入子系统驱动模型也是字符设备驱动的一种模型,是对普通字符设备驱动的封装,专门用于输入类型的设备。 嵌入式linux系统中的输入类型设备:按键、鼠标、键盘、触摸屏、游戏手柄、手写板等等。 二、输入子系统驱动模型的优点 简化普通字符设备驱动的设计步骤 给应用程序提供统一的标准接口。硬件平台不 阅读全文
posted @ 2022-01-02 15:09 轻轻的吻 阅读(194) 评论(0) 推荐(0) 编辑
摘要:先看一个在无操作系统的情况下,用C语言访问片上寄存器的范例,这是访问S3C2440UART1的FIFO控制寄存器的示例,先定义FIFO控制寄存器为UFCON1: #define UFCON1 (*(volatile unsigned *)Ox50004008) //*UART 1 FIFO控制寄存器 阅读全文
posted @ 2021-12-27 11:51 轻轻的吻 阅读(321) 评论(0) 推荐(0) 编辑
摘要:一、往用户空间传递数据 1.传递单个数据 put_user()可以向用户空间传递单个数据。单个数据并不是指一个字节数据,对ARM而言, put_user一次性可传递一个char , short或者int型的数据,即1、2或者4字节。用put_user比用copy_to_user要快: int put 阅读全文
posted @ 2021-12-27 11:10 轻轻的吻 阅读(3906) 评论(0) 推荐(0) 编辑
摘要:1、命令字字段说明 每个 ioctl 命令实际上都是一个 32 位整型数,各字段和含义如表 2.1 所示。 例如, 0x82187201 是带长度为 0x218 的参数读命令,功能号为 1,幻数用 ASCII 表示是“r”,实际上这个命令是<linux/msdos_fs.h>中的 VFAT_IOCT 阅读全文
posted @ 2021-12-27 10:12 轻轻的吻 阅读(696) 评论(0) 推荐(0) 编辑
摘要:1、代码 #include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/cdev.h>#include <linux/fs.h>#include <linux/device.h>#in 阅读全文
posted @ 2021-12-26 16:12 轻轻的吻 阅读(223) 评论(0) 推荐(0) 编辑
摘要:6818看门狗定时器框图 由上图可知PCLK经过8bit分频器分频然后再经过最高1/128的分频就是看门狗定时器的时钟频率,8bit最大分频系数为255,t_watchdog=200M/(255+1)/128=6103HZ.所以最小频率为6103HZ. 如果我们想要实现10s不喂狗就产生复位信号的功 阅读全文
posted @ 2021-12-26 16:09 轻轻的吻 阅读(476) 评论(0) 推荐(0) 编辑
摘要:1、静态映射 linux内核中已经对物理地址进行了映射,使用IO_ADDRESS宏进行映射 2、动态映射 使用ioremap进行动态映射 阅读全文
posted @ 2021-12-26 11:08 轻轻的吻 阅读(151) 评论(0) 推荐(0) 编辑
摘要:一、分析原理图及特性 图1 图2 S5p6818的ADC0是去读取电源电压,通过ADC0将模拟量转化为数字量。 图2为ADC内部构造图 ADC特性 分辨率:12bit 最大转换率:1Msps(main clock:6MHZ,sampling clock:1MHZ). 供电0~1.8V 输入频率:DC 阅读全文
posted @ 2021-12-25 16:49 轻轻的吻 阅读(589) 评论(1) 推荐(0) 编辑
摘要:一、什么是内核时钟 操作系统的正常工作,需要硬件提供一下系统时钟,系统利用该时钟进行轮转调度、sleep....,这个时钟信号就叫内核时钟(系统节拍、滴答时钟)。系统节拍(内核时钟)频率越高,所能识别的时间刻度越精细,实时性好,但系统负担加重 内核时钟的设置,要结合处理器的性能 二、内核时钟(HZ) 阅读全文
posted @ 2021-12-25 12:10 轻轻的吻 阅读(786) 评论(0) 推荐(0) 编辑
摘要:一、概述 1、工作队列(workqueue) 工作队列,将一个work提交到workqueue上,而这个workqueue是挂到一个特殊内核进程上,当这个特殊内核进程被调度时,会从workqueue上取出work来执行。当然这里的work是与函数联系起来的。这个过程表现为,此刻先接下work,但不立 阅读全文
posted @ 2021-12-19 17:47 轻轻的吻 阅读(694) 评论(0) 推荐(0) 编辑
摘要:一、概述 linux驱动中,阻塞一般就是用等待队列来实现,将进程停止在此处并睡眠下,直到条件满足时,才可通过此处,继续运行。在睡眠等待期间,wake up时,唤起来检查条件,条件满足解除阻塞,不满足继续睡下去。 上一个按键中断程序中,在读取按键键值时,应用层在read时一直返回键值,并不会阻塞在re 阅读全文
posted @ 2021-12-19 17:08 轻轻的吻 阅读(95) 评论(0) 推荐(0) 编辑
摘要:一、linux内核中中断的使用 1、申请中断 static inline int __must_check request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,const char *name, void 阅读全文
posted @ 2021-12-19 10:51 轻轻的吻 阅读(442) 评论(0) 推荐(0) 编辑
摘要:1、linux设备 Linux系统中的设备可以分为字符设备、块设备和网络设备这3类。(1)字符设备 字符设备是能够像字节流一样被访问的设备,当对字符设备发出读写请求,相应的IO操作立即发生。Linux系统中很多设备都是字符设备,如字符终端、串口、键盘、鼠标等。在嵌入式Linux 开发中,接触最多的就 阅读全文
posted @ 2021-12-13 22:28 轻轻的吻 阅读(1087) 评论(0) 推荐(0) 编辑
摘要:一、杂项设备驱动设计步骤 1、定义一个杂项设备结构体 struct miscdevice { int minor; //次设备号 const char *name; //设备名和设备文件名一致 const struct file_operations *fops; //文件操作集合 struct l 阅读全文
posted @ 2021-12-12 16:31 轻轻的吻 阅读(158) 评论(0) 推荐(0) 编辑
摘要:1、接口函数介绍 很多设备除了读和写之外,还需要驱动提供其它操作能力,例如:获取LCD尺寸、修改串口波特率 (应用层)函数原型: #include <sys/ioctl.h> int ioctl(int fd, unsigned long request, ...); (driver)提供接口函数 阅读全文
posted @ 2021-12-11 17:55 轻轻的吻 阅读(538) 评论(0) 推荐(0) 编辑
摘要:TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69 开发板端: tftp -g -r 下载的文件名 ip地址 TFTP是一个传输文件的简 阅读全文
posted @ 2021-12-08 22:25 轻轻的吻 阅读(338) 评论(0) 推荐(0) 编辑
摘要:1、writel函数 原型: #include <linux/io.h> void writel(unsigned char data , unsigned int addr ) 参数: data:要写入的一个字节的数据. addr:32位I/O 地址。 功能: 往内存映射的 I/O 空间上写数据, 阅读全文
posted @ 2021-12-05 18:14 轻轻的吻 阅读(3665) 评论(0) 推荐(0) 编辑
摘要:打开kernel源码可见有以下几个宏: #define KERN_EMERG "<0>" /* system is unusable */ #define KERN_ALERT "<1>" /* action must be taken immediately */ #define KERN_CRI 阅读全文
posted @ 2021-12-05 17:06 轻轻的吻 阅读(313) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示