dingzerong 发表于 2011-12-23 03:03

linux下spi驱动分析

<DIV><SPAN class=link_title><A title="linux spi驱动" href="http://blog.csdn.net/yylklshmyt20090217/article/details/5267471"><FONT color=#000000>linux spi驱动</FONT></A></SPAN>
<DIV class=article_manage><SPAN class=link_categories>分类: <A href="http://blog.csdn.net/yylklshmyt20090217/article/category/635247" target=_blank><FONT color=#336699>Linux Device Driver</FONT></A> </SPAN><SPAN class=link_postdate>2010-01-28 23:26</SPAN> <SPAN class=link_view title=阅读次数>1776人阅读</SPAN> <SPAN class=link_comments title=评论次数><A href="http://blog.csdn.net/yylklshmyt20090217/article/details/5267471#comments" target=_blank><FONT color=#336699>评论</FONT></A>(0)</SPAN> <SPAN class=link_collect><A title=收藏 href="http://blog.chinaunix.net/.:void(0);" .click=".:collectArticle('linux spi驱动','5267471');return false;"><FONT color=#336699>收藏</FONT></A></SPAN> <SPAN class=link_report><A title=举报 href="http://blog.csdn.net/yylklshmyt20090217/article/details/5267471#report" .click=".:report(5267471,2);return false;"><FONT color=#336699>举报</FONT></A></SPAN> </DIV>
<DIV class=article_content>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><STRONG><SPAN lang=EN-US style="COLOR: #295200">linux spi</SPAN></STRONG><STRONG><SPAN style="COLOR: #295200; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">驱动</SPAN></STRONG><STRONG><SPAN lang=EN-US style="COLOR: #295200"></SPAN></STRONG></FONT></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">内核版本:</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">linux-2.6.29</SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2></FONT></SPAN></SPAN></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">主要的几个结构</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2>platform_device platform_driver s3c24xx_spi spi_master spi_bitbang spi_device spi_driver spidev_data s3c_spi_info </FONT></SPAN></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">第一步:注册</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">platform_device </SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">在</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">arch/arm/mach-s3c2410/mach-qt2410.c </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">中注册</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">platform_device </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">,其中</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">s3c2410_spi_info </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">作为</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">platform_device.private_data. platform_device.name </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">为</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">"s3c2410-spi". </SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><BR></SPAN><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">同时在</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">mach-qt2410.c </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">中注册</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_board_info, </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">其中</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_board_info.bus_num=0, </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">与</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">s2c2410_spi_info </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">中的</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">bus_num </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">相同</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">, </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">以后会通过</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">bus_num </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">比对来匹配。</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2></FONT></SPAN></SPAN></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">第二步:注册</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">platform_driver </SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">在</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">driver/spi/spi_s3c24xx.c </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">中注册</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">platform_driver (s3c24xx_spi_driver) </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">,这个</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">platform_driver </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">的名字为</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">"s3c2410-spi" </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">,这样名字与</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">platform_device </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">的相同,在注册的时候会匹配到一起。并调用</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">s3c24xx_spi_driver.probe </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">函数</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">s3c24xx_spi_probe </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">。</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2></FONT></SPAN></SPAN></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">第三步:注册</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_device </SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">在</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">.probe </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">函数中创建</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">s3c24xx_spi </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">,该结构中包括了一个</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_bitbang, </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_master </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">,</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">配置了一些互相关联的项以后</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">( </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">将</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">3c2410_spi_info.bus_num </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">作为</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_master.bus_num) </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">,即扫描注册的</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_board_info </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">链表,查找所有</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_board_info.bus_num </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">与</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_master.bus_num </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">相等的项,并为每一项注册</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_device </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">,其中</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_device </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">的名字为</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_board_info. Modalias </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">。</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2></FONT></SPAN></SPAN></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">第四步:注册字符设备,注册</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_driver </SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">在</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">driver/spi/spidev.c </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">中,先注册</SPAN><SPAN style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"> </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">了以</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">SPIDEV_MAJOR </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">为主设备号,</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spidev_ops </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">为文件操作集的字符设备</SPAN><SPAN style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"> </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">。</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">注册</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_driver . </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">在</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">driver/spi/spidev.c </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">中,其中</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_driver </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">的名字为</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">”spidev” </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">,这样与刚才注册的</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_device </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">相匹配,在</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_driver.probe </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">并为每个匹配的</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spi_device </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">创建了一个</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">spidev_data </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">,并在</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">sys </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">系统中注册一个带有以</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">SPIDEV_MAJOR </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">为主设备号,以0开始的递增的数字为副设备号的设备点,这样如果有</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">udev </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">运行的话会在</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">/dev </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">下面节点。</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2></FONT></SPAN></SPAN></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=2><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">好了,所有的工作准备就绪了,用户可以通过访问</SPAN><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">/dev/ </SPAN><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">下的节点来使用这个驱动了。</SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><A href="http://hi.baidu.com/%C9%D9%D2%DD%B9%A4%D7%F7%CA%D2/blog/item/03392baf6b4bc2054a36d6e4.html" target=_blank>http://hi.baidu.com/%C9%D9%D2%DD%B9%A4%D7%F7%CA%D2/blog/item/03392baf6b4bc2054a36d6e4.html</A></SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">==========</SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">相关网站:</SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><A href="http://blog.csdn.net/zjujoe/article/details/3096383" target=_blank>http://blog.csdn.net/zjujoe/article/details/3096383</A></SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><A href="http://blog.csdn.net/walkingman321/article/details/5946581" target=_blank>http://blog.csdn.net/walkingman321/article/details/5946581</A></SPAN></FONT></SPAN></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></FONT></SPAN></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN style="FONT-SIZE: small"><SPAN style="FONT-SIZE: small"><SPAN style="FONT-FAMILY: times new roman,times"><FONT size=3><SPAN style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: Verdana; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><a href="http://blog.csdn.net/woshixingaaa/article/details/6574215" target="_blank">http://blog.csdn.net/woshixingaaa/article/details/6574215</A></SPAN></FONT><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"></SPAN></SPAN></SPAN></SPAN></P></DIV></DIV>

longming134 发表于 2013-09-23 21:49

请问怎么写模块化的SPI驱动?!
页: [1]
查看完整版本: linux下spi驱动分析