linux 驱动 开发
文章平均质量分 89
cl2006ky
这个作者很懒,什么都没留下…
展开
-
ARM 架构介绍
一、ARMv8-A 架构分析https://blog.csdn.net/longwang155069/category_9810393.htmlhttps://blog.csdn.net/longwang155069/category_9810393.html二、ARM 虚拟化技术ARMv8 Virtualization Overview · kernelgoARMv8 Virtualization Architecturehttps://kernelgo.org/armv8-virt-guid原创 2021-09-29 15:31:58 · 689 阅读 · 0 评论 -
离线人脸识别SDK
离线人脸识别SDK:单目活体算法: 创新的单目活体检测算法,人脸识别准确率超过人眼精准度, 1 秒内完成识别,以最低的硬件成本实现活体验证检测,防3D打印、电子屏、面具、头套类黑客攻击;人脸识别算法: 首先, 通过人脸检测技术,可以从摄像头捕捉的画面中以毫秒级的速度,锁定当前客户的人脸;其次,通过面部关键点定位技术,以微秒级的速度,完成眼、口、鼻轮廓等面部关键点进行精准定位,且不会受到光线变化、表情变化及头发、帽子遮挡等影响;活体: RGB 单目活体防伪;识别准确率达 99.9%..原创 2020-11-08 12:02:01 · 1417 阅读 · 0 评论 -
linux 简单字符驱动
一、linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:1、字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。2、块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和SD卡等。 每一个字符设备或块设备都在/de原创 2014-12-19 11:15:51 · 430 阅读 · 0 评论 -
linux usb 驱动详解 二
USB 设备驱动代码通过urb和所有的 USB 设备通讯。urb用 struct urb 结构描述(include/linux/usb.h )。 urb 以一种异步的方式同一个特定USB设备的特定端点发送或接受数据。一个 USB 设备驱动可根据驱动的需要,分配多个 urb 给一个端点或重用单个 urb 给多个不同的端点。设备中的每个端点都处理一个 urb 队列, 所以多个 urb 可在队列清空之原创 2014-12-19 11:14:46 · 579 阅读 · 0 评论 -
linux 驱动中的阻塞机制
阻塞与非阻塞是设备访问的两种方式。在写阻塞与非阻塞的驱动程序时,经常用到等待队列。一、阻塞与非阻塞 阻塞调用是指调用结果返回之前,当前线程会被挂起,函数只有在得到结果之后才会返回。 非阻塞指不能立刻得到结果之前,该函数不会阻塞当前进程,而会立刻返回。 对象是否处于阻塞模式和函数是不是阻塞调用有很强的相关性,但并不是一一对应的。阻塞对象上可以有非阻塞的调用方式,我们可以通过一定的API去轮询状原创 2014-12-19 11:15:45 · 446 阅读 · 0 评论 -
MMAP操作
1.mmap系统调用void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);功能:负责把文件内容映射到进程的虚拟地址空间,通过对这段内存的读取和修改来实现对文件的读取和修改,而不需要再调用read和write;参数:addr:映射的起始地址,设为NULL由系统指定;len:映射到内存的文件长度;pr原创 2014-12-19 11:15:37 · 440 阅读 · 0 评论 -
linux 蓝牙协议栈以及工具移植大全(原创)
#!/bin/bashbluez_version=bluez-4.95glib_version=glib-2.28.8expat_version=expat-2.0.1dbus_version=dbus-1.4.14bluez_dump_version=bluez-hcidump-2.1openobex_version=openobex-1.3libical_version=libical-0.4原创 2014-12-19 11:15:06 · 864 阅读 · 0 评论 -
linux 并发控制
现代操作系统有三大特性:中断处理、多任务处理和多处理器。这些特性导致当多个进程、线程或者CPU同时访问一个资源时,可能发生错误,这些错误是操作系统运行所不允许的。在操作系统中,内核需要提供并发控制机制,对共享资源进行保护。 在操作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。并发容易导致竞争原创 2014-12-19 11:15:48 · 458 阅读 · 0 评论 -
IOCTL操作
大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd,unsigned long cmd,...);/*fd:文件描述符cmd:控制命令...:可选参数:插入*argp,具体内容依赖于cmd*/ 用户程序所作的只是通过命令码告诉驱动程序它想做什么,至于怎么解释这些命令和怎么实现这些命令原创 2014-12-19 11:15:42 · 497 阅读 · 0 评论 -
poll 操作
在用户程序中,select()和poll()也是与设备阻塞与非阻塞访问息息相关的,使用非阻塞I/O的应用程序通常会使用select和poll系统调用查询是否可对设备进行无阻塞的访问。select系统调用最终会引发设备驱动中的poll函数被执行。一、select()系统调用:用于多路监控,当没有一个文件满足要求时,select将阻塞调用进程。1.select()原型:int select(int m原创 2014-12-19 11:15:40 · 465 阅读 · 0 评论 -
IO端口与IO内存
从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内存、硬盘,鼠标、键盘,显示器……对于CPU而言,如果它要发数据到某个设备,其实是发到对应的接口,接口电路里有多个寄存器(也称为端口),访问原创 2014-12-19 11:15:34 · 559 阅读 · 0 评论 -
linux usb 驱动详解 一
内核使用2.6.29.4 拓扑结构上, 一个 USB 子系统并不是以总线的方式来分布; 它是一棵由几个点对点连接构成的树。这些连接是连接设备和集线器的4线电缆(地, 电源, 和 2 个差分信号线), 如同以太网的双绞线。USB主控制器负责询问每个USB设备是否有数据需要发送。由于这个拓扑结构,一个 USB 设备在没有主控制器要求的情况下不能发送数据. 也就是说:USB是单原创 2014-12-19 11:14:44 · 539 阅读 · 0 评论 -
linux usb 驱动详解 三
本部分的一些示例源码来自drivers/usb/usb-skeleton.c,它是Linux内核为我们提供的最基础的USB驱动程序,USB骨架程序) 驱动程序把驱动对象注册到 USB 子系统中,之后使用供应商(idVendor)和设备(idProduct)标识来判断对应的硬件是否已经安装. 驱动的设备支持列表 struct usb_device_id 结构提供了这个驱动支持的不同类型原创 2014-12-19 11:14:50 · 490 阅读 · 0 评论