
Linux驱动开发
文章平均质量分 93
Bin Watson
这个作者很懒,什么都没留下…
展开
-
jz2440_LCD驱动程序(非标准)
cfb_fillrect、cfb_copyarea、cfb_imageblit已经由内核实现好了,它们会根据fb_info中设置的fb_fix_screeninfo和fb_var_screeninfo两个结构体中的信息,帮助我们往LCD屏幕上绘制图像。上面我们就大致完成了fb_info的设置,下面是对S3C2440LCD控制器的设置,同时还有要配置一些GPIO引脚工作为LCD使用的引脚模式。然后还需要设置LCD的显存,是的LCDCDMA可以访问到我们的显存地址。......原创 2022-07-30 19:57:13 · 444 阅读 · 0 评论 -
jz2440_LCD硬件分析
TheLCDcontrollersupportsmonochrome(黑白色),2-bitperpixel(4-levelgrayscale)or4-bitperpixel(16-levelgrayscale)modeonamonochromeLCD,usinga(基于时间的混色算法)andFrameRateControl(FRC)methodLCDcontroller支持monochrome和color两种色彩显示方式。......原创 2022-07-30 19:45:46 · 797 阅读 · 0 评论 -
jz2440_基于平台设备的LED驱动程序
当平台设备加载进内核后,会与platform_device_bus总线上的platform_device进行匹配,若匹配成功则会调用platform_driver中的.probe函数。在释放structdevice设备时,device_release函数会调用device中的release函数,如果没有实现该函数,就会产生如下图的错误。原因是platform_device_bus的.match函数的匹配机制是对比二者的名字是否相同,相同则算匹配。......原创 2022-07-27 20:54:46 · 502 阅读 · 0 评论 -
驱动程序之同步阻塞互斥
目的:使得同时只有一个应用程序可以打开驱动程序。基于 buttons_irq 驱动程序的基础上进行修改。原子操作指的是在执行过程中,不会被别的代码路径所中断的操作。常用的原子操作函数:驱动程序初始化一个原子变量:修改 open 函数:修改 close 函数:1.2 使用信号量信号量(semaphore)是用于保护临界区的一种常用方法,只有得到信号量的进程才能执行临界区代码。当获取不到信号量时,进程进入休眠等待状态。定义信号量/互斥锁:初始化信号量:获取信号量:释放信号量原创 2022-07-25 11:18:28 · 251 阅读 · 0 评论 -
jz2440_输入子系统驱动程序
对于handler程序由于我们实现的是输入子系统,而内核中已经用现成的输入系统的handler程序。包括evdev.c文件中实现的事件驱动程序、keyboard.c中实现的按键驱动程序等等,因此我们只需要实现dev程序即可。s3c2440_timer_handler是定时器的处理函数,其所需要做的就是对事件进行上报,最终由evdev.c实现的evdev驱动程序来完成。用于获取引脚的值。对于输入子系统驱动的编写,我们可以参考gpio_keys.c文件的实现。...原创 2022-07-27 00:13:59 · 257 阅读 · 0 评论 -
jz2440_按键驱动程序的防抖机制
在这篇文章中,我们描述了使用按键驱动程序的几种方法。不过在实际操作后,我们可能会出现下面的问题当我们连续快速按下按键,或者因为某些原因机器的按键发生了抖动,就会导致,在某些特定情况中会出现一些程序问题。为了解决上述的问题。我们可以使用内核中的机制。...原创 2022-07-25 20:27:17 · 356 阅读 · 0 评论 -
jz2440_字符设备按键驱动程序
本程序基于《字符设备驱动程序》的基础上进行改进。三个程序。原创 2022-07-18 21:32:44 · 381 阅读 · 0 评论 -
jz2440_简单字符设备LED驱动程序
在Linux系统上,应用层的应用程序,如App1、App2通过Clibrary(C库)提供的open、write、read的读写操纵接口,间接调用systemcall的接口。C库调用systemcall是通过SWI指令来实现的。SWI是一个异常中断,SWI通过提供的val,从而转到相应的内核接口sys_open、sys_read、sys_write等,去执行对应的函数。.........原创 2022-07-16 10:07:38 · 428 阅读 · 0 评论