我编写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.
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参数配置正确。