我编写A8裸机程序,为什么像FLASH、PCIe、DDR等这些外部地址一读写就出错?arm就进入abort模式?
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.
我编写A8裸机程序,为什么像FLASH、PCIe、DDR等这些外部地址一读写就出错?arm就进入abort模式?
Han Weikun,
1. 你是否有运行gel初始化DDR?
2. 如果是nor flash,写实需要使用命令的,如果是nand flash,读写都需要命令,要写驱动的。
3. PCIe,你是说pci的寄存器,还是pcie空间? 你是否有开启pcie的时钟,是否有做正确的配置。
Chris,
我说的这些都是指空间,相应寄存器都能读写;
运行这些必须先运行DDR吗?我DDR还没有调,接法不是按照开发板接的,若用gel文件就得改改,我是接了两片DDR在通道DDR[1]上,我现在开始怀疑这种接法能用吗,是不是要么DDR[0]、DDR[1]都接上,要么只能接DDR[0]上?不用DDR这些空间不能访问吗?
你好!
我的程序就是在线调试,在OCMC SRAM上运行的,板子是自己画的,跟开发板的不一样,现就调通的串口。
weikun han 说:初始化了,时钟也打开了,配置也没问题,会不会和MMU有关?
你说的是DDR么?你之前提到你只是用了EMIF1,请问你是否有正确配置LISA MAP寄存器?
Han Weikun,
GPMC上你接了nor flash?
请问DDR的时序配置你是否有按照你使用的DDR芯片手册调整过?DDR布线请保证严格按照数据手册的要求来做。
你现在LISA MAP的寄存器是如何配置的?
我是在GPMC上接了nor flash,DDR的时序也按照手册调整了,LISA MAP配置如下:
DMM_LISA_MAP_0 = 0x0;
DMM_LISA_MAP_1 = 0x0;
DMM_LISA_MAP_2 = 0x80300200;
DMM_LISA_MAP_3 = 0x80300200;
两片16位DDR都接在EMIF1上,现在是一读写GPMC空间(0x01000000~0x1FFFFFFF)或DDR空间就出现数据访问错误的错误,程序就跑到中止函数。现在就是搞不清楚这些地址为什么无法访问。
是的,时序也修改了。
Chris,你看下这个帖子http://blog.csdn.net/u012384044/article/details/51953892,我没看明白,是不是能解决这个问题?
Han Weikun,
请问你使用了sysbios么?
你的代码是是否有参考一下nand write或者DM814x EVM的CCS工程(https://www.mistralsolutions.com/product-engineering-services/support-downloads/)修改的?
不允许任何的操作系统,配置好DDR参数就应该可以正常访问。当然,前提的是你的DDR布线符合要求,DDR参数配置正确。