RF2401在6410开发板linux系统下的驱动(一)

本文介绍了在友善之臂6410开发板上,基于Linux 2.6.38内核如何为RF2401无线模块编译和添加SPI驱动。通过修改`s3c64xx_spi0_csinfo`和`s3c64xx_spi1_csinfo`结构体,将SPI设备添加到系统中,并通过spidev_test.c程序进行测试,成功实现了SPI通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

(一)6410在linux下spi驱动及测试

 

还有2周就过年了,学校的事没有进展,弄点自己想弄滴,手头有一块RF2401的无线模块,之前是在arm9的裸机用了一下,现在想通过6410开发板来使用这个无线模块,因为无线模块式spi接口的,板子下/dev没有对应的设备,先将spi驱动编译进入内核

 

主机:    ubuntu               2.6.32
开发板:友善之臂6410    2.6.38

 

 

Step1:打开arch/arm/mach_s3c64XX/mach_mini6410.c
       增加如下代码:
static void  cs_set_level(unsigned line_id, int lvl) {
    gpio_direction_output(line_id, lvl);
};

static struct s3c64xx_spi_csinfo s3c64xx_spi0_csinfo = {
  .fb_delay=100,
  .line=S3C64XX_GPC(3),
  .set_level=cs_set_level,
};

static struct spi_board_info s3c6410_spi0_board[] = {
[0] = {
.modalias = "spidev",
.bus_num= 0,
.chip_select= 0,
.irq =IRQ_SPI0,
.max_speed_hz= 500*1000,
.mode=SPI_MODE_0,
.controller_data=&s3c64xx_spi0_csinfo,
},
};

static struct s3c64xx_spi_csinfo s3c64xx_spi1_csinfo = {
  .fb_delay=100,
  .line=S3C64XX_GPC(7),
  .set_level=cs_set_level,
};

static struct spi_board_info s3c6410_spi1_board[] = {
[0] = {
.modalias = "spidev",
.bus_num= 1,
.chip_select= 0,
.irq = IRQ_SPI1,
.max_speed_hz = 500*1000,
.mode=SPI_MODE_0,
.controller_data=&s3c64xx_spi1_csinfo,
},
};


找到platform_add_devices(mini6410_devices, ARRAY_SIZE(mini6410_devices));

    &s3c64xx_device_spi0,
    &s3c64xx_device_spi1,
加入到mini6410_devices结构中,就可以将设备s3c64xx-spi.0和s3c64xx-spi.1进行初始化,

 

在函数 mini6410_machine_init中添加:
s3c64xx_spi_set_info(0,0,2);
s3c64xx_spi_set_info(1,0,2);
spi_register_board_info(s3c6410_spi0_board, ARRAY_SIZE(s3c6410_spi0_board));
spi_register_board_info(s3c6410_spi1_board, ARRAY_SIZE(s3c6410_spi1_board));

mach_mini6410.c头文件里面添加头文件
#include <linux/spi/spidev.h>
#include <linux/spi/spi.h>
#include <plat/s3c64xx-spi.h>


Step2:
在此目录中找到:Makefile,打开
修改成
# device support
obj-y                += dev-uart.o
obj-y                += dev-audio.o
obj-y                += dev-spi.o

现在成功编译make zImage

给板子重新刷上系统,就可以在dev下看到spidev0.0,spidev1.0了


Step3:测试spi口
使用Linux源码包下的/home/src/linux-2.6.32.2/Documentation/spi/spidev_test.c 程序来检测

root@seraph-desktop:/home/seraph/spitest# cp /usr/src/linux-2.6.38/Documentation/spi/spidev_test.c /home/seraph/spitest/
root@seraph-desktop:/home/seraph/spitest# ls
spidev_test.c
root@seraph-desktop:/home/seraph/spitest# gedit spidev_test.c
root@seraph-desktop:/home/seraph/spitest# arm-linux-gcc spidev_test.c -o spi

将编译好的程序拷至u盘,插在板子上

用一根跳线将SCON接口的13针脚和14针脚连接

[root@FriendlyARM ]# cd udisk 
[root@FriendlyARM /udisk]# cd spitest/                                         
[root@FriendlyARM spitest]# ./spi                                              
spi mode: 0                                                                   
bits per word: 8                                                               
max speed: 496268 Hz (496 KHz)                                                 
                                                                               
FF FF FF FF FF FF                                                              
40 00 00 00 00 95                                                              
FF FF FF FF FF FF                                                              
FF FF FF FF FF FF                                                              
FF FF FF FF FF FF                                                              
DE AD BE EF BA AD                                                              
F0 0D                         

ok 友善之臂6410在linux下spi驱动及测试成功!
感谢网上的各位linuxer的文章帮我解决很多问题!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值