没有合适的资源?快使用搜索试试~ 我知道了~
GPMC用百度搜索,百度百科会告诉你是什么组策略管理控制台,所以关于硬件GPMC(TI所特有的总线)的中文资料很少,我觉得很有必要把自己做的东西分享一下,本人刚接触Linux驱动,水平有限不对的地方望指教。
资源详情
资源评论
资源推荐
GPMC 与 FPGA 通信
转载请注明出处:http://blog.csdn.net/qq405180763/article/details/7616941
最近这一两个月研究 AM3730 的 GPMC 与 FPGA 的通信,我负责的主要是涉及到 GPM
C 这一块,由于之前就没有 Linux 基础,刚开始的时候进展很慢,还时不时的面临来自
外界的压力,所以那会很痛苦。前一个月用来熟悉 Linux 和摸清一个方向,摸清 GPMC
在内核的目录之后,开始真正的 GPMC 之旅。
GPMC 用百度搜索,百度百科会告诉你是什么组策略管理控制台,所以关于硬件 GPM
C(TI 所特有的总线)的中文资料很少,我觉得很有必要把自己做的东西分享一下,本
人刚接触 Linux 驱动,水平有限不对的地方望指教。
整个 GPMC 做完之后会发现其实它很简单,只是在刚开始做的时候会对它的控制机制
不太清楚,花费不少时间去读技术手册和到 TI 的官网查。GPMC 相比于我以前所做过
的单片机,主要有两点大的区别。第一是 GPMC 的片选寻址机制,第二是 GPMC 的数
据输出时的写法。
首先来讲讲 GPMC 的片寻,GPMC 总共有八个片寻 CS0-CS7,其中 CS0-1 是用来做 fla
sh 的,和 FPGA 通信可以从 CS2-CS7 里面选。在 GPMC 的寄存器里,一般用到的也就
是 CONFIG1-CONFIG7 这七个配置寄存器,关于片寻的在 CONFIG7 里。CONFIG7 的意
义在于,当处理器检测到你往一个地址里写数据,如果这个地址在 GPMC 的地址范围
内的话(对 AM3730 是 0x00000000-0x40000000),它就将地址送到 GPMC 的地址
解码器,在地址解码器里,它将这个地址与各个 CONFIG7 里的掩码位相与,如果相与
后得到的新地址与 CONFIG7 的 base address 相同,则相应的片寻位置位,就是变成
低电平。
理解了片寻的置位过程后,再来讲讲 GPMC 数据输出。以前做单片机的时候,单片机
总会为你提供一个 data 寄存器或者输出端口的地址,往这两个的地址里写好数据它会
自动按规则将数据送到端口输出,依照这样的思路我在 3730 的技术手册里不断的找
GPMC 数据寄存器或者是输出端口的地址地址,找了好久没找到,后来我分析网口和 fl
ash 的代码时发现,他们对硬件地址的写入操作只涉及到 CONFIG1-7 这七个寄存器,
并没有特定的地址寄存器或者端口地址,然后直接往 CONFIG7 申请好的地址里写数据
就行了,以此我就猜测 GPMC 的地址数据输出都是由硬件自动完成的,根本不需要有
特定的数据寄存器,或者可以理解为申请好的与片寻对应的地址空间都是数据寄存器,
往这些地址里写数据就能直接在输出的数据端口检测到,同时地址线的输出也是由 37
30 的硬件自动完成的,只要是在片寻地址空间内的地址,他都会往 GPMC 的地址线上
输出。后来用示波器来检测确实证实了我这一猜想,对我来说这有点像是颠覆了我对
数据口控制的认识,只能说硬件的设计越来越智能化,很多协议和时序上的东西越来
越多由硬件自己就完成,而减少了开发人员在硬件上所耗费的时间。
理解了这两点,其实 GPMC 就做的差不多了,接下来的就只是在时序上与下位机的匹
配问题,调一调时序就基本上能通信了。
angelnotear
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2