drivers
Alan0521
这个作者很懒,什么都没留下…
展开
-
驱动注册的probe函数
probe的调用 从driver_register看起: int driver_register(struct device_driver * drv) { klist_init(&drv->klist_devices, klist_devices_get, klist_devices_put); init_completion(&drv->unload转载 2012-02-13 17:36:33 · 632 阅读 · 0 评论 -
串口的open操作(tty_open) .
根据前面的操作,串口作为字符驱动也已经注册到系统了,/dev目录下也有设备文件节点了。 那接下来uart的操作是如何进行的呢? 操作硬件之前都是要先open设备,先来分析下这里的open函数具体做了那些工作(做了大量工作 ,真的!)。 应用层通过open系统调用open(“/dev/s3c2410_serial0”,)一层一层调用到会调用到tty_open。 因为串口在linux下是作为t转载 2012-09-26 15:22:56 · 1418 阅读 · 0 评论 -
内核定时器
一、定义: /include/linux/timer.h struct timer_list { struct list_head entry; unsigned long expires; void (*function)(unsigned long); unsigned long data; struct tvec_t_base_s *base; #ifde转载 2012-09-14 17:21:08 · 709 阅读 · 0 评论 -
lseek() sample program in C
Input and output are normally sequential: each read or write takes place at a position in the file right after the previous one. When necessary, however, a file can be read or written in any arbitrary转载 2012-09-10 22:02:36 · 977 阅读 · 0 评论 -
LDD3之scull--从open系统调用到模块的scull_open执行流程分析
本帖的主要内容提供一个从系统调用open到内核中该文件实际的open方法的调用流程分析,基本上列出来从open系统调用到scull_open过程中调用的函数。 在这个过程中很多调用以及函数实现的细节还并不是很清楚。希望在随后的研究过程中,以及和别人的交流中,把这个调用流程丰富起来。 int open(const char *pathname, int flags, mode_t转载 2012-09-08 01:00:06 · 740 阅读 · 0 评论 -
smart3250中的静态I/O映射情况
根据网络大虾们的指导,基本上搞清楚了smart3250中的静态I/O映射情况。写个blog供以后参考。 ****************************网络摘录************************************** 内核提供了在系统启动时通过map_desc结构体静态创建I/O资源到内核地址空间的线性映射表(即page table)的方式,这种映射表是一种一一映射转载 2012-09-06 22:07:55 · 1647 阅读 · 0 评论 -
platform驱动之probe函数
驱动注册的probe函数 probe函数在设备驱动注册最后收尾工作,当设备的device 和其对应的driver 在总线上完成配对之后,系统就调用platform设备的probe函数完成驱动注册最后工作。资源、中断调用函数以及其他相关工作。下面是probe被调用的一些程序流程。 从driver_register看起: int driver_register(struct device转载 2012-09-06 16:50:34 · 718 阅读 · 0 评论 -
Color Map 剖析
Framebuffer驱动程序模型 下图会向你展示目前的framebuffer设备驱动的结构,最常用的是非标准驱动。很明显他所处的层次最高,程序编写是最容易的。理解了这个图的,你已经很轻松的去完成一个fb驱动,比如给sa1100,s2410,s2440系列的ARM的LCD控制器写驱动。 Color Map 剖析 在framebuffer驱动程序设计中,cmap这个东东太晕了。现在我转载 2012-09-05 22:51:23 · 1149 阅读 · 0 评论 -
s3c2410 framebuffer驱动中的mmap分析备忘
这几天的高级驱动课真是听得happy,块设备、MTD设备讲的真是框架清晰,豁然开朗 趁着还热乎,有空,记录下s3c2410 framebuffer驱动中的mmap的实现,留待以后实现自己的物理内存映射时参考 此前也就是会掉mmap,如何在内核空间自己实现一个mmap还没有概念 s3c2410fb.c中的fb_ops里并没有mmap的实现,fb是老牌设备驱动了,发展成为一个子系统,所以缺什么实转载 2012-09-04 23:20:00 · 1253 阅读 · 0 评论 -
Framebuffer Driver
中文名为:帧缓冲驱动 一、FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显转载 2012-09-04 10:33:22 · 640 阅读 · 0 评论 -
Linux驱动修炼之道-内存映射
C-sharp代码 void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); 内存映射函数mmap负转载 2012-09-04 11:32:05 · 999 阅读 · 0 评论 -
在mini2440上面搞定CC2500驱动
写在前面 最近基本搞定了CC2500在linux下面的驱动,在这个过程中遇到了好多问题,特此总结出来和大家分享。但是需要注意的事情是: 第一,本文不负责程序的具体讲解,诸如每一行程序都讲什么:这个在程序的里面有注释。本篇文章更侧重于从整体结构上让大家对于linux下的CC2500DE驱动有一个整体的了解,如果到时候需要深入研究的时候,再来看具体的代码; 第二,很多师弟师妹没有习惯转载 2012-08-19 22:00:10 · 1531 阅读 · 0 评论 -
Linux驱动中,probe函数何时被调用
最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用转载 2012-02-13 17:38:47 · 966 阅读 · 0 评论 -
linux串口驱动分析
硬件资源及描述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)端口,每个端口都可以在中断模式或 DMA 模式下操作。UART 使用系统时钟可以支持最高 115.2Kbps 的波特率。每个 UART 通道对于接收器和发送器包括了 2 个 64 位的 FIFO。 寄存器 名称 地址 在linux中的描述 (转载 2012-09-25 17:00:44 · 1410 阅读 · 0 评论