![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动开发
JY小成
这个作者很懒,什么都没留下…
展开
-
搭建自己的基于motion移动物体的监控系统
参考文章:http://code.csdn.net/news/2820789https://www.zybuluo.com/daguang740/note/148852http://blog.csdn.net/ljmrs/article/details/38318835http://blog.csdn.net/raptor/article/details/42010原创 2017-07-29 12:55:40 · 2419 阅读 · 0 评论 -
内存区域的划分
本文主要讲解应用层(c/c++内存划分)、linux内核层(X86体系和ARM系统)关于内存上面的划分相关知识点。 一、应用层 1. 在c中分为这几个存储区:堆、栈、全局区(静态区)、常量区 (1).栈 - 由编译器自动分配释放。 栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除原创 2017-08-12 16:38:48 · 12391 阅读 · 1 评论 -
Linux驱动入门总结
Linux驱动入门总结 1. linux用户空间和内核空间.用户空间:包含用户编写的应用软件,c库整个4g的虚拟地址空间,用户空间包含了0-3g。1用户不能访问内核的地址空间,包括代码和数据,不能直接操作硬件2.用户程序访问硬件通过系统调用和硬件中断来实现访问和两者数据转移。3.用户和内核都有自己独立的栈。内核空间:包含驱动,文件系统,平台代码等等,内核空间包含原创 2017-07-27 14:46:55 · 732 阅读 · 0 评论 -
Linux内核数据结构
Linux内核数据结构1.内核的数据类型:bool:布尔类型 inbool:布尔反值charp:字符指针short:短整型 ushort:int:整形 uintlong ulong:2.内核编程不允许处理浮点数:cpu处理浮点型数据的效率极低---用户空间处理浮点型数据如果对内核模块的某一个变量进行修改,必须要声明:内核模块参数;module_param(name,tyoe,p原创 2017-07-27 14:47:17 · 1107 阅读 · 0 评论 -
Linux驱动之I2C总线
1. I2C总线的硬件特性:两线式串行总线.用于连接CPU和外设之间的通信接口需要2根信号线,时钟控制线SCL和数据传输信号线SDA.串行:CPU和外设之间传输是一个周期传输一个BIT位, 如果需要写入0X55,需要两个时钟周期才能完成.CPU又称master,外设又称slave.“一个时钟周期传输一个bit”:CPU和外设之间传输一个bit位,必须要通过时钟控制信号来实现双方的数据收和原创 2017-07-24 16:52:50 · 845 阅读 · 0 评论 -
linux内核并发和竟态:
1.概念:并发:多个执行单元同时发生;注意:执行单元包括硬件中断、软件中断、多进程(进程的抢占通过中断实现),竟态:并发的多个执行单元同时访问共享资源,引起的竞争状态形成竟态条件:1一定要有并发情况2一定要有共享资源 硬件资源(小到寄存器的而某个bit位)软件上的全局变量,例如open_cnt3并发的多个执行单元要同时访问共享资源互斥访问:当多个执行单元对共享资源进行访问时,只能允许一原创 2017-07-24 16:37:01 · 868 阅读 · 0 评论 -
Linux驱动之一线式总线(以ds18b20为例)
一线式总线:1硬件特性:“一线式”:CPU和一线式器件之间的数据通信就一根数据线,无时钟线。“串行”:数据一次传输一bits。 “总线”:这个数据线上可以挂载很多个一线式器件外设。硬件接法:两线式和三线式。 前者无独立的电源,通过数据线给内部的电容供电,电容对于芯片进行供电。后者有独立的电源:数据线接一个上拉电阻,表明数据线在CPU和外设都不控制的时候,数据线为高电平。 2.问原创 2017-07-24 16:52:07 · 2364 阅读 · 0 评论 -
Linux设备驱动ADC部分:
1.1ADC硬件 模拟信号:声音,电压,电流,温度,湿度,压力,速度:数字信号:0.1这些数字量组成的信号 数字系统不能直接处理模拟信号,需要将模拟信号转换成对应的数字信号;不管是数字信号还是描述的同一个事物,只是这个信号在不同形式下的表现实现! 1.2信号之间的转换:AD:模拟信号转数字信号的过程;DA:数字信号转成模拟信号的过程ADC:将模拟信号转成数字信号的硬件单元原创 2017-07-24 16:49:18 · 2737 阅读 · 0 评论 -
Linux中断及其相关内容.
1. 为什么要有中断?CPU的处理速度比外部硬件块.2.采用轮询的方式比较耗费CPU资源.3.中断处理的效率比较高.. 内核处理优先级:硬件中断 >软件中断 > 普通进程2. 中断的硬件触发流程.硬件外设产生硬件的电信号变化,这个电信号首先发送给中断控制器(能够打开,关闭中断,能够指定中断的优先级,还能够判断中断是否发生),中断控制器判断是否使能,判断优先级,最终决定是否给原创 2017-07-24 16:42:10 · 853 阅读 · 0 评论 -
Linux驱动之多路监听
Select/poll:IO多路监听案例:一个应用程序如何去处理多个设备,例如网口,串口,按键数据明确:对设备访问永远先open方法一:串行+阻塞的方式:缺点:每当阻塞读取标准输入时如果用户不进行标准输入的操作,而此时客户端给服务器发送数据,导致服务器无法读取客户端发来的数据!方法二、采用多线程或者多进程机制来实现读取:开辟多个线程,每一个线程处理一个设备,不会导致数据无法读取,但原创 2017-07-24 16:39:27 · 659 阅读 · 0 评论 -
Linux内核混杂设备
1.混杂设备:主设备号已经被内核注册进行自动分配,主设备号为10,通过此设备号区分的一类字符设备! 特点:还是字符设备,主设备号10,通过次设备号来区分设备个体.2.linux内核如何描述混杂设备:Struct misdevice{ Intminor; const char * name; const struct file_operations * fops; struc原创 2017-07-24 16:38:11 · 338 阅读 · 0 评论 -
linux的内存管理方式
为什么linux需要使用虚拟地址?--1.为了使用户操作的内存地址够大!2.mmu对地址的访问性和属性进行安全检查,虚拟地址必须映射到实际的物理地址才能进行访问。mmu:内存管理单元,管理内存的并把虚拟地址转换为物理地址的硬件,以页为单位处理,并进行内存访问权限保护等。进行虚拟地址和物理地址的检查(常见的段错误) linux内存最小管理单位为页,为4kb******************原创 2017-07-24 16:35:00 · 952 阅读 · 1 评论 -
ubuntu和arm平台下的ffmpeg和x264相关库的移植
本文讲解在ubuntu和arm平台下的ffmpeg和x264相关库的移植,最终实现使用ffmpeg进行H.264编码。1、源码下载: 本文使用的相关库已经上传,可以从本地址下载本次编译所使用的库:http://download.csdn.net/detail/yxtouch/7527291或者本个链接:http://onersw9j1.bkt.clouddn.原创 2017-07-29 12:48:57 · 749 阅读 · 0 评论