gpmc资料整理

在dm3730的sprugn4r.pdf手册上说

1、“The GPMC and SDRC are dedicated to memory connection. The GPMC is used for NOR/NAND flash and SRAM memories”

2、GPMC space
Eight independent GPMC chip-selects (gpmc_ncs0 to gpmc_ncs7) are available in the first quarter
(Q0) of the addressing space to access NOR/NAND flash and SRAM memories. The chip-selects have
a programmable start address and programmable size (16, 32, 64, or 128MB) in a total memory space
of 1GB.

3、Global Memory Space Mapping 
Device Name    Start Address       End Address          Size         Description

GPMC           0x0000 0000          0x3FFF FFFF          1GB          8/16 Ex(2)/R/W

第10小节有详细的描述,它其实是一种TI特有的总线的扩展,通过配置它的寄存器,进行一系列操作

The GPMC basic programming model offers maximum flexibility to support various access protocols for
each of the eight configurable chip-selects.(有8个可配置的片选,其中CS0-1是用来做flash的,和FPGA通信可以从CS2-CS7里面选

10.1.5.1 Chip-Select Base Address and Region Size Configuration

可以在1GB的空间里配置基地址和CS(感觉像数据读写的区域,大小从16M到256M),GPMC控制片选CS0~CS6的寄存器由CONFIG7_i配置,在GPMC的寄存器里,一般用到的也就是CONFIG1-CONFIG7这七个配置寄存器,关于片寻的在CONFIG7里。CONFIG7的意义在于,当处理器检测到你往一个地址里写数据,如果这个地址在GPMC的地址范围内的话(对AM3730是0x00000000-0x40000000),它就将地址送到GPMC的地址解码器,在地址解码器里,它将这个地址与各个CONFIG7里的掩码位相与,如果相与后得到的新地址与CONFIG7的base address相同,则相应的片寻位置位,就是变成低电平。

 7个相对应的32位配置寄存器用于控制电气特性,在使用GPMC进行通信前需要对寄存器进行初始化,使GPMC总线的时序,数据控制与FPGA一至。有论文上的配置:



配置寄存器7定义:



1、配置设备类型                           GPMC_CONFIG1

2、配置访问时序,主要读写时序  GPMC_CONFIG2-6

3、配置基地址、容量(即掩码地址)、使能CS信号 GPMC_CONFIG7

网上一些注意的问题

 基地址可以任意设置吗?同掩码地址关系
     1、将CS3基地址设置0x00,掩码容量16 MB。片选地址范围:0x00000000 -  0x00FF FFFF

     结果:无法访问该片选范围。why?? 因为GPMC中CS0-3基地址最小为16MB,即是16MB的倍数。
     验证:将CS3基地址设置0x0200 0000,掩码容量16 MB。可以访问0x0200 0000 -  0x02FF FFFF的16MB区间。
     所以基地址不是任意设置。

具体设置方法:

GPMC_CONFIG7 [5:0]对应A29-24,如果BASEADDRESS设置0x200 0000,则GPMC_CONFIG7 [5:0]= 000010。

               

 

疑问:0x00000000 -  0x00FF FFFF的16MB区间,如何访问??
     
      2、 访问的物理地址 & 掩码地址(即容量)  = 基地址 ,如何实现?

     通过GPMC访问机制:若物理地址落在GPMC的0x00 - 0x1FFF FFFF的512MB地址范围内,则将物理地址信息Address 进行解码。
这里的解码主要是对物理地址Address  同掩码地址做逻辑与&操作,若运算结果,同基地址一致,则使能cs片选信号,同时可以访问该区间; 反之无CS片选且无法访问该区间。

   下面以CS3基地址设置0x0200 0000,掩码容量16 MB实例说明一下:对应CONFIG7_i配置值  

     基地址 BASEADDRESS =0x02  MASKADDRESS = 0xFF,可以访问区间16MB的0x0200 0000 -  0x02FF FFFF


   若读取0x0200 007E地址中内容(即data = *(volatile Uint8 *) adress);首先0x0200 007E属于GPMC地址区间,然后将
  0x0200 007E &0x0F00 0000(掩码地址) =0x0200 00000,该结果同设置基地址相等,则使能CS片选信号且可以访问0x0200 007E地址。


3.2、片选容量验证


  以CS3基地址设置0x0200 0000,掩码容量16 MB实例说明
   第一步:输出片选区域的前10个和 后10个地址中数据(即0x0200 0000 -0x0200 0009 和 0x02FF FFF6 -0x0x02FF FFFF),
   第二步:输出片选区域 末地址+1(即0x0x02FF FFFF + 1 =0x0300 0000)
  

结果:可以读取0x0200 0000 -0x0200 0009 和 0x02FF FFF6 -0x0x02FF FFFF中数据,而读取0x0300 0000中数据,出现程序跑飞或地址指针指向无效内存区。由此可以验证片选容量。
 


3.3设置CS3片选区域,有必要设置CS0-2片选区域(CS0-2片选区域默认256MB)吗?

  结论:如果不是使用CS0-2区域,没有必要设置(虽然CS0-2片选区域默认256MB,但是GPMC_CONFIG_7[6]默认禁止CS片选使能。不使能CS信号,片选区域无法访问 )。


关键还是对寄存器的配置,它就相当于一个字符设备。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值