LCD驱动程序

假设 app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0

kernel: fb_open int fbidx = iminor(inode); struct fb_info *info = = registered_fb[0];

app: read()

kernel: fb_read int fbidx = iminor(inode); struct fb_info *info = registered_fb[fbidx]; if (info->fbops->fb_read) return info->fbops->fb_read(info, buf, count, ppos);

src = (u32 __iomem *) (info->screen_base + p);

dst = buffer;

*dst++ = fb_readl(src++);

copy_to_user(buf, buffer, c)

问1. registered_fb在哪里被设置? 答1. register_framebuffer

怎么写LCD驱动程序?

分配一个fb_info结构体: framebuffer_alloc

设置

注册: register_framebuffer

硬件相关的操作

测试:

make menuconfig去掉原来的驱动程序 -> Device Drivers -> Graphics support S3C2410 LCD framebuffer support

make uImage make modules

cp arch/arm/boot/uImage /work/nfs_root/uImage_nolcd

使用新的uImage启动开发板: nfs 30000000 192.168.31.202:/work/nfs_root/uImage_nolcd bootm 30000000

insmod cfbcopyarea.ko insmod cfbfillrect.ko insmod cfbimgblt.ko insmod lcd.ko

echo hello > /dev/tty1 // 可以在LCD上看见hello cat lcd.ko > /dev/fb0 // 花屏

修改vi /etc/inittab tty1::askfirst:-/bin/sh 用新内核重启开发板 nfs 30000000 192.168.31.202:/work/nfs_root/uImage_nolcd bootm 30000000

mount -t nfs -o nolock,vers=2 192.168.31.202:/work/nfs_root/first_fs /mnt cd /mnt/

insmod cfbcopyarea.ko insmod cfbfillrect.ko insmod cfbimgblt.ko insmod lcd.ko insmod buttons.ko

在开发板上按ls 回车,液晶屏则列出所在目录的文件

linux lcd驱动调试 echo dev/fb0,LCD驱动程序 - osc_msmij2gf的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. a33 linux内核启动网卡,a33核心板启动问题 - nevermore1981的个人空间 - OSCHINA - 中文开源技术交流社区...

    测试发现a33核心板有时无法正常启动,通过串口信息显示判断是uboot 对mmc初始化有时会出现问题: [      0.770][mmc]: ************Try MMC card 2** ...

  2. linux内核等价多路径路由,高级路由 - 我是*李世民*的个人空间 - OSCHINA - 中文开源技术交流社区...

    策略路由背后的概念 Linux内核在默认情况下使用两张路由表:一张表用于本地路由,另一张可以由管理员来配置.如果内核编译支持策略路由,那么可以有多大255张不同的.相互独立的路由表.策略路由背后的主要 ...

  3. linux 劫持广告技术,屏蔽运营商广告劫持 - gcudwork的个人空间 - OSCHINA - 中文开源技术交流社区...

    在今天早上我查找知乎时再次遇到了恶心的运营商广告劫持,右下角硕大的广告直接让知乎挂掉了,我刷了五次知乎才好,之前休息的时候逛知乎也是多次加载错误,估计也是这劫持的锅,相信各位也遇到过不少的运营商劫持插 ...

  4. linux卸载apk命令,apk的安装和卸载 - Jenly的个人空间 - OSCHINA - 中文开源技术交流社区...

    之前写了一篇关于静默安装apk的.那个其实是在获取root权限的条件下来通过执行命令完成的.其功能本身已经很强大了.只是前提条件是需要root权限.然后什么静默安装卸载就都是浮云了.对于以下刚刚学an ...

  5. linux c 数组拷贝,C++对数组进行复制 - osc_8iux0cyz的个人空间 - OSCHINA - 中文开源技术交流社区...

    C++ 风格的复制操作 使用STL中的copy算法 int a[] = {1,2,3,4,5}; int b[5]; std::copy(std::begin(a),std::end(a),std:: ...

  6. linux使用wdm设备驱动模型,驱动开发(WDM) - thomas_more的个人空间 - OSCHINA - 中文开源技术交流社区...

    windows 设备对象名称(内核对象必须命名才能被用户层访问产生句柄) \Driver\ 内核模式下访问 \.\ 用户模式下访问 winObj(symbollink设备名称的别名,各个节点查看)和d ...

  7. linux i2c子系统入口,I2C子系统1 - ARM_Linuxx的个人空间 - OSCHINA - 中文开源技术交流社区...

    I2C子系统 核心 i2c_driver 结构体 分配.设置.注册一个i2c_driver结构体 static struct i2c_driver i2c_example_driver = { .dr ...

  8. linux恢复安卓数据,安卓数据恢复2 - ranfs的个人空间 - OSCHINA - 中文开源技术交流社区...

    安卓数据恢复2 之前提供一种没有使用adb的方式,进行镜像的方法,存在两个问题,Quicksshd在有些手机上出现兼容性问题,在电脑上安装软件和操作还是有些麻烦. 本文用华为P7-L05手机为例,使用 ...

  9. Linux环境变量隔代,python基础题 - osc_vwtuqll7的个人空间 - OSCHINA - 中文开源技术交流社区...

    47.metaclass作用?以及应用场景? metaclass,直译为元类,简单的解释就是:当我们定义了类以后,就可以根据这个类创建出实例, 所以:先定义类,然后创建实例.但是如果我们想创建出类呢? ...

最新文章

  1. 数据库索引的作用和长处缺点
  2. 【CHM】.chm文件无法正常显示的解决方案
  3. mysql group by 两列_MySQL GROUP BY两列
  4. Linux安装Nvidia显卡驱动
  5. 怎样理解时间序列的“平稳性”?
  6. 复制粘贴神器allow copy
  7. mysql 视频教程下载_最全138节Mysql数据库+PHP零基础到精通视频教程【云盘下载】...
  8. 跨境电商竞品分析报告
  9. 100条人生哲理语句
  10. MaskRCNN使用tf-gpu环境搭建实战
  11. axure原型怎么让文字自动换行_Axure动态面板教程(快速入门+轮播图案例)
  12. python爬虫(爬取王者荣耀英雄图片)
  13. 贪婪算法————背包问题
  14. C++11之防止类型收窄(列表初始化)
  15. 车载wince升级改造_想在低配车内蹦迪?改造车机还不如装个接收器,也就一顿饭钱...
  16. cjson构建_cJSON对象的构建
  17. 俞军产品方法论精华总结(2)
  18. linux bcm43142无线网卡驱动安装,Centos7.7安装bcm43142(博通)无线网卡驱动(示例代码)...
  19. Android dev tips(update at 2015-11-26)
  20. Face++头部姿势headpose参数解析

热门文章

  1. java jedis sadd_Java实现Redis的集合(set)命令操作
  2. android 仿微信选取相册_Android 仿微信 相册多图选择器
  3. matlab全域基函数,多项式函数插值:全域多项式插值(一)单项式基插值、拉格朗日插值、牛顿插值 [MATLAB]...
  4. 折纸机器人的步骤图解_折纸图解走路的人
  5. dijkstra算法原理_这 10 大基础算法,程序员必知必会!
  6. 安卓设置菊花动画_Android仿ios加载loading菊花图效果
  7. 七夕了!!聊聊《最受欢迎的男友职业排行榜Top10》
  8. 肝!使用OpenCV为视频中美女加上眼线
  9. 一顿骚操作!我将 SQL 耗时从 30248.271s 优化到 0.001s
  10. 关于Python异常处理,你需要了解的知识点