Linux应用层想要操作kernel层的API,比如想操作相关GPIO或寄存器,可以通过写一个字符设备驱动来实现。
1、先在rootfs中的 /dev/ 下生成一个字符设备。注意主设备号 和 从设备号。可用如下shell脚本生成:
if [ ! -e audioIN ];then
sudo mknod audioIN c 240 0
fi
生成的设备为 /d...
分类:
系统相关 时间:
2014-07-18 22:36:04
阅读次数:
349
驱动层一般由硬件抽象层(HAL)、板级支持包(BSP)和驱动程序组成,是嵌入式系统中不可或缺的重要部分。它的作用是为上层程序提供外部设备的操作接口,并且实现设备的驱动程序。上层程序可以不管操作的设备内部实现,只需要调用驱动的接口即可。硬件抽象层(HAL)嵌入式系统通常包含三个部分: 嵌入式应用程序 ...
分类:
其他好文 时间:
2014-07-18 20:34:07
阅读次数:
335
前面我们说了如何I2C用户模式驱动,这种驱动基于I2C子系统,但是他对于应用程序开发人员的要求较高,需要应用程序开发人员了解硬件的一些东西,比如时序,地址等等,而多数时候应用程序开发人员是按照操作文件的方法操作设备,所以我们更希望用一些更简单的接口去访问。也就是我们今天的内容——基于I2C子系统.....
分类:
其他好文 时间:
2014-07-18 17:34:26
阅读次数:
299
ubuntu 14.04下的hello word模块编写过程...
分类:
系统相关 时间:
2014-07-18 11:34:39
阅读次数:
348
背景:
在多媒体和图像处理等应用中,经常用到大块内存,尤其是硬件编解码,需要内核分配大块的物理连续内存。
这里希望通过把从内核分配的连续物理内存映射到用户空间,在用户空间经过处理,又可以入队到驱动中。
前提:
Kernel Config中 根据需求配置和调整CMA的大小。
方法:
(一)
1、驱动注册misc设备;
2、驱动实现IOCTL的内存分配,使用dma_alloc_writ...
分类:
其他好文 时间:
2014-07-18 11:30:45
阅读次数:
256
最近有些人问我PCI设备驱动的问题, 和他们交流过后, 我建议他们先看一看>这本书, 个人感觉, 这本书写得非常连贯流畅.
PCI设备驱动基本包括了PCI的资源获取, 配置空间的读写, 中断的处理, 中断后半部在DPC中的处理.
同时, 也必须了解DMA, ScatterGater, MapRegister, Common Buffer等基础.
1.1 PCI设备资源获取...
很早之前就接触过同步这个概念了,但是一直都很模糊,没有深入地学习了解过,近期有时间了,就花时间研习了一下《linux内核标准教程》和《深入linux设备驱动程序内核机制》这两本书的相关章节。趁刚看完,就把相关的内容总结一下。为了弄清楚什么事同步机制,必须要弄明白以下三个问题:
l 什么是互斥与同步?
l 为什么需要同步机制?
l Linux内核提供哪...
分类:
系统相关 时间:
2014-07-14 13:12:01
阅读次数:
461
对于大部分内核模块或设备驱动的开发者和使用者来说,最常接触到的就是各层目录下基于kbuild架构的kbuild Makefile文件。主要部分有:1、目标定义,目标定义就是用来定义哪些内容要做为模块编译,哪些要编译链接进内核。最简单的只有一行,如obj-y += foo.o表示要由foo.c或者fo...
分类:
其他好文 时间:
2014-07-13 09:40:12
阅读次数:
240
图形设备接口(GDI)是一个可运行程序,它接受Windows应用程序的画图请求(表现为GDI函数调用),并将它们传给对应的设备驱动程序,完毕特定于硬件的输出,象打印机输出和屏幕输出。GDI负责Windows的全部图形输出,包含屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面。也就是...
分类:
其他好文 时间:
2014-07-09 14:02:17
阅读次数:
455
在Linux下的输入设备键盘、触摸屏、鼠标等都可以用输入子系统来实现驱动。输入子系统分为三层,核心层和设备驱动层,事件层。核心层和事件层由Linux输入子系统本身实现,设备驱动层由我们实现。我们在设备驱动层将输入事件上报给核心层input.c,核心层找到匹配的事件层,将事件交给事件层处理,事件层处理完后传递到用户空间。
我们最终要搞清楚的是在用户空间调用open和read最终在内核中是怎样处理的...
分类:
系统相关 时间:
2014-07-09 09:25:34
阅读次数:
300