浅析AM335x GPMC模块地址区域的划分–TI–Sitara AM335x系列

我们知道AM335x的GPMC模块作为一组并行的外部总线接口,使用的频率还是挺高的,在这上面可以挂NAND FLASH,NOR FLASH,FPGA,DM9000等等设备。
        使用的方式,从硬件方面来说,GPMC总线上挂的设备共享了数据线、地址线和一些控制线,然后由片选信号控制、使能对应的设备。这里需要提到一点,不同片选的地址空间配置、时序配置,都是分开的,参考TRM中关于GPMC_CONFIG1_i~GPMC_CONFIG7_i的配置说明,i的取值决定了写入的地址区间不同,对应的就是不同的片选。
软件配置上面,时序配置就不赘述了,主要有个问题容易引起大家疑惑,那个地址空间的配置是怎样的?下面就这个问题,简要解析一下:
        首先,GPMC是可以对每个片选上的设备进行地址区间的分配,配置起来也非常灵活。举个例子:对于片选0,我们把地址空间配置为0x0000_0000~0x0400_0000;对于片选1,地址空间配置成0x0600_0000~0x0A00_0000;这样完成配置了后,如果往0x0000_0004这个地址里写数据,由于它属于片选0的地址区间,所以这个时候CPU就会去使能片选0(拉低GPMC_CS0n),从而对片选0上的设备进行操作;如果写的是0x0600_0010地址空间,属于片选1的,就会去使能片选1(拉低GPMC_CS1n),操作片选1上的设备。通过这种方式,就实现对不同的设备操作。PS:
如果是对未分配的地址空间操作,则没有片选信号会拉低,操作无效;对于已经分配了的片选地址空间,一定要注意,不要交叠,以免发生冲突。

打开AM335x的TRM,第二章2.1 ARM Cortex-A8 Memory Map中可以看到,对GPMC的外部内存地址分配的空间为512MB,从0x0000_0000~0x1FFF_FFFF。这个意思就是说,GPMC给所有片选分配的地址空间都必须要在这个区域之内。每个片选的地址分布,是在GPMC_CONFIG7_i中定义的,可以参考TRM中详细的示例讲解,在这里时间有限,我就挑重点的说了。
        1. 首先要确定你是GPMC的device是NAND类型的,还是NOR类型的,在GPMC_CONFIG1中有定义,对于位宽的定义、同步、异步操作模式的定义也是在GPMIC_CONFIG1中定义的,不赘述。
        2. 时序,这一点根据你实际的NAND/NOR或者相关手册定义就好,配置到相应片选信号的GPMC_CONFIG中。
        3.地址,重点!GPMC_CONFIG7中:
        bit[6]明显是确定当前所在的片选信号是否可用,即为,当前的片选上是否挂有device需要使用。有就置为1即可。
        bit[11-8]这个mask address,其实是规划了当前片选地址空间的大小,注意最小为16MB。16MB的地址空间的跨度即为0~0x00FF_FFFF(低24位),所以在规划基地址的时候,只需要定义最高位即可,因为低位的地址,低24位都是可以由写入的地址区间来决定,只有基地址需要我们定义和片选相关联。

        bit[5-0]是base address,即为基地址的规划。上面提到过地址空间的最小规划为16MB地址空间跨度最小为为0~0x00FF_FFFF,对应的,这个基地址定义了高位上面的地址值(高8位),同时把这个地址与当前的片选相关联。举个例子,当前寄存器为GPMC_CONFIG7_0,当我的基地址规划为0x08,大小划归成16MB时,也就是说,我规划的片选0的地址空间为0x0800_0000
~ 0x08FF_FFF;类似的,当我在寄存器中GPMC_CONFIG7_2的基地址定为0x0A,大小规划为128MB时,地址空间即为:起始地址:0x0A00_0000,结束地址为0x0A00_0000+0x08FF_FFFF=0x12FF_FFFF。

        最后强调两点:1.地址空间的分步,不要重叠;2.地址空间的区域要在0x0000_0000~0x1FFF_FFFF范围之内。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值