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.

关于6678的emif启动不读取0x70000000的问题



我在调试6678的emif启动时出现了很奇怪的问题,就是使用示波器量emif的ce2片选信号,一直为高电平,根本没有去读0x70000000的地址空间。我确定 boot管脚是正确的,因为使用仿真器连接之后读取寄存器,读出来的值0x00000a01,和6678datasheet的启动描述是一致的,确定配置方式是emif没问题,使用小段模式。

看了论坛的一些其他资料,不知道是否与pg1.0的pll bug有关系?从6678片子上来看,标示没有诸如A的字符,应该就是比较早的芯片,1.0版本的。

我的问题是:

1。emif启动的配置,寄存器读出来的值0x00000a01, 小段模式,boot device配置为emif启动,没有错误吧?其他字段是否还要配置,比如pll相关的?

2。不读取0x70000000地址,是否就是与boot rom的pll bug相关?必须要使用i2c rom来修正?

3。板子上没有i2c rom,但是把两个管教引到了fpga里面,如果必须的话,使用fpga模拟一个i2c slave rom是可以的。我想问的是,i2c rom的地址是?如果我只在i2c rom里面只进行 emif配置, emif空间配置,nor flash读写配置,跳转0x70000000,是否可行?

这个问题已经被折磨三周了,很头疼,谢谢!

  • 在上电之后看一下PC指向哪里,正常情况下EMIF16 NORFLASH boot上电后会跳转到0x70000000,直接从这个地址开始执行,但是不会进行程序的搬移。EMIF16 boot参考:http://www.deyisupport.com/question_answer/f/53/t/16937.aspx

  • 很奇怪的现象,上电之后使用仿真器连接DSP,发现PC指向6678内部BOOT ROM地址0x20B00000区域的的IDLE指令(我是在单位做的实验,现在回家发帖,没记住具体那个地址,但是在CCS窗口里面看,确实停在了IDLE指令处),没有跳转到0x70000000。

    但是此时读取地址0x02620020,DEVSTAT,发现数据为0x00000a01,看配置情况没错啊?

    您看还可能有什马原因导致EMIF16启动连0x70000000地址都不去读呢?

  • 很奇怪的现象,上电之后使用仿真器连接DSP,发现PC指向6678内部BOOT ROM地址0x20B00000区域的的IDLE指令(我是在单位做的实验,现在回家发帖,没记住具体那个地址,但是在CCS窗口里面看,确实停在了IDLE指令处),没有跳转到0x70000000。

    但是此时读取地址0x02620020,DEVSTAT,发现数据为0x00000a01,看配置情况没错啊?

    BIT-0为"1",小段模式

    BIT-3~BIT-1为"000",EMIF16启动

    BIT-10~BIT-4为"0100000",EMIF16启动,禁止外部wait

    BIT-13~BIT-11为”001“,PLL配置,输入时钟66MHz

     

    您看还可能有什马原因导致EMIF16启动连0x70000000地址都不去读呢?

  • EMIF16 boot会收到PLL的影响,所以请根据Errata中的描述测量一下SYSCLK,RSV20来验证是否存在PLL配置没有锁住的问题。