Linux设备驱动
文章平均质量分 80
KylinAnAn
这个作者很懒,什么都没留下…
展开
-
内存管理
内存管理 计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部分与内存管理子系统通过一套函数调用交互, 从简单的 malloc/free 对到更多更复杂的功能.1.内存管理子系统的功能1)分配内存2)回收内存3)实现逻辑地址-->物理地址-->虚拟地址(线性地址)的转换注意:内存泄漏:malloc,k原创 2011-06-25 08:49:00 · 612 阅读 · 0 评论 -
LED流水灯字符设备驱动
1.注册字符设备使用int register_chrdev(unsigned int major, const char *name, struct file_operations *fops);ret = register_chrdev(LED_MAJOR, DEVICE_NAME, &led_ops);@major:主设备号@name:设备名@fops:操作函数移除字符原创 2012-05-15 12:05:59 · 1562 阅读 · 0 评论 -
Linux 中断机制
1. 中断处理程序架构中断服务程序的执行不存在于进程上下文,要求中断服务程序的时间短,内核中对时钟的处理也采用中断方式中断机制提供了硬件和软件之间异步传递信息的方式,硬件设备在发生某个事件时通过中断通知软件进行处理中断实现了硬件设备按需获得处理器关注的机制,与查询方式相比可以大大节省CPU时间中断处理程序可以分成两部分上半部是实际ISR,在中断发生时被调用。下半部是taskle原创 2012-05-16 18:50:32 · 1296 阅读 · 0 评论 -
Linux input输入子系统
输入设备(按键、键盘、触摸屏、鼠标)是典型的字符设备,工作机理是底层在按键、触摸等动作发生时产生一个中断(或驱动timer定时查询),然后CPU通过SPI、I2C或外部存储器总线读取键值,坐标等数据。输入核心层提供了底层输入设备驱动程序所需的API,如分配/释放一个输入设备struct input_dev *input_allocate_device(void);void in原创 2012-05-17 21:09:33 · 7797 阅读 · 4 评论 -
Linux 内核定时器
定时器,有时也称为动态定时器或内核定时器,是管理内核时间的基础内核经常要推迟执行一些代码,如下半部机制就是为了将工作推后执行时钟中断由系统的定时硬件以周期性的时间间隔产生,这个间隔(即频率)由内核根据HZ来确定每当时钟中断发生时,全局变量jiffies(unsigned long)就加1,因此jiffies记录了自linux启动后时钟中断发生的次数。内核定时器用于控制某个函数(定时原创 2012-05-18 15:00:46 · 7792 阅读 · 0 评论 -
omap 的framebuffer驱动程序
1.帧缓冲的基本原理通过 framebuffer ,应用程序用 mmap 把显存映射到应用程序虚拟地址空间,将要显示的数据写入这个内存空间就可以在屏幕上显示出来; 驱动程序分配系统内存作为显存;实现 file_operations 结构中的接口,为应用程序服务;实现 fb_ops 结构中的接口,控制和操作 LCD 控制器; 驱动程序将显存的起始地址和长度传给 LCD 控制器的寄存器 (一般由原创 2012-09-12 19:21:50 · 3339 阅读 · 0 评论 -
Linux 内核api man 手册安装
找到正在使用的Linux内核的源码编译出man手册通过man 内核api 函数名查看函数的原型1.环境准备apt-get install xmlto 将xml转换成其它的格式 在内核目录执行make mandocs kernel_imx# make mandocs2.安装sudo make installmandocs install Documentation/DocB...原创 2018-03-07 13:24:48 · 1676 阅读 · 0 评论 -
U9300C 在Linux下的调试
硬件:A83T1.驱动加入VID和PID--- a/lichee/linux-3.4/drivers/usb/serial/option.c+++ b/lichee/linux-3.4/drivers/usb/serial/option.c@@ -948,6 +948,7 @@ static const struct usb_device_id option_ids[] = {...原创 2018-07-04 10:13:48 · 4121 阅读 · 1 评论 -
Linux driver Makefile
#for Makefile 2.6obj-m := mymodule.oKDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)modules: $(MAKE) -C $(KDIR) M=$(PWD) modulesclean: rm -rf *.o *.ko *.mod.c原创 2012-02-24 17:43:20 · 574 阅读 · 0 评论 -
samsung s3c-fb.c分析
#include #include #include #include #include #include #include #include #include #include #include #include struct s3c_fb;struct s3c_fb_win { struct s3c_fb_pd_win *wind原创 2012-05-28 16:45:46 · 3132 阅读 · 0 评论 -
usb ohci driver porting
1.kernel Device Drivers ---> SCSI device support ---> SCSI device support SCSI disk support U盘用到了SCSIUSB大容量存储设备利用SCSI(Small Computer System Interface,小型计算机系统接口)协议和主机系统通信 [*]原创 2012-02-08 17:36:21 · 1156 阅读 · 0 评论 -
linux设备驱动中的并发控制
1.并发与竞态1)并发:多个执行单元同时被执行。2)竞态:并发的执行单元对共享资源(硬件资源和软件上的全局变量等)的访问导致的竞争状态2.竞态产生的原因1)对称多处理器(SMP)的多个CPU2)单CPU内进程与抢占它的进程3)中断(硬中断、软中断、Tasklet、底半部)与进程之间3.并发与竞态的处理处理并发的常用技术是加锁或者互斥,即确保在任何时间只有一个执行单元可以操作共享资源。在Linux内原创 2011-06-27 14:02:00 · 434 阅读 · 0 评论 -
字符驱动
1.什么是驱动程序使硬件工作的软件驱动程序为操作硬件提供良好内部接口,驱动程序为应用程序提供了访问设备的机制2.驱动程序的两大任务作为系统调用的一部分而执行,运行在进程上下文。负责中断处理,运行在中断上下文3.文件系统1)文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。2)操作系统中负责管理和存储文件信息的软件机原创 2011-06-25 16:26:00 · 831 阅读 · 0 评论 -
信号量semaphore
1.信号量用于保护临界区的一种方法。临界区:在任何给定的时间,只有一个线程可以执行的代码2.只有得到信号量的进程才能执行临界区代码,当得不到信号量时,进入休眠等待状态-----------------------------------------------------原创 2011-09-08 13:12:15 · 4269 阅读 · 0 评论 -
原子操作atomic
1.原子操作的是在执行过程中不会被别的代码路径所中断的操作2.当共享资源是位或整型变量,是一个完整的加锁体制对于一个简单的整数值看来过分了. 对于这样的情况,内核提供了一个原子整数类型称为 atomic_t, 定义在 ---------------------------原创 2011-09-08 15:04:24 · 805 阅读 · 0 评论 -
阻塞IO
大部分驱动需要 -- 除了读写设备的能力 -- 通过设备驱动进行各种硬件控制的能力1.在用户空间, ioctl 系统调用有下面的原型:int ioctl(int fd, unsigned long cmd, ...);2.ioctl 驱动方法有和用户空间版本不同的原创 2011-09-09 09:35:21 · 631 阅读 · 0 评论 -
内核定时器和tasklet
1.一个内核定时器是一个数据结构, 它指导内核执行一个用户定义的函数使用一个用户定义的参数在一个用户定义的时间. 这个实现位于 和kernel/timer.c2.实际上, 内核定时器被作为一个"软件中断"的结果而实现.3.内核提供给驱动许多函数来声明, 注册, 以及去除原创 2011-09-09 13:28:05 · 1541 阅读 · 0 评论 -
自旋锁spin_lock
1.大部分加锁是由一种称为自旋锁的机制来实现, 自旋锁可用在不能睡眠的代码中, 例如中断处理一个自旋锁是一个互斥设备, 只能有 2 个值:"上锁"和"解锁". 它常常实现为一个整数值中的一个单个位. 想获取一个特殊锁的代码测试相关的位. 如果锁是可用的, 这个"上锁"原创 2011-09-08 14:25:26 · 1005 阅读 · 0 评论 -
alsa-lib移植
reference http://blog.csdn.net/lanmanck/article/details/5829143 http://dev.hqyj.com/column/column3.htm1.tar -xvf alsa-lib_1.0.23.orig.tar.bz2 ./configure --host=arm-linux --prefi原创 2012-02-03 16:54:51 · 5540 阅读 · 0 评论 -
Android APP 直接操作内核sysfs
eth_enable 是sysfs导出的一个符号,控制以太网的电源开关APP端操作节点try{ FileOutputStream fops = new FileOutputStream("/sys/devices/platform/syspower.0/eth_enable"); fops.write("1".getBytes()); fops.flush(); ...原创 2018-07-04 11:05:28 · 1244 阅读 · 0 评论