工具/软件:Linux
大家好、
我将使用 am3359 ICE v2和 SDK v4.0。我们尝试在 CS2连接 FPGA。我尝试将随机数据写入 GPMC 地址空间。我能够探测 AD[0-15]、并且有些信号即将到来。WR_EN RE_EN 和 CSn2信号似乎也正常 。但没有来自 GPMC_CLK.I 的时钟 探测电阻器 R150以查看时钟。我被告知只有在存在同步 GPMC 访问时才会生成 GPMC_clk。对于同步 GPMC 访问、器件树配置是否足够?或者是否存在任何其他同步访问触发器?
这是我用于 GPMC 的 DTS 配置:
GPMC{
状态="正常";
pinctrl-names ="default";
pinctrl-0 =<&GPMC_PINs>;
DMA =<&EDMA 52 0>;
dma-names ="rxtx";
范围=<0 0x08000000 0x01000000>、 /*CSn0表示 NAN0*/
2 0 0x09000000 0x01000000>; /*CSn2用于 FPGA*/
NAND@0、0{
/*现已删除*/
};
FPGA@1.0{
reg =<2 0 0x01000000>;/*CSn2*/
#address-cells =<1>;
#size-cells =<0>;
组宽度=<2>;/* GPMC_CONFIG1_DEVICESSIZE (1)*//*16位宽*/
interrupt-parent =<&GPMC>;
中断=<0 0>、<1 0>;
/*GPMC,突发写入;*/
/*GPMC,突发读取;*/
/*GPMC、burst-wrap;*/
GPMC、SYNC-READ;// GPMC_CONFIG1_READTYPE_ASYNC*
GPMC、同步写入;// GPMC_CONFIG1_WRITETYPE_异 步*/
GPMC、clk-activation-ns =<0>;// GPMC_config1_CLKACTIVATIONTIME (2)*/
GPMC、突发长度=<16>;/* GPMC_CONFIG1_PAGE_LEN (2)*/
GPMC、mux-add-data =<2>;// GPMC_config1_MUXTYPE (2)*
GPMC、SYNC-clk-ps =<20000>;/* CONFIG2 */
GPMC、cs-on-ns =<0>;
GPMC、cs-rd-Off-ns =<100>;
GPMC、cs-wr-off-ns =<40>;
GPMC、Adv-on-ns =<0>;/* CONFIG3 */
GPMC、Ad-rd -关闭-ns =<20>;
GPMC、Adv-wr-off-ns =<20>;
GPMC、WE-ON-ns =<20>;/* CONFIG4 */
GPMC、WE-OFF-ns =<40>;
GPMC、OE-ON-ns =<20>;
GPMC、OE-OFF-ns =<100>;
GPMC、PAGE-BURST-ACCESS ns =<20>;//配置5 *
GPMC、ACCESS ns =<80>;
GPMC、第周期-ns =<120>;
GPMC、功率周期-ns =<60>;
GPMC、wr 访问-ns =<40>;/*配置6 */
GPMC、wr-data-mux-bus-ns =<20>;
/*GPMC、bus-ar翻转-ns =<40>;*/* CONFIG6:3:0 = 4 */
GPMC、cycle2cycle-samecsen;/* CONFIG6:7 = 1 */
GPMC、cycle2cycle-delay-ns =<20>;/* CONFIG6:11:8 = 4 */
};
};
针对 GPMC 的引脚复用:
am33xx_pinmux{(am33xx_pinmux)}
GPMC_PINS:GPMC_PINS{
pinctrl-single、pines=<
AM33XX_IOPAD (0x800、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD0.GPMC.AD0*/
AM33XX_IOPAD (0x804、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD1.GPMC.AD1*/
AM33XX_IOPAD (0x808、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD2.GPMC.AD2*/
AM33XX_IOPAD (0x80C、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD3.GPMC.AD3*/
AM33XX_IOPAD (0x810、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD4.GPMC.AD4*/
AM33XX_IOPAD (0x814、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD5.GPMC.AD5*/
AM33XX_IOPAD (0x818、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD6.GPMC.AD6*/
AM33XX_IOPAD (0x81C、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD7.GPMC.AD7*/
AM33XX_IOPAD (0x820、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD8.GPMC.AD8*/
AM33XX_IOPAD (0x824、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD9.GPMC.AD9*/
AM33XX_IOPAD (0x828、PIN_INPUT_PULLUP|MUX_MODE0)/* GPMC_ad10.gpmc.ad10*/
AM33XX_IOPAD (0x82C、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD11.GPMC.AD11*/
AM33XX_IOPAD (0x830、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD12.GPMC.AD12*/
AM33XX_IOPAD (0x834、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD13.GPMC.AD13*/
AM33XX_IOPAD (0x838、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD14.GPMC.AD14*/
AM33XX_IOPAD (0x83C、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_AD15.GPMC.AD15*/
AM33XX_IOPAD (0x870、PIN_INPUT_PULLUP|MUX_MODE0)/*GPMC_wait0*/
AM33XX_IOPAD (0x874、PIN_OUTPUT |MUX_MODE0)/*GPMC_WPN*/
AM33XX_IOPAD (0x878、PIN_OUTPUT |MUX_MODE0)/*GPMC_BEN1*/
AM33XX_IOPAD (0x87C、PIN_OUTPUT |MUX_MODE0)/*GPMC_csn0*/
AM33XX_IOPAD (0x884、PIN_OUTPUT |MUX_MODE0)/*GPMC_csn2*/
AM33XX_IOPAD (0x88C、PIN_OUTPUT |MUX_MODE0)/*GPMC_clk*/
AM33XX_IOPAD (0x890、PIN_OUTPUT |MUX_MODE0)/*GPMC_advn_ALE*/
AM33XX_IOPAD (0x894、PIN_OUTPUT PULLUP|MUX_MODE0)/*GPMC_OE_RAM*/
AM33XX_IOPAD (0x898、PIN_OUTPUT 上拉|MUX_MODE0)/*GPMC_WW奈*/
AM33XX_IOPAD (0x89C、PIN_OUTPUT PULLUP|MUX_MODE0)/* GPMC_BEN0_cle *
>;
};
我将使用 devmem2命令写入数据。 例如:devmem2 0x9000000 w 0xFFFFFFFF
此致、
Murugan S