微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于S3C2440处理器SPI移植全过程

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

时间:11-10 来源:互联网 点击:
环境

硬件: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 arent 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这个设备了!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top