12912|23

34

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

讨论beaglebone,并请教一个spi的问题。 [复制链接]

 

各位,最近在调beaglebone的spi驱动,但是遇到些问题。

 

我是按照http://communistcode.co.uk/blog/blogPost.php?blogPostID=1这篇文章做的。

 

在编译uimage前,menuconfig的地方把driver下的SPI里面全都选择了y,

 

重新编译了uimage,下载到sd卡(覆盖了原来的),

 

然后把sd卡插到beaglebone上,上电启动,打开minicom(ubuntu下),可以看到正常启动。

 

问题是:  root登陆后,cd到dev文件夹下,ls -l,没有发现有spidev1.1文件。

 

请问一下各位,问题出在什么地方?

 

谢谢!

 

我的邮箱gooodo@163.com,欢迎交流。

最新回复

ARM开发比简单的SPI程序设计难多了,以后还要多学习这方面的知识。看楼主这样做都有些困难,对于新手来说就更难了。  详情 回复 发表于 2013-11-17 11:09
点赞 关注
 

回复
举报

640

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
menuconfig的时候应该能看到:SPIDEV 选择项。
 
 

回复

640

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
 
 
 

回复

5979

帖子

8

TA的资源

版主

4
 
需要从打印的信息里面找原因
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(高级)

5
 
谢谢楼上

今天我把spi驱动编译成了模块,生成spidev.ko文件,拷到sd卡的Angstrom/lib/medule/drivers/spi(这个路径记不清了),然后插到beaglebone上,上电,minicom上cd到spidev.ko所在的文件夹下,然后insmod spidev.ko,
结果报错。
编译内核前修改了arch/arm/march_am335x.c文件,如下:
Step 1) Add the following struct to the kernel source file arch/arm/mach-omap2/board-am335xevm.c

static struct spi_board_info bone_spi0_info[] = {
{
.modalias = "spidev",
.max_speed_hz = 48000000, //48 Mbps
.bus_num = 1,
.chip_select = 0,
.mode = SPI_MODE_1,
},
};


Step 2) Change the spi0_init function in the kernel source file arch/arm/mach-omap2/board-am335xevm.c so it reads the same as the following:

static void spi0_init(int evm_id, int profile)
{
setup_pin_mux(spi0_pin_mux);
spi_register_board_info(bone_spi0_info,
ARRAY_SIZE(bone_spi0_info));
return;
}


请问一下还需要修改哪些地方?

我下载uimage和spidev.ko文件的时候,用sd卡读卡器,在ubuntu下直接拷贝过去的,不是用的cp命令(就像windows下拷贝),请问这样做是不是可以?还要不要sync一下?

我明天试一下把spi驱动编译到内核。

结果再到这里来反馈。

多说一句:现在的beaglebone的资料太少了,我把我遇到的问题贴到这,希望对大家又点帮助。

对了,按二楼的计划,你7月2号就开始调spi的驱动了哈,等待你的结果。

谢谢!
 
 
 

回复

5979

帖子

8

TA的资源

版主

6
 
注意一下这个地方的配置,我的测试是可以的




点评

版主,请教一下beaglebone中spi时钟的问题? 我的spi自测已经通过了~现在与28335通信总是没有时钟信号,详细情况如下: spi相关的部分设置如下:内核是 \'Linux-3.1.0-psp04.06.00.03. SDK\' 在board-am335xevm.  详情 回复 发表于 2012-8-8 10:52
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(高级)

7
 

 

 

1:楼上你是编译到内核还是模块?

 

2:编译的uimage是不是放到sd卡的angstrom/boot文件夹下?

 

3:angstrom的文件系统和uimage的关系大不大?也就是说3.1的angstrom文件系统可不可以和3.2kernel编译的uimage一起使用?

 

 

我今天编译的uimage启动不了,从minicom打印看,走到半截不走了,已经解压kernel,解压到半截。

 

我感觉是在menuconfig没有配置好,明天按你的说法再配置一下试试。

 

谢谢斑竹。

 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(高级)

8
 
谢谢六楼提示,今天调试spi驱动成功,过几天来叫作业。
 
 
 

回复

5979

帖子

8

TA的资源

版主

9
 
给力!期待你的报告
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(高级)

10
 
Beaglebone SPI驱动

入手beaglebone后,花了几天的时间搭建了开发环境,步骤就按照sdg.pdf的步骤,在此不多说了。Vmware workstation+ubuntu10.04,最好不换其他的虚拟机。

Ti的psp里已经写好了spi的驱动并包含了linux3.2,在这里做一些修改的就可以了,以下内容来自网络。

修改arch/arm/mach-omap2/board-am335xevm.c
static struct spi_board_info bone_spi0_info[] = {
{
.modalias = "spidev",
.max_speed_hz = 48000000, //48 Mbps
.bus_num = 1,
.chip_select = 0,
.mode = SPI_MODE_1,
},
};
static void spi0_init(int evm_id, int profile)
{
setup_pin_mux(spi0_pin_mux);
spi_register_board_info(bone_spi0_info,
ARRAY_SIZE(bone_spi0_info));
return;
}


在beaglebone_dev_cfg[] struct加上:
{spi0_init, DEV_ON_BASEBOARD, PROFILE_NONE},

下一步就是编译kernel,但是需要注意两个地方,在此感谢3楼,6楼的提示。

编译后,uimage会放在arch/arm/root下,用它覆盖掉sd卡的就行了。

下面就是测试程序,documention目录下有spidev_test.c,下一步就是gcc一下(arm-arago-linux-gnueabi-gcc spidev_test.c –o spidevtest),会生成一个spidev_test的可执行文件,cp到sd卡的随便一个文件夹下。

回到beaglebone,启动,登陆root,cd到spidev_test所在的目录,./apidev_test –D /dev/spidev.1.0,就可以在minicom看到了。短接beaglebone P9的18和21引脚,然后再运行,ok通了。

如果系统跑不起来,可以换一个uboot和mlo试试,换成angstrom-distribution.com上下的。
 
 
 

回复

5979

帖子

8

TA的资源

版主

11
 
  不错不错

感谢分享!
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

12
 

通信模式测试好了吗?

你好,我也开发beaglebone的spi,自测双路已经好了,但是与DSP28335通信的时候,总是测不到时钟信号,楼主有新的进展么?求指导!
 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(高级)

13
 
你好,我的spi可以通信,最近在调中断,你把具体的问题贴出来讨论吧。

这样说的没法回答。
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

14
 

我的spi设置是不是有问题

我的spi与spi相关的部分设置如下:内核是 'Linux-3.1.0-psp04.06.00.03. SDK'
board-am335xevm.c中
static structspi_board_info bone_spi0_info[] = {
{
.modalias = "spidev",
.max_speed_hz = 48000000, //48 Mbps
.bus_num = 1,
.chip_select = 0,
.mode = SPI_MODE_0,(自己根据时钟信号改的)
},
};

static void spi0_init(intevm_id, int profile)
{
setup_pin_mux(spi0_pin_mux);
spi_register_board_info(bone_spi0_info,
ARRAY_SIZE(bone_spi0_info));
return;
}
在 beaglebone_dev_cfg[] 中:
{spi0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
在终端显示如下:
./dev/spidev1.0
./dev/.udev/names/spidev1.0
./sys/devices/platform/omap/omap2_mcspi.1/spi1.0/spidev
./sys/devices/platform/omap/omap2_mcspi.1/spi1.0/spidev/spidev1.0
./sys/bus/spi/drivers/spidev
./sys/class/spidev
./sys/class/spidev/spidev1.0
用spidev_test.c测试通信正常:

root@am335x-evm:/mnt# ./spidev_test -D /dev/spidev1.0
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)
FF FFFFFFFFFF
40 00 00 00 00 95
FF FFFFFFFFFF
FF FFFFFFFFFF
FF FFFFFFFFFF
DE AD BE EF BA AD
F0 0D
其他地方我没有进行更改,采用的是默认的方式,用spidev_fdx.c测试的时候没有时钟信号?(保持低电平)
spi相关地方的默认设置是:
/* Module pin mux for SPI fash */
/*static struct pinmux_config spi0_pin_mux[] = {
{"spi0_sclk.spi0_sclk", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL
       | AM33XX_INPUT_EN},
{"spi0_d0.spi0_d0", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL | AM33XX_PULL_UP
       | AM33XX_INPUT_EN},
{"spi0_d1.spi0_d1", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL
       | AM33XX_INPUT_EN},
{"spi0_cs0.spi0_cs0", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL | AM33XX_PULL_UP
       | AM33XX_INPUT_EN},
{NULL, 0},
};
我觉得设置应该有问题,但找不到原因,请指点!

 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

15
 
楼主望指点啊?
 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(高级)

16
 
我也是刚入手arm,你问问斑竹,实在帮不上你。
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

17
 
大哥,那你的spi时钟是怎么搞定的呢?可以把涉及到的地方给我指点一下吗?邮箱609192501@qq.com。谢谢!
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

18
 

回复 6楼 chenzhufly 的帖子

版主,请教一下beaglebone中spi时钟的问题?
我的spi自测已经通过了~现在与28335通信总是没有时钟信号,详细情况如下:
spi相关的部分设置如下:内核是 'Linux-3.1.0-psp04.06.00.03. SDK'
在board-am335xevm.c中

static structspi_board_info bone_spi0_info[] = {
{
.modalias = "spidev",
.max_speed_hz = 48000000, //48 Mbps
.bus_num = 1,
.chip_select = 0,
.mode = SPI_MODE_0,(自己根据时钟信号改的,看到寄存器MCSPI_CHCONF0的值为0X2c,也就是POL=0,PHA=0?这样对吗?)},
};

static void spi0_init(intevm_id, int profile)
{
setup_pin_mux(spi0_pin_mux);
spi_register_board_info(bone_spi0_info,
ARRAY_SIZE(bone_spi0_info));
return;
}
在 beaglebone_dev_cfg[] 中:
{spi0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
在终端显示如下:
./dev/spidev1.0
./dev/.udev/names/spidev1.0
./sys/devices/platform/omap/omap2_mcspi.1/spi1.0/spidev
./sys/devices/platform/omap/omap2_mcspi.1/spi1.0/spidev/spidev1.0
./sys/bus/spi/drivers/spidev
./sys/class/spidev
./sys/class/spidev/spidev1.0
用spidev_test.c测试通信正常:

root@am335x-evm:/mnt# ./spidev_test -D /dev/spidev1.0
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)
FF FFFFFFFFFF
40 00 00 00 00 95
FF FFFFFFFFFF
FF FFFFFFFFFF
FF FFFFFFFFFF
DE AD BE EF BA AD
F0 0D
内核中的其他地方我没有进行更改,采用的是默认的设置,用spidev_fdx.c测试的时候没有时钟信号?(保持低电平)
spi相关地方的默认设置是:
/* Module pin mux for SPI fash */
/*static struct pinmux_config spi0_pin_mux[] = {
{"spi0_sclk.spi0_sclk", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL
       | AM33XX_INPUT_EN},
{"spi0_d0.spi0_d0", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL | AM33XX_PULL_UP
       | AM33XX_INPUT_EN},
{"spi0_d1.spi0_d1", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL
       | AM33XX_INPUT_EN},
{"spi0_cs0.spi0_cs0", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL | AM33XX_PULL_UP
       | AM33XX_INPUT_EN},
{NULL, 0},
};
我觉得设置应该有问题,但找不到原因,请版主指点!
 
 
 

回复

5979

帖子

8

TA的资源

版主

19
 
这个问题比较复杂了
首先要判断硬件有没有问题,其次是设置有没有问题

点评

版主好,硬件应该没有问题: 对于beaglebone来说,自测已经通过,硬件应该没问题, 对DSP28335来说,通信程序在powerpc5125上通信是正常的,与arm原理相同,应该没有问题。DSP28335是买的开发板,硬件应该没问题。  详情 回复 发表于 2012-8-9 09:30
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

20
 

回复 19楼 chenzhufly 的帖子

版主好,硬件应该没有问题:
对于beaglebone来说,自测已经通过,硬件应该没问题,
对DSP28335来说,通信程序在powerpc5125上通信是正常的,与arm原理相同,应该没有问题。DSP28335是买的开发板,硬件应该没问题。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表