×
单片机 > 单片机程序设计 > 详情

基于S3C2440处理器SPI移植全过程

发布时间:2020-05-30 发布时间:
|
环境

硬件:S3C2440(ARM920T)

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

文件系统:Yaffs2文件系统

服务器:SuSe10.0 Linux服务器

第一步:内核配置

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

很多网友发邮件说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 添加一下语句

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

#include
#include
#include

如果还有错误,可能就是你的头文件添加的不够。继续查找添加,知道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这个设备了!



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式