在凌乱地学习了嵌入式各种设备的驱动开发板后,在我还没想明白驱动应该是一个怎么样的开发流程前,我常会遇到这样的困扰:比如,我是学过LCD驱动开发的,但我好像是只会某一款某一平台下的驱动,如果让我换用其他设备,或在其他平台,或使用不同版本的内核。要我去做这么一个驱动开发时,我都是没底的,没信心能在限期内完成,不敢打包票一定能做出来。甚至,让我抛开我手上的资料,让我去做已经学过的在某平台下做已学过的某个设备的驱动,还使用已经用过的内核版本去做这个一个驱动开发。我也没有能很熟练地轻松地完成这个驱动的信心,要我做时,第一感觉就是眼前一遍漆黑,不知从哪开始下手。
首先了解设备的属性。
假设你已经有一个写好裸板LCD设备的驱动,如果想让它在另一个平台芯片中也能驱动LCD设备的话,
无论是什么平台的,只要你清楚:
让一个设备工作起来,需要设置哪一些参数时 。你就能有信心有把握的去面对任何平台。
举例:假设是LCD;
..........
一个平台裸机驱动不能使用到另一个平台的原因主要有五个:
A、平台是否支持该设备;
B、设备连接到平台管脚不同;
C、平台控制管理设备的寄存器地址不同;
D、寄存器中设置某内容位置不同;
E、平台的设备管理的集成度不同,如8051单片机与S3C2440,51中发送数据的脉冲时钟还需要通过程序去控制,设置一个高脉冲,然后发一个数据,然后把脉冲拉低,然后循环去把数据流发送完毕,而在S3C2440中发数据只要往设备数据寄存器中写数即可。
A原因:可通过平台芯片手册的产品概述中,了解到该平台所能支持的设备,如下,2440手册在第一页的产品概述中,关于LCD设备有这么一句介绍:
可了解到2440平台支持STN和TFT屏
然后,再看LCD设备的手册,同样第一页一般说明General Specificaton列表中
B原因:无论什么LCD_TFT设备;其必需都要有的:
用于发送数据到LCD设备管脚
用于发送像素脉冲VCLK、水平方向的脉冲VLINE(HSYNC)、垂直方向的脉冲VFRAME(VSYNC)到设备去控制脉冲填充位置
用于控制LCD显示开关、LCD被光开关的引脚
其他功能引脚
这部分的知识获得,就需要认识LCD工作原理,具体接线看电路原理图来确认管脚。
C、原因解决的方法就是,查看平台芯片手册。在平台芯片手册中,通常会把某一种设备相关的寄存器列出一个表。
虽然不是每个寄存器都会用到,最重要提就是控制寄存器和地址寄存器的设置,其他可以先不使用。
D、本处详细看平台芯片手册中的寄存器内容,
主要的设置内容就是LCD设备工作原理中的关于数据、关于时钟信号、和使能开关的设置。
E、了解设备工作原理,了解现在寄存器帮你实现了哪些功能,一般带了相关设备寄存器的芯片,基本的功能都很完善,你只需要操作这些寄存器就能达到目的。
写着写着发现好啰嗦,把简单的事给写复杂了,日后总结好后再补.......
本篇文章的总思想就是
明确范围
清楚要素
了解框架模型
在后面的具体开发中演示吧,
本篇文章失败的地方,或许是因为题太大了,想简单的通过一篇文章和说明各种情况不现实,所以日后总结好了再补。。。。。。