注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小盒子的小盒

知道的越多不知道的就越多

 
 
 

日志

 
 

【原创】基于S3C2440处理器SPI移植全过程  

2011-02-23 09:46:26|  分类: ARM9 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

环境

硬件:S3C2440(ARM920T)

嵌入式操作系统:Linux2.6.24内核

文件系统:Yaffs2文件系统

服务器:SuSe10.0 Linux服务器

第一步:内核配置

【原创】基于S3C2440处理器SPI移植全过程 - Small.Box - 小盒子的小盒

 需要在内核中选择以上几个选项:

很多网友发邮件说Linux2.6.24内核在SPI选项上未发现有Samsung S3C2440 series SPI 或 Samsung S3C24XX series SPI 和User mode SPI device driver support这两个选项。

其实在Linux2.6.24内核里已经兼容了对SPI的操作。只是在Linux2.6.24/drivers/spi/Kconfig中未能选中此选项。至于什么原因看下面的说明:打开Linux2.6.24/drivers/spi/Kconfig

找到以下几个选项:

config SPI_BITBANG
        tristate "Bitbanging SPI master"
        depends on SPI_MASTER #&& EXPERIMENTAL
        help
          With a few GPIO pins, your system can bitbang the SPI protocol.
          Select this to get SPI support through I/O pins (GPIO, parallel
          port, etc).  Or, some systems' SPI master controller drivers use
          this code to manage the per-word or per-transfer accesses to the
          hardware shift registers.

          This is library code, and is automatically selected by drivers that
          need it.  You only need to select this explicitly to support driver
          modules that aren't part of this kernel tree.

使用SPI的时候需要把Bitbanging SPI master打开,但是依赖的条件EXPERIMENTAL,这里我们把这个条件去掉,然后再找到:

config SPI_S3C24XX
        tristate "Samsung S3C24XX series SPI"
        depends on SPI_MASTER && ARCH_S3C2410 && EXPERIMENTAL
        select SPI_BITBANG
        help
          SPI driver for Samsung S3C24XX series ARM SoCs
       
config SPI_S3C2440
        tristate "Samsung S3C2440 series SPI"
        depends on SPI_MASTER && ARCH_S3C2410
        select SPI_BITBANG
        help
          Add by SmallBox at 2011.02.18 SPI driver for Samsung S3C24XX series ARM SoCs
以上蓝色的字是我添加的。为了区别Linux内核默认的配置!修改到这里保存,退出。然后打开该目录下面的Makefile文件,需要做以下修改:

添加:

obj-$(CONFIG_SPI_S3C2440)               += spi_s3c24xx.o

这里说明一下:如果不想在Kconfig中添加我添加的选项,这里就不需要修改Makefile文件了。因为本身已经有对S3C24XX的支持!

修改后保存退出!

下面需要修改的是Linux2.6.24里面的文件:

1)打开smallbox@linux-server:/home/Linux2.6.24/arch/arm/plat-s3c24xx/devs.c 添加一下语句

【原创】基于S3C2440处理器SPI移植全过程 - Small.Box - 小盒子的小盒

 这里还需要说明一下,添加后编译会出现错误。还需要增加相应的头文件:

#include <linux/spi/spi.h>
#include <linux/spi/spidev.h>
#include <asm/arch/spi.h>

如果还有错误,可能就是你的头文件添加的不够。继续查找添加,知道Make成功;

2)打开smallbox@linux-server:/home/Linux2.6.24/arch/arm/mach-s3c2440/mach-hyh2440.c 文件添加

static struct platform_device *utu2440_devices[] __initdata = {
        &s3c_device_usb,
        &s3c_device_lcd,
        &s3c_device_wdt,
        &s3c_device_i2c,
        &s3c_device_iis,
        &s3c_device_usbgadget,
        &s3c_device_ts,
        &s3c_device_dm9000,
        &s3c_device_nand,
        &s3c_device_sound,
        &s3c_device_buttons,
        &s3c_device_rtc,
        &s3c_device_sdi,
        &s3c_device_spi0,

};
保存退出!

最后就可以Make了。下载你的内核,启动你的硬件,你会在dev下发现spidev0.1这个设备了!

 

作者:小盒子
时间:2011.02.23
地点:大连

注:本文属小盒子原创,转载请注明出处,谢谢合作!


 

  评论这张
 
阅读(1818)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017