你好,目前正在开发AM4379,该项目要求只能跑裸机不能跑系统。调试到GPMC时遇到些问题:
1:设置异步读写,初始化完毕,读写的地址写入GPMC_NAND_ADDRESS,数据写入GPMC_NAND_DATA没问题,一切正常。但是有个疑问之前运行系统的时候,我写入的地址是0x1000000(也就是16M),CONFIG7设置BASEADDRESS为00001,使用片选1,也能正常工作,为什么,如果在裸机下,地址设置0x1000000(也就是16M),如果写入数据,也就是*((Uint32)0x1000000+addr) = data,程序就会跑飞,不知道地址到底应该写在那里?
2.把异步模式改成同步模式,数据和地址就不能写入GPMC_NAND_ADDRESS和GPMC_NAND_DATA,因为这两个寄存器只支持异步,那同步模式时,地址是什么,是不是应该0x1000000(也就是16M),也就是*((Uint32)0x1000000+addr) = data;如果这么写,程序也会跑飞。
Shine:
nand flash不是直接往地址里赋值就可以了,要进行擦除后再写入,可以看一下flash数据手册。starterware里有nand例程。
software-dl.ti.com/…/index_FDS.html
jin xin:
回复 Shine:
我可能写的不是很清楚,GPMC是和FPGA通信,而不是操作NANDFLAH。
Shine:
回复 jin xin:
GPMC_NAND_ADDRESS是nand flash时候用的,如果是接异步memory,直接读写地址就可以了。可以先断开和FPGA的连接,单独测一下GPMC的写时序是否正确。
jin xin:
回复 Shine:
你好,谢谢你的回复,直接操作地址,程序会跑飞,GPMC没有任何输出,我在程序添加了点灯程序,如果不直接操作地址,LED正常闪烁,否则LED不亮,程序跑飞,真不知道那里错误,我是裸机操作。设置如下
#define FPGA_GPMC_CONFIG1 0x00001800#define FPGA_GPMC_CONFIG2 0x00141400#define FPGA_GPMC_CONFIG3 0x00141400#define FPGA_GPMC_CONFIG4 0x0F010F01#define FPGA_GPMC_CONFIG5 0x010C1414#define FPGA_GPMC_CONFIG6 0x1f0f0A80#define FPGA_GPMC_CONFIG7 0x00000C44