我的dm642上电后会通过dma从flash里面搬运1k的程序到片内ram里面,但是搬完这段程序后,dm642不工作,pc指针一直停在0x00000000出不运行,之后我连上仿真器后启动运行dm642才会运行为什么?
一开始的时候以为我的二级bootloader有问题,后来我就在bootloader里面让emif的clk2时钟为100M,然后我通过上电后抓ck2的时钟来判断我的1k的二级搬运程序有没有执行,后来发现的确emif的clk2的输出时钟还是默认的50M没变,我就觉得是不是我的1k的bootloader没执行啊,然后我就连接仿真器我发现连上之后pc还在0x00000000处没有给我执行,这个问题是硬件配置导致的吗?
noaming:
你好,DM642的0x00000000处有1k的bootloader吗?如果有,此时单步运行一下,是否能够运行呢?
lei sun1:
回复 noaming:
0x00000000处是有1k的bootloader程序在里面的,单步运行也会执行我的程序。
就是当我上电后或者复位dsp时,程序停在0x00000000处不往下执行。
noaming:
回复 lei sun1:
你好,可能是硬件设计上有问题,在没仿真器连接的情况下,上电芯片滞留在0x00000000处,请检查一下此时芯片的复位信号,供电电压,看那里不正常。
lei sun1:
回复 noaming:
现在硬件似乎找不到问题出来哪里
其实在出现boot问题之前,flash的烧写就存在问题,我在配置ce1的寄存器时给出的读写时序时默认的最大值,可是在进行flash全地址域测试时发现一段地址写不了一段地址可以写的问题(在不同的时候进行测试时会随机从一个地址开始一段地址不能写,然后这段地址后面可以写,再过一段又不能写交叉着能写不能写,不能操作的地址个数有时候也是随机的),感觉好像emif出了什么问题。
还有一个问题就是如果flash是全ff的时候dm642在上电的时候会不会也从flash里面搬运1k的东西到片内的L2里,因为我们发现当flash被擦除后上电,outclk4和outclk6的输出时正常的如果网flash里面烧了东西在上电启动dsp,那个几个时钟的输出就不正常了。问题很纠结啊