摘要: 在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit302位为 “区别读写” 区,作用是区分是读取命令还是写入命令。bit29~bit1514位为 "数据大小" 区,表示 ioctl() 中的 arg 变量传送的内存大小。bit20~bit08 8位为 “魔数"(也称为"幻数")区,这个值用以与其它设备驱动程序的 ioctl 命令进行区别。bit07~bit00 8位为 &qu 阅读全文
posted @ 2013-06-21 16:39 @菜鸟爱学习@ 阅读(392) 评论(0) 推荐(0)
摘要: 测试了一下S3C6410 LCD控制器提供的Overlay功能,写了一个简单的test,主要用于实现FB0和FB1之间的Overlay操作。内核选项的Windows至少要为2。具体支持如下操作:1 使能OSD2 关闭OSD3 增加OSD的Alpha值4 减少OSD的Alpha值5 手动设置Alpha值(0-15)6 上移OSD层7 下移OSD层8 左移OSD层9 右移OSD层10 设置OSD层其中设置OSD层最重要,可以重新设置窗口的大小和起始位置,主要设置完后需要重新填充窗口数据,旧的数据将错乱。//////////////////////////////////////////////// 阅读全文
posted @ 2013-06-21 11:34 @菜鸟爱学习@ 阅读(517) 评论(0) 推荐(0)
摘要: 一、FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出 FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过 Framebuffer的读写直接对显存进行操作。用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接 进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。用户不必关心 阅读全文
posted @ 2013-06-21 10:02 @菜鸟爱学习@ 阅读(2604) 评论(0) 推荐(0)