最近一两天研究了一下LCD的驱动,但是开始时感觉步步维艰,因为我觉得网上的资料多数是在讲驱动整个框架的一部分,然后让人不明白的整体结构是什么,最后还是一知半解,进展缓慢,下午去借了一本书名字叫《linux设备驱动开发详解》(宋宝华),感觉突然豁然开朗,我觉得工程类的书就应该是这样子的,不用一大堆的理论,就给一个案例,你看了一个案例后就自然会举一反三。 我觉得一个LCD驱动可以分为两层,一个是真正跟硬件打交道的platform,一个是抽象的fb设备,这个在我接触的驱动中貌似是linux的一个惯用的手法,先用一个platform device 和platform driver去操作底层硬件(这两个文件一般对应/arch/arm/mach-da8xx/devices.c和drives/video/da8xx_fb.c,红色应对应你自己的处理器),然后通过一种匹配,在lcd里面使用的是全局变量:struct fb_info *registered_fb [FB_MAX]来共享里面的资源的,当platform匹配成功就把映射空间等存入registered_fb[]变量以使别人能够访问,这样子再在linux/drivers/video/fbmem.c里面定义一个fb设备,通过读写fb这个设备然后间接的利用 struct fb_info *registered_fb [FB_MAX]就可以控制底层了~
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务