实例介绍
allwinner-SPI总线驱动的使用和调试方法。
sP驱动的使用和调试方法 1.SP驱动文件目录 Linux下SP的驱动源文件目录: licheeⅦ linux-x, drivers\spi 该目录下的关键文件: 1)文件spic:SP子系统核心功能的实现 2)文件 spider. c:通用的SPl设备驱动实现; 3)文件 spl-sunXl. C: Allwinner基于SUNX平台的spi总线驱动 设备驱动目录根据设备类型放置在相应目录下 2 sys config. fex配置说明 1)在不同的sunx硬件平台中,SP控制器的数目也不同,但对于每一个SP控制器来说, 在 sys config. fex中配置参数相似,如表1: spio spi cs bitmap =1 port: PC27<3><1><default><default> spi sclk port: PCo2<3><default><default><default> spI mosI port: PCO0<3><default><default><default> spI mIso port: PCO1<3><default><default><default> 表 其中 spi used置为1表示使能,0表示不使能; spi cs bitmap,由于SPI控制器支持多个CS,这一个参数表示CS的掩码; sp CS0、 spi sclk、 spl mosI和 spI mIso用于配置相应的GPO 2)对于SPl设备,还需要通过表2中的参数配置 SPl board info,这些信息会通过SP子系统 的接口 spi register board_info(在SP|总线驱动初始化前就注册到内核中。 Ispi devices spi dev num =1 pI boar modalias ="m25p32 max speed hz =33000000 bus num 0 chip select =0 mode 表2 Copy Right@2014 All Winner Technology, Right Reserved 第3贝 sP驱动的使用和调试方法 其中 spiⅰ dev num表示SP设备的数目,决定了面有儿个 spi boardx,ⅹ从0廾始编号: modalias,SP设备的名字,在做总线适配时会用到; max speed hz,最大传输速度,单位是Hz bus num,sP控制器的序号,从0开始编号 chip select,理论上可以选0,1,2,3,取决于使件的CS连线; mode, SPI MOSI的GPO配置,可选值0-3。 3. menuconfig 配置说明 在命令行中进入内核根目录,执行 make arch= arm menuconfig进入配置主界面,并按 以下步骤操作 首先,选择 Device drivers选项进入下一级配置,如图1所示 Linux/arm 3.8.6 Kernel Configuration Arrow keys navigate the menu. CEnter> selects submenus -- HighlighTed le_Lers are hotkeys. Pressing <y> includes, <N> excludes <M> modularizes features. Press <Esc>sEsc> to exit, <2> fcr Help, </> for Search. Legend: [l built-in[ excluded <M> nodule<> Boot optlons ---> CPU POWer Management ---> Floating point emulation Userspace binary formats Power It.anay ement options ---> Networking support---> Dew工 ce Drivers File systems---> Kernel hack securi=y optlons - Cryptographic API Library routines Load an Alternate Configuration File Save an Alternate Configuration File Exit Help > 图1. Device drivers选项配置 然后,选择 SPI support选项,进入下一级配置,如图2所示: Copy Right@2014 All Winner Technology, Right Reserved 第4贝 sP驱动的使用和调试方法 Device Drivers Arrow keys navigate the menu. <Enter> selects submenus --- Highlighted letters are hotkeys, Pressing <y> includes, <N> exc_udes <M> modularizes features, PresE <Esc<Esc> to exit, <? for Help, </> Lor Search. Legend: [* bu:lL-in[ excluded <M> module < < Serial ala anc parallel ala drivers J Multiple devices driver support (RAID and LvM) < Generic Target Core Mod (TM) ard ConfigES Infrastructure - Input d EpoT Character devices --- k>工2Cpp⊙rt [*l sPI suppe HSI supporL-- PPS Surport--> PTP clack support Pin controllers GPIO Support---> Power supply class suppors- < Da llas's -wire support. -- Adaptive voltage scaling class carport lect Exit Help TT 图2 SPI support选项配置 选择SUNⅪ SPI COη troller选项,可选择直接编译进内核,也可编译成模块。如图3 SPI support Arrow keys navigate tie menu. <Enter> selects submenus Highlightec letters are hot eys, Pressing <Y> includes, <N> excludes <M> madularizes leatures. Press <ESc><Esc> Lo exitr <?> for Help, </ for Search. Legend: [ built-in[1 excluded <M> module < moduLe SPI support 1 Debug support for sPi drivers ★ SPI Master c。n-o1erDr⊥Vexg大★ < Altera spi Controller <> Utilities for Bithanging sPI mactorc < CFIO-based bitbanging SPI Master > encores tiny SP工 SUNXT SPI Controller xilinx SpT controller common module Designware sPI controller core support *Ak SPI Protocol Masters kdA < User mode sPI device driver support < Infineon TL=62x0 for power switching) <Select ExIt Help 图3 SUNXI SPI Controller选项配置 配置好后就可以加入外设的设备驱动程序了。 Copy Right@2014 All Winner Technology, Right Reserved 第5贝 sP驱动的使用和调试方法 4.测试方法 简单的测试方法:将MSo与MoS短接,进行写读操作,查看读与写的数据是否 致。若读取岀来的数据一致,说明SP丨通讯正常。步骤如下: 1)配置内核如图4所示: SPI supp。rt dularizes features. Press <EsC><Esc> to exit, <i>fa ahted letters are hotke te the meny <Enter> selects submenus HT r Help, </> for Search nodule capable . - SPI support 15P工 Master Contr1 er Drivers紫 Debug support for sPI drivers < Altera spi controller < Utilities far Bitbanging SPI masters GPIO-based bitbanging SPI Master opened tiny SPI RM AMBA PL022 SSP controller sUN6T5P工 Canto11er XInx SPI controler Common modu e < Designware SPI controller core support P工P色 E <p User mode SPI device driver support Infineon TLE62X0(for power switching) elect EXIt 图4 ) sys config fex配置说明如表3 Ispi dev spi dev num=1 [spi board allas spIde max speed hz =33000000 bus nur 0 p =0 mode 表3 3)编译内核下面的\ Documentation\ spi spider test.c测试文件,例如要测试的是sp0.0,则应 该执行命令:" spider test-D/dev/ spider0.0″.(也可以直接修改源码) Copy Right@2014 All Winner Technology, Right Reserved 第6贝 sP驱动的使用和调试方法 如果收到的数据和发送的薮据一致,说明该组SP正常工作 5常见问题 5.1【现象】:启动过稈中SP总线驱动有错误信息提示 sunxi spi request gpio(1238-SPl0 pinctrl lookup stateo failed return ffffffed sunxi_ spi hw init(1336-[spi-0] Request GPIo failed! 【原因分析】 1)首先确认 pinctrl模坝的初始化是否成功 2)然后,再核对 sys config fex中Sp控制器的GPo配置是否正确,可以参考SOC的pin multiplex文档。lo口有复用的情况需要与硬件确认。 52【现象】:SP设各驱动的pobe函数没有执行 【原因分析】:确认下面几点 1)SP总线驱动的初始化是否成功,在内核启动信息中搜索关键字“ sunXI_ spi init 2)SP设备驱动的int函数是否执行 3) probe函数是否注册到 spi driver结构中 4) sys config. fex中的SP控制器是否使能; 5) sys config.fex中的spi_ devices是否正确配置,其中的bus_num很重要,需要和硬件核对 后正确填写; chip select不能超过所属SP控制器的片选总数 6) sys config.fex, sys board中的 modalias是否和SP设备驱动中的设备1D信息一致。 53【现象】:大数据量传输时出错 【原因分析】:sP总线驱动中考虑FFO的大小,如果一次传输数据大于64就会启用DMA 来搬运数据。可以调整数据的读写粒度,使其小于等于64,査看是否能够成功读写,这样 能够排除DMA的潜在原因。 54【现象】:只有少量数据量正常 【原因分析】:有可能是模组与主控的时序要求不一致,可以尝试调整CLK频率进行通信。 Copy Right@2014 All Winner Technology, Right Reserved 第7贝 sP驱动的使用和调试方法 6调试方法 SPI总线驱动通过 sysfs节点提供了几个在线调试接凵 6.1 sys/module/spi sunxi/paramcters/debug mask 此节点文件的功能是打开调试信息。 缺省值是1,只会打印岀错的提示信息(如果是0,山错信息也不会打印) 打开调试信息的方法: echo 3>/sys/module/spi sunxi/parameters/gs debug mask 关闭调试信息的方法: echo 1>/sys/module/spi sunxi/parameters/gs debug mask 6.2 /sys/devices/platform/spi. O/info 此节点文件可以打印出当前SPI通道的一些硬件资源信息。操作效果图5 多ys;或 ELlE:3/ platform/多p1,0# cat into dev->id ev->ame=三p1 pdev->num resources d resource. mem =[Oxo1c68000r 0xo1c 68fff] pdev→> =SOURCE.ir 7 pdev->dev·p1 at eprom data.c多 bitmap=1 pev->ev1at上 rIo date,C昂Yur 6.3 /sys/devices/platform/spi. O/status 此节点文件可以打印出当前SPI通道的一些运行状态信息,包括控制器的各寄存器值 操作效果图6: m七色1一21u11 u8⊥0Cxt⊥ag spi-2Imiode type =5 [Null sspi-irg =97 [spio] 2 [DMA NCLLI si->13 1 [Free] s部pi→> base addr=nxf1c6nn-;-hP工c=ntra1regi宫ter 4=口∵口口 1c4 [工CR]口x 0u00;[正14=口x0u0032;[FCE]口x18=口x04-00口1 [R]0x1c=日x000;[UR]日20=日 800O0OO0口,[CCR]口xz士 [彐cR]x3=ax0000;[TR]a34=a0uu0;[BcC]ax8=x00-000 I TXR] O [E] 图6 Copy Right@2014 All Winner Technology, Right Reserved 第8贝 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论