This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM6442: 使用R5核对GPMC进行配置与FPGA通信该如何操作地址发送和读取数据

Part Number: AM6442


你好:

我们想使用AM6442上的R5核与FPGA进行通信,接口采用AM6442的GPMC外设,根据TRM的2.Memory Map章节,在主域中存在两个地址,分别为GPMC0_CFG和GPMC0_DATA。

其中GPMC0_CFG是用于配置GPMC的寄存器,而GPMC0_DATA所映射的区域为0x50000000~0x57FFFFFF,而根据GPMC0_CFG中的GPMC_CONFIG7_i 寄存器的BASEADDRESS和MASKADDRESS字段的说明,以及TRM中有关GPMC章节的描述,若设置BASEADDRESS字段为0x20,则将映射128MB的地址空间,地址范围为0x20000000~0x27FFFFFF,而通过BASEADDRESS配置出的地址0x20000000和GPMC0_DATA所映射的地址0x50000000具有什么关系?

若按照TRM手册的描述,将GPMC配置为16bit-地址数据总线复用的nor模式与FPGA通信,使用AM6442的R5核对GPMC外设进行配置,当配置完成后,该如何操作或者操作哪个地址进行发送或读取数据?

  • 您好,您的问题我们需要升级到英文论坛看下,如有答复将尽快回复您。

  • 您好,

    一旦 GPMC 寄存器被配置并且在 GPMC_CONFIG7_n 中设置了 CSVALID,那么对 GPMC 的写入/读取访问就会被存储器映射。 当您访问 GPMC0_DATA 空间中的存储器位置(例如 R5F)时,将使用 CS0至 CS7的每组 GPMC 配置寄存器来检查其地址,来查看其是否位于该芯片选择的 BASEADDR +MASK范围内。 AM64x 引脚4只选择这些芯片中的4个,但只有一组寄存器0-7能够与所访问的地址匹配,否则就会发生错误。 

    地址为0x20000000的 AM64x TRM example适用于不同的器件(AM65x)。

    下面是 AM64x 的 BAASEADDR 示例,该示例具有从0x50000000到0x57FFFFFF 的128MB GPMC0_DATA。 

    AM64x             0x50000000
    addr[31:24] =     01010000
    BASEADDR bits 5 to 0 correspond to A29, A28, A27, A26, A25, and A24.
    addr[29:24] =       010000
    BASEADDR[5:0] =     010000

    If you wanted different chip selects to start at different addresses, below are examples where each are 16MB apart.

    AM64x CS1        0x51000000
    addr[31:24] =     01010001
    addr[29:24] =       010001
    BASEADDR[5:0] =     010001

    AM64x CS2        0x52000000
    addr[31:24] =     01010010
    addr[29:24] =       010010
    BASEADDR[5:0] =     010010

    AM64x CS3        0x53000000
    addr[31:24] =     01010011
    addr[29:24] =       010011
    BASEADDR[5:0] =     010011

    Mask example for AM64x CS1 from above...
    If MASK[3:0] = 1111 for 16MB
    AM64x CS1 =      0x51000000
    16MB range =     0x01000000
    out of range:    0x52000000
    AM64x CS1 range 0x51000000 to 0x51FFFFFF