📄 怎么写驱动程序?[视听研究所--视听设计师论坛].htm
字号:
<DIV class=quote><B>以下是引用<I>mwdongdong</I>在2007-4-13 16:11:17的发言:</B><BR>
<P>各位老大们,请教初学写驱动程序应该看什么书?从哪里入手,我想写一个ST8217音频芯片的驱动,规格书看了一遍又一遍,就是不知道从何入手(之前没有写过驱动程序)。多谢多谢</P></DIV>
<P>为每个功能编写一个函数,再根据系统所需要解决的问题编写一个调用与各个功能相关的函数; 就这么简单啊. </P>
<P>比如您的系统需要调整音量, 您就到芯片资料中看看有没有设置音量电平的寄存器可用,如果有,看看寄存器的取值范围是多少?
然后写一个带入口参数的函数(也可以不带,这是另一种做法)来改变这个寄存器的值,就实现了对音量控制的驱动. </P>
<P>是不是很简单啊....,另能发一份该芯片的资料到我的邮箱吗???? </P>
<P> <IMG title=dvubb alt=图片点击可在新窗口打开查看
src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/em01.gif" onload=imgresize(this);
align=middle border=0><IMG title=dvubb alt=图片点击可在新窗口打开查看
src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/em01.gif" onload=imgresize(this);
align=middle border=0></P></DIV></DIV></DIV>
<DIV class=postbottom1>
<DIV class=postuserinfo style="HEIGHT: 28px">
<DIV style="FLOAT: left"><IMG style="MARGIN: 4px" alt=ip地址已设置保密
src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/ip.gif"></DIV>2007-4-13 17:56:43</DIV>
<DIV class=postie
style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; TEXT-INDENT: 10px; PADDING-TOP: 0px; HEIGHT: 28px">
<DIV style="FLOAT: right; MARGIN-RIGHT: 5px"><A
href="http://www.dtvbbs.cn/forum/dispbbs.asp?boardid=3&ID=16269#top"><IMG
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 4px; BORDER-RIGHT-WIDTH: 0px"
alt="" src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/p_up.gif"></A> </DIV>
<DIV><B><FONT
color=blue>【yekai】</FONT></B>:为论坛的长期存在和发展,请点击感兴趣的Google连接<BR><IFRAME
marginWidth=0 marginHeight=0 src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/google4.htm"
frameBorder=0 width=120 scrolling=no height=30></IFRAME></DIV></DIV></DIV><A
name=86572></A>
<DIV class=postlary2>
<DIV class=postuserinfo>
<DIV
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 30px; PADDING-TOP: 10px; HEIGHT: 30px">
<DIV
style="FILTER: glow(color='#A6BA98',strength='2'); FLOAT: left; WIDTH: 120px"><FONT
face=Verdana color=#61b713><B>yujie21ic</B></FONT></DIV>
<DIV style="FLOAT: left; MARGIN: 3px; WIDTH: 23px; TEXT-INDENT: 0px"><IMG
alt=帅哥哟,离线,有人找我吗? src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/ofMale.gif"> </DIV>
<DIV style="FLOAT: left; MARGIN: 5px; WIDTH: 15px; TEXT-INDENT: 0px">
<SCRIPT language=javascript
type=text/javascript>document.write (astro(''));</SCRIPT>
</DIV></DIV>
<DIV><IMG height=32 alt="" src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/image1.gif"
width=32></DIV>
<DIV><IMG style="MARGIN: 5px 0px"
src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/level1.gif"></DIV>
<DIV>等级:新手</DIV>
<DIV>文章:7</DIV>
<DIV>积分:65</DIV>
<DIV>门派:无门无派</DIV>
<DIV>注册:2007年4月16日</DIV></DIV>
<DIV class=postie>
<DIV>
<DIV style="FLOAT: right">第 <FONT color=red>4</FONT> 楼</DIV> <A
href="mailto:yujie21ic@163.com"><IMG alt=点击这里发送电子邮件给yujie21ic
src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/email.gif" align=middle border=0></A> </DIV>
<HR>
<DIV style="LINE-HEIGHT: 22px; HEIGHT: 22px">
<DIV style="FLOAT: left"><IMG alt=发贴心情
src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/face1.gif"></DIV><B></B></DIV>
<DIV
style="PADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word"
onload="this.style.overflowX='auto';">
<P><STRONG>在写一个驱动前需要思考以下事情:</STRONG><BR>1.熟读芯片SPEC,知道芯片能做什么不能做什么<BR>2.知道芯片的一些通信协议和处理算法<BR>3.找到写驱动的着手点(突破口)<BR>4.理顺整个流程,并写出完整详细的方案</P>
<P><STRONG>写驱动前的几个必要的动作:<BR></STRONG>1、读芯片的spec并给出相应的SETTING(给芯片REG写值),再整理模块setting表(哪个功能对应哪些REG给什么值)。<BR>2、做相应的测试函数<BR>3、在写驱动时,要注意:尽量封装好底层函数,并只留带形参的函数对外开放<BR>4、在刷setting时,按照数据处理和流程控制的过程去刷</P>
<P><BR><STRONG>其它</STRONG><BR><FONT
color=#ee113d>1、软件硬件的接口一般就是寄存器和中断,根据数据处理和流程控制的需要将操作封装成函数形成一套API。<BR></FONT>2、对库的描述说明用头文件来给出。这样将硬件底层的操作隐藏起来,用户只要调用API函数就能使用硬件提供的功能。<BR>3、协议在驱动里很重要<BR>4、函数接口和功能定义好<BR>5、一个底层驱动就是功能模块集(有可能是多功能和单功能),它是由数据处理管理和流程控制管理两大部件组成。<BR>6、根据数据处理的特点和流程控制方式,来决定驱动实现的机制!</P>
<P><STRONG>一些和REG相关的注意点:</STRONG><BR>1.芯片地址划分方式:<BR>(1)单地址(大部分芯片都是采用这个,如TV5725)<BR>(2)双地址(读一个地址,写一个地址,如STV8236)<BR>(3)多地址:一个模块对应一个地址和一个模块对应双地址。(SOC芯片有多模块)<BR>2.寄存器地址划分方式:<BR>
(1)分BANK:按功能分BANK。<BR> (2)分双模块:按REG是读和写。<BR>
(3)连续:REG是按从00开始+1到最后结束的方式。<BR>3.I2C支持8位(100K)、10位(400K)、16位和32位。<BR>4.REG的两种写法:(i2c一般是这两种,它只是一种通信方式可以自己定义多种)
<BR> (1)单写:一个地址接着一个数据再一样的重复。(如TV5725)<BR> (2)BURST:一个地址接着数据流。(地址是自动+1,如TDA9874)</P>
<P><STRONG>驱动实现的机制:<BR></STRONG>(1)FSM方式:主要是针对数据处理有功能性的相关性的芯片。(如TUNER驱动里的搜台)<BR>(2)FL(功能览表)方式:主要是针对数据处理是独立性的芯片。(如声音驱动对音量的调节)<BR>(3)ID_FL方式(节点通道功能览表):主要是针对数据处理有通道性的相关性的芯片,是FL方式的一种延申。(如TDA9874不同的声音通道,REG配置就不一样)<BR>所有的功能都有四种状态:启动、工作、空闲、关闭。不同的状态它的数据处理流程不一样。</P>
<P></P>
<P>小第研究的,希望各位同行一起讨论一下。有不足之处请提出。</P>
<P>我这里有STV8216的CODE,请联系我。</P>
<P></P></DIV></DIV></DIV>
<DIV class=postbottom2 id=postend>
<DIV class=postuserinfo style="HEIGHT: 28px">
<DIV style="FLOAT: left"><IMG style="MARGIN: 4px" alt=ip地址已设置保密
src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/ip.gif"></DIV>2007-4-16 12:55:12</DIV>
<DIV class=postie
style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; TEXT-INDENT: 10px; PADDING-TOP: 0px; HEIGHT: 28px">
<DIV style="FLOAT: right; MARGIN-RIGHT: 5px"><A
href="http://www.dtvbbs.cn/forum/dispbbs.asp?boardid=3&ID=16269#top"><IMG
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 4px; BORDER-RIGHT-WIDTH: 0px"
alt="" src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/p_up.gif"></A> </DIV>
<DIV><B><FONT
color=blue>【yekai】</FONT></B>:为论坛的长期存在和发展,请点击感兴趣的Google连接<BR><IFRAME
marginWidth=0 marginHeight=0 src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/google4.htm"
frameBorder=0 width=120 scrolling=no height=30></IFRAME></DIV></DIV></DIV><BR>
<DIV class=mainbar0 style="HEIGHT: 26px; TEXT-ALIGN: left">
<DIV style="FLOAT: right; HEIGHT: 26px">
<TABLE class=tableborder5 cellSpacing=1 cellPadding=0>
<FORM name=PageForm
action=dispbbs.asp?boardid=3&replyid=86342&id=16269&page=1&skin=0
method=post target="">
<TBODY>
<TR align=middle>
<TD class=tabletitle1 title=总数 style="TEXT-ALIGN: right"> 4 </TD>
<TD class=tabletitle1 title=本页贴数> 4 </TD>
<TD class=tabletitle1> 1/1页 </TD>
<TD class=tablebody1> <IMG alt=""
src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/First.gif" border=0> </TD>
<TD class=tablebody2> <FONT
class=normalTextSmall><U><B>1</B></U></FONT> </TD>
<TD class=tablebody1> <IMG alt=""
src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/Last.gif" border=0> </TD>
<TD class=tablebody1><INPUT class=PageInput size=1 value=1 name=Star><INPUT class=PageInput type=submit value=GO name=submit></TD></TR></FORM></TBODY></TABLE><SPAN
id=showclose></SPAN></DIV><SELECT id=BoardJumpList
onchange="if(this.options[this.selectedIndex].value!='')location='index.asp?boardid='+this.options[this.selectedIndex].value;"
name=BoardJumpList></SELECT> </DIV>
<SCRIPT language=javascript type=text/javascript>
BoardJumpListSelect('3',"BoardJumpList","论坛跳转到....","",0);
</SCRIPT>
<!--公共MENU菜单--><!--用户控制面板-->
<DIV class=menu_popup id=Menu_MemberTools>
<DIV class=menuitems><A
href="javascript:openScript('messanger.asp?action=new',600,450)">发短信</A> <BR><A
href="http://www.dtvbbs.cn/forum/UserPay.asp"><FONT
class=redfont>购买论坛点券</FONT></A> <BR><A
href="http://www.dtvbbs.cn/forum/BoardPermission.asp?boardid=3&action=Myinfo">我能做什么</A>
<BR><A
href="http://www.dtvbbs.cn/forum/query.asp?stype=5&s=2&pSearch=0&nSearch=0">我发表的主题</A>
<BR><A
href="http://www.dtvbbs.cn/forum/query.asp?stype=5&s=1&pSearch=0&nSearch=0">我参与的主题</A>
<BR><A href="http://www.dtvbbs.cn/forum/mymodify.asp">基本资料修改</A> <BR><A
href="http://www.dtvbbs.cn/forum/modifyadd.asp?t=1">用户密码修改</A> <BR><A
href="http://www.dtvbbs.cn/forum/modifyadd.asp">联系资料修改</A> <BR><A
href="http://www.dtvbbs.cn/forum/usersms.asp">用户短信服务</A> <BR><A
href="http://www.dtvbbs.cn/forum/friendlist.asp">编辑好友列表</A> <BR><A
href="http://www.dtvbbs.cn/forum/favlist.asp">用户收藏管理</A> <BR><A
href="http://www.dtvbbs.cn/forum/myfile.asp">个人文件管理</A> <BR><A
href="http://www.dtvbbs.cn/forum/passport.asp"><FONT
color=blue>论坛通行证设置</FONT></A> </DIV></DIV><!--论坛状态-->
<DIV class=menu_popup id=Menu_BoardStats>
<DIV class=menuitems><A
href="http://www.dtvbbs.cn/forum/boardstat.asp?boardid=3">今日贴数图例</A> <BR><A
href="http://www.dtvbbs.cn/forum/boardstat.asp?action=lasttopicnum&boardid=3">主题数图例</A>
<BR><A
href="http://www.dtvbbs.cn/forum/boardstat.asp?action=lastbbsnum&boardid=3">总帖数图例</A>
<BR><A
href="http://www.dtvbbs.cn/forum/boardstat.asp?reaction=online&boardid=3">在线图例</A>
<BR><A
href="http://www.dtvbbs.cn/forum/boardstat.asp?reaction=onlineinfo&boardid=3">在线情况</A>
<BR><A
href="http://www.dtvbbs.cn/forum/boardstat.asp?reaction=onlineUserinfo&boardid=3">用户组在线图例</A>
</DIV></DIV><!--论坛展区-->
<DIV class=menu_popup id=Menu_Show>
<DIV class=menuitems><A
href="http://www.dtvbbs.cn/forum/show.asp?filetype=0&boardid=3">文件集浏览</A>
<BR><A
href="http://www.dtvbbs.cn/forum/show.asp?filetype=1&boardid=3">图片集浏览</A>
<BR><A
href="http://www.dtvbbs.cn/forum/show.asp?filetype=2&boardid=3">Flash浏览</A>
<BR><A
href="http://www.dtvbbs.cn/forum/show.asp?filetype=3&boardid=3">音乐集浏览</A>
<BR><A
href="http://www.dtvbbs.cn/forum/show.asp?filetype=4&boardid=3">电影集浏览</A>
<BR><A href="http://www.dtvbbs.cn/forum/show.asp">贺卡发送</A> </DIV></DIV><!--页面结束部分-->
<DIV style="MARGIN: 30px auto">
<SCRIPT src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/urchin.js"
type=text/javascript></SCRIPT>
<SCRIPT
type=text/javascript>_uacct = "UA-2219148-1";urchinTracker();</SCRIPT>
<IMG height=48 src="怎么写驱动程序?[视听研究所--视听设计师论坛].files/miibeian.jpg" width=40
border=0> <BR><FONT face=宋体><A href="http://www.miibeian.com/"><FONT
color=#0000ff size=3>粤ICP备05039758号</FONT></A>
<DIV>网上贸易 创造奇迹! <A title=从网民、网友时代进入“网商”时代 href="http://china.alibaba.com/"
target=_blank>阿里巴巴</A> <A
title="Online Marketplace of Manufacturers & Wholesalers"
href="http://www.alibaba.com/" target=_blank>Alibaba</A></DIV></DIV>
<DIV style="MARGIN: 0px auto; WIDTH: 300px">
<DIV style="FLOAT: left; WIDTH: 250px">
<DIV>Copyright© 2004 ~ 2007 www.dtvbbs.cn. All rights reserved. 视听研究所版权所有</DIV>
<DIV>Powered By <A href="http://www.dvbbs.net/" target=_blank>Dvbbs</A> <A
href="http://www.dvbbs.net/download.asp" target=_blank>Version 7.1.0
Sp1</A></DIV>
<DIV>页面执行时间 0.15625 秒, 7 次数据查询<BR></DIV></DIV>
<DIV style="FLOAT: left"></DIV></DIV></FONT></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -