飞凌课堂 I AM5718 GPMC驱动示例讲解

原创 2020-03-07 18:05:00 AM5718 GPMC驱动

一、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 信号。

 

 点击此处进入源代码下载地址>>   提取码为:j89C


相关产品 >

  • OK5718-C开发板

    TIAM57x系列 AM5718开发板基于ARM+DSP多核异构AM571x处理器设计,包含ARM Cortex-A15、ARM Cortex-M4、DSP、PRU、GPU多种不同架构,适用于工业通信、人机界面、HMI、自动化控制、工厂自动化、楼宇自动化、机器视觉、医疗成像、
    测试与测量、汽车多媒体等领域。如您对ARM+DSP、ARM+PRU、ARM+M4感兴趣欢迎致电AM5718厂家咨询电话400-699-6866
    了解详情
    OK5718-C开发板
  • OKMX8MP-C开发板

    内置NPU、ISP,AI计算能力高达2.3TOPS|飞凌嵌入式i.MX8MP 系列-NXP iMX8M Plus 开发板 基于高性能低功耗工业级iMX8MP核心板设计,支持多种多种高速通信接口。iMX8MP开发板内置NPU,AI计算能力2.3TOPS,支持4K,支持双图像信号处理器(ISP),是一款支持LinuxQT/android操作系统的iMX8MP开发板。

    了解详情
    OKMX8MP-C开发板

推荐阅读 换一批 换一批