打印

一个困扰了很久的问题:如何从芯片手册到编写驱动

[复制链接]
4599|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fakewings|  楼主 | 2008-4-18 19:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个问题困扰我很久了,面对一大堆的芯片手册,却找不到编写驱动的步骤. 

芯片手册里,详细地描述了该芯片支持的特征,端口的描述,工作的信号图,注意事项,结构方块图,物理参数... 

却总没找到如何开始写一个驱动的初始化过程,读过程,写过程,状态的获取过程. 

现在练习用的驱动程序,大多是已经编写好的,是光盘上或书本上的例程.这些程序是怎么来的呢?

相关帖子

沙发
fakewings|  楼主 | 2008-4-18 21:37 | 只看该作者

可以理解驱动程序,但不知道为什么要这样写

我看到初始化例子程序里就对好多寄存器进行了设置,有时也包括定时器的设置. 
可我在DataSheet里找不到这个设置的流程. 
对着DataSheet和例程,我可以读懂每一条设置语句,但为什么就是这些设置语句,多一些行不行?少一些行不行?它们的顺序能不能互换?却没有头绪. 

如果给我一个新的DataSheet,要我编写驱动,就不知如何入手了...

使用特权

评论回复
板凳
iC921| | 2008-4-18 23:05 | 只看该作者

俺不懂

不知道谁讲解讲解?

使用特权

评论回复
地板
tyw| | 2008-4-19 08:17 | 只看该作者

参考一下

1.对于多功能芯片要作一些当前使用功能的选择,例如规划i/o口的输入或输出状态等等.
2.作一些初始功能设置,例如lcd驱动芯片,希望在运行前显示空白,就要进行显示缓存的清"0"操作,并送显.
3.针对一些有操作协议的芯片,还得根据协议进行初始操,例如I2C串口芯片,进行读,写时,都有相关的命令字需要发送.总之,跟着时序图跑.
4.有些模块本身有许多操作命令,一般会提供例程,比较简单.

使用特权

评论回复
5
maychang| | 2008-4-19 09:47 | 只看该作者

某些芯片,例如AVR单片机,datasheet中提供了初始化代码,这样当然比较方便。
但并非所有芯片均提供这些代码,那就只能按照时序自己一点一点地写,包括初始化和后续的操作。
如果能看懂每一条设置语句,但看不懂整个程序,那说明你对这部分的操作还不理解。

使用特权

评论回复
6
dld2| | 2008-4-19 10:10 | 只看该作者

浅见

看手册了解外设。
首先了解它的功能特性。
然后把所有可编程的东西都看一遍。一般无非是控制寄存器、状态寄存器、接受和发送的数据缓冲。

初始化:
根据你的配置和要实现的功能,把那些要写的控制寄存器写一下。
如果有顺序,一般可以通过逻辑判断或者手册中会有说明。
    例如:我们总是配置好参数之后,才会把一个外设使能。
如果需要,此时可以配置中断。
    外设一般有中断控制寄存器来打开具体的中断源。
如果数据收发使用到FIFO,要配置相关的控制寄存器。 

读数据:
读数据一般涉及到状态寄存器。
    告诉你是否有正确数据。
    告诉你是否有接受错误。
当了解了接受数据状态后,就可以去读数据了。
读数据一般会受中断驱动。

写数据:
一般cpu快而外设慢。因此写数据时要检查相应的状态寄存器,是否允许写入。

如果手册上有这个设备的框图,那是很有信息量的东西,要仔细看看。
    

使用特权

评论回复
7
好不厉害| | 2008-4-19 10:16 | 只看该作者

功能比较常见的看相似芯片的demo吧

不常见的最好看厂家有没有demo

使用特权

评论回复
8
fakewings|  楼主 | 2008-4-19 13:01 | 只看该作者

很受启发

谢谢楼上几位高手的慷慨指点!
总算知道驱动编写时的大方向了,很受启发~可以有目的地分析例程了:)

使用特权

评论回复
9
holle| | 2008-4-19 13:56 | 只看该作者

原来这就叫驱动啊

用过好多外围芯片,写的都是裸奔程序
在操作系统下是怎样写驱动呢,本人做硬件的

使用特权

评论回复
10
yuanye0808| | 2008-4-20 15:14 | 只看该作者

做一个

做一个小项目,就理解了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

29

帖子

0

粉丝