SPI linux 驱动调试感悟

来源:互联网 发布:游族网络实时资金流向 编辑:程序博客网 时间:2024/06/05 21:04

       虽然目前板子上SPI 驱动设备还没有正常跑起来,但是经过两个星期的折腾,还是有点感想。我的芯片是MPC83XX,Linux 内核是2.6.x.25,内核系统好像是这个,反正版在2.6内核中算是比较老的,文件系统用的是.cpio,mtd的,因为存储设备使用的是NORFLASH,文件系统中包括一些busybox,这个网上或linux网站基本上都有的,算是比较固定的一部分,但是要想一个linux系统在板子上跑起来,除了BIOS(uboot)引导linux内核外,没有文件系统是起不来的,当然POWERPC还需要.dtb文件,用于将芯片的一些硬件寄存器地址传递给linux系统。linux系统起来后,编写测试程序,最好是自己写一个测试文件,其它的操作设备文件封装成静态库的方式,测试通过之后以便将操作设备的文件移植到用户空间这些接口就可以给上层调用了。

            说了这么久,现在言归正卷吧,spi设备在内核中有几个文件,具体的可以参考下http://blog.csdn.net/sailor_8318/article/details/5977733 ,介绍的比较详细。我所要说的是除了我们要配置好我们自己的外围SPI设备外,我们还需要对MPC83XX控制器进行SPI(master device ,mpc83xx控制器,可以查看相关的控制芯片手册)的配置,相关的配置在mpc83xx_spi.c文件中,在移植的过程中,一般的修改下片选配置,在用户空间对SPI外围(slave device)设备进行寄存器设置之后就能正常的工作了当然更详细的启动注册运行的过程还需要自己通过log追踪和网上查些spi内核相关的文件结合起来理解。总之,一个设备的正常运转,需要控制器(主控芯片的配置,主要是寄存器,gpio,时钟的一些配置,等等)+外围设备(上电+RESET+寄存器设置)的配置当然这些过程涉和Linux系统对整个设备的启动,运行,暂停,释放的管理融合一起,构成了与芯片相结合的嵌入式系统的正常运转。