"); //-->
一、GPMC简介
GPMC的全称是 General-Purpose Memory Controller,即通用存储控制器,是TI的arm芯片AM5718用来与外部存储设备例如NOR FLASH、NAND FLASH、SRAM等等通信的一个接口。这个接口并不是AM5718特有的,在BeagleBone Black、AM35XX等芯片上也有类似接口。
特点:
1.灵活的 8 位和 16 位异步存储器接口
2.具有多达8个片选
3.支持NAND、NOR、复用NOR和SRAM
4.最大支持512MB的片外存储器连续地址空间的访问
二、GPMC的硬件连接方式
1.GPMC 与 16位的地址数据复用的外部存储设备设备连接:
2.GPMC 与16位的非复用外部存储设备连接
3.GPMC 与8位的非复用外部存储设备连接
4.GPMC与8位的NAND FLASH连接:
三、OK5718-C GPMC 总线接口
OK5718-C 预留出 GPMC 总线接口,引出 GPMC_AD[15: 0]数据地址复用信号,可作为总线设备
连接测试使用。定义如下
此示例中OK5718把GPMC接口配置为异步模式并设置NOR FLASH、地址数据线复用的模式,实际只使用到了如下I/O口,信号方向如下图所示。
GPMC_AD[15:0]: 16位地址/数据线
GPMC_CS0/ GPMC_CS3: 片选信号
GPMC_OEN_REN: 输出使能信号
GPMC_WEN: 写使能信号
GPMC_ADVN_ALE: 地址有效信号
四、配置设备树
linux内核有关gpmc的讲解可参考内核目录的下列文件:
OK57xx-linux-kernel/Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt
OK57xx-linux-kernel/Documentation/devicetree/bindings/mtd/gpmc-nor.txt
OK57xx-linux-kernel/Documentation/devicetree/bindings/mtd/gpmc-nand.txt
我们需要Ok5718修改的设备树文件为OK57xx-linux-kernel/arch/arm/boot/dts/ok5718-idk.dts
下面为已经调试好的设备树代码
1.增加Gpmc引脚配置
2.增加GPMC结点
配置片选引脚为3、Base address为0x8000000 和 地址空间为0x1000000。
ranges = <3 0 0x08000000 0x1000000>;
配置的各项时序参数。
四、实验结果
将测试程序代码交叉编译后,将可执行文件app-fram 拷贝到5718开发板
执行app-fram read 命令
抓取CS3 ADVN和OEn的波形如下, GPMC一次的读取周期大概为112ns。
通道1为片选信号CS3,通道2为输出使能信号OEn
通道1为片选信号advn,通道2为输出使能信号OEn
通道1为片选信号advn,通道2为输出使能信号AD2 信号。
点击进入飞凌嵌入式官网,了解更多关于信息>>
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。