打印

AM335x的GPMC测试

[复制链接]
18645|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlass|  楼主 | 2013-4-16 14:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jlass 于 2013-5-9 15:32 编辑

硬件整完了,开始整软件了,这里我只说一下GPMC的测试,其他类似的直接参考就是了。
这是网上某个大牛的**,很有参考意义。
http://blog.chinaunix.net/uid-730738-id-3266709.html

废话不多说,开始吧,先是内核的改动

1、函数释出
在arch/arm/mach-omap2/gpmc.c文件里的gpmc_cs_write_reg与gpmc_cs_read_reg函数之后分别加上
EXPORT_SYMBOL(gpmc_cs_write_reg);
EXPORT_SYMBOL(gpmc_cs_read_reg);
这样的话你的驱动就可以调用他们了。如果你还想调用其他函数的话,请参考这两个函数的处理,另外,不要忘了去arch/arm/plat-omap/include/plat/gpmc.h文件里声明一下。

2、引脚定义
比如定义gpmc_ad10,写法如下
{"gpmc_ad10.gpmc_ad10", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
当内核加载时出现错误,显示"gpmc_ad10.gpmc_ad10"不存在时,请去arch/arm/mach-omap2/mux33xx.c文件里完善一下下面的语句。
_AM33XX_MUXENTRY(GPMC_AD10, 0, "gpmc_ad10", "lcd_data18", "mmc1_dat2", "mmc2_dat6", NULL, NULL, NULL, "gpio0_26"),
很明显gpmc_ad10已经存在了,但是还有三个NULL,如果你刚好使用到的话就会报错,请花点时间去完善一下。
引脚定义完成后请使用setup_pin_mux设定,并放到init函数里自动执行。

3、驱动部分
因为我以前一直使用的是2.6的核,所以简单说明一下3.0以上版本的核与2.6的区别,具体的可以去网上查看
ioctl变成unlocked_ioctl,并且inode参数省去了
init_MUTEX(******)变成sema_init(******,1)

4、测试代码
反正每个公司都有自己的风格,具体的代码我直接放附件好了,这里说一下遇到的问题

问题一:驱动加载时显示XXX函数没定义,编译的时候也报XXX函数没定义
在内核里把需要使用的函数前面的static删除,再在其后加上EXPORT_SYMBOL(***),并在gpmc.h文件里声明成extern。
重新编译内核,把新编译的内核烧到板子里去

问题二:驱动加载时显示XXX函数没定义,但是编译的时候却没报
在驱动文件里添加这一句
MODULE_LICENSE("Dual BSD/GPL");

问题三:想查看0x10000000地址的数据,使用(*((volatile unsigned int*)(0x100000000)))语句直接返回段错误。
估计3.0以上版本的内核已近不允许直接的地址读写了,要使用gpmc_cs_request申请一块内存,然后用ioremap重映射一下。我这里映射之后的地址为0xD2020000,然后使用(*((volatile unsigned int*)(0xD2020000)))语句就可以了。当然,你也可以调用readb,readw,readl函数,效果是一样的。

问题四:地址线A0~A11有效,A12以上的无效。
GPMC_CONFIG的bit2位的限制,默认是1,写成0就可以了

问题五:驱动加载第一次可以,第二次就不行了
每次request之后,记得要用free释放一下

问题六:使用wait线写数据,芯片卡死
经过多次测试后发现当使用intel模式的时候是可以的,但是使用motorola模式时,芯片会卡死,也就是说使用wait线时,片选必须比写要宽,否则芯片就会卡死。
所以,当要和motorola模式连接时,不能使用片选线直连,而应该使用ADV线与对端的片选线相连,AM335x的片选线可以悬空。(注:由于环境所限,我没有测试过,但应该是可行的)
因为motorola模式是不连接RD线的,所以读没有影响。

(问题七由热心网友yi215415提供)
问题七:调用gpmc_write_reg等函数时,显示段错误
由于内核初始化时omap_init_gpmc函数未调用所致,加入即可。
注:如果支持nand的板子,这个函数在nand的初始化中已经调用了,对于不支持nand的板子,需要特别注意此问题。

声明:附件中的代码仅为测试使用,由于个人环境的不同需要自己做一些修改,如果由于代码写的太烂而引起的不快,不爽,甚至不举,本人不负任何责任。

相关帖子

沙发
jlass|  楼主 | 2013-4-16 14:37 | 只看该作者
本帖最后由 jlass 于 2013-4-16 14:39 编辑

使用前请先输入
mknod /dev/TEST c 251 0

driver.tar.gz

20.12 KB

使用特权

评论回复
板凳
MCU2me| | 2013-4-16 14:44 | 只看该作者
先mark后看

使用特权

评论回复
地板
Wesley102| | 2013-4-19 16:06 | 只看该作者
正好在弄这个借见下

使用特权

评论回复
5
神龙斗士| | 2013-4-24 15:11 | 只看该作者
大神,我最近在搞这个东西,可是我不知道GPMC是干嘛用的,它的作用是什么 ,你能跟我讲讲吗

使用特权

评论回复
6
jlass|  楼主 | 2013-4-24 17:27 | 只看该作者
神龙斗士 发表于 2013-4-24 15:11
大神,我最近在搞这个东西,可是我不知道GPMC是干嘛用的,它的作用是什么 ,你能跟我讲讲吗 ...

就是并口

使用特权

评论回复
7
huangxz| | 2013-4-24 23:14 | 只看该作者
jlass 发表于 2013-4-24 17:27
就是并口

A8处理器,好爽啊

使用特权

评论回复
8
llck| | 2013-4-25 21:04 | 只看该作者
mark

使用特权

评论回复
9
alexer| | 2013-6-4 09:28 | 只看该作者
你好LZ,能请问下GMPC总线的数据传输速度能到多少啊?

使用特权

评论回复
10
alexer| | 2013-6-4 14:45 | 只看该作者
LZ,关于GPMC并口总线通信,取数据具体是一个什么样的模式呢?还有参数的设置。和FPGA通信是固定模式吗?是不是可以直接将数据存储到外部设备?

使用特权

评论回复
11
jlass|  楼主 | 2013-6-4 15:01 | 只看该作者
alexer 发表于 2013-6-4 14:45
LZ,关于GPMC并口总线通信,取数据具体是一个什么样的模式呢?还有参数的设置。和FPGA通信是固定模式吗?是 ...

GMPC总线的数据传输速度能到多少啊
几百兆吧,这个限制主要还是在外设上

关于GPMC并口总线通信,取数据具体是一个什么样的模式呢
复用或者非复用都可以,还可以连续存取值,官方叫burst模式。

还有参数的设置。和FPGA通信是固定模式吗
随便什么模式都可以,关键看你的FPGA代码

是不是可以直接将数据存储到外部设备
可以

使用特权

评论回复
12
apipi| | 2013-6-10 09:36 | 只看该作者
正在搞,参考下

使用特权

评论回复
13
huanghx1990| | 2013-7-2 11:22 | 只看该作者
,最近正在学习这个GPMC通信的相关知识呀

使用特权

评论回复
14
lilyalp| | 2014-3-12 21:11 | 只看该作者
学习

使用特权

评论回复
15
alexer| | 2014-3-13 09:15 | 只看该作者
神龙斗士 发表于 2013-4-24 15:11
大神,我最近在搞这个东西,可是我不知道GPMC是干嘛用的,它的作用是什么 ,你能跟我讲讲吗 ...

GPMC是一个8位地址 16位数据的高速并口总线

使用特权

评论回复
16
alexer| | 2014-3-13 09:17 | 只看该作者
http://www.qiytech.com/bbs/关于GPMC的问题,可以进论坛交流

使用特权

评论回复
17
侠骨千年| | 2014-5-8 19:08 | 只看该作者
十分感谢楼主。。。。。。。。。。。。。

使用特权

评论回复
18
jccg1000136496| | 2014-8-28 21:27 | 只看该作者
楼主,我的gpmc,用wait写时直接卡死,我用的异步的模式,而且读写分别用we和oe两个信号线,应该是intel模式的,不知道是什么问题。求楼主帮忙分析。。

使用特权

评论回复
19
SinA31S| | 2014-8-28 21:54 | 只看该作者
赞一个 :victory:

使用特权

评论回复
20
lqr0312| | 2015-2-26 13:39 | 只看该作者
顶,正在研究,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:暗恋失败,分手未遂,入赘无果,破保险套!!!

80

主题

4493

帖子

26

粉丝