我在ccs上,用sd卡的sbl的MLO文件启动内核,ccs连上A15核,采用memory load二进制文件的方法,load到0x80000000这个ddr地址中,能正常运行,但是我用sd卡中的uboot进行相同的操作时,连上A15核后需要进行cpu reset操作,否则无法正常运行bin文件,(现无法在uboot命令行启动bin文件)请问为什么sbl不需要cpu reset呢?两个问题,1.是sbl里面有对寄存器进行了相应的操作吗?2.cpu reset对cpu进行了何操作
Shine:
请问用的是哪款芯片?
CPU reset的定义如下
CPU Reset – Typically isolated to reset just the core, not the entire device. In multi-core devices typically isolated to a single core. In devices that support a software reset, a CCS Reset may be equivalent.
processors.wiki.ti.com/…/Emulation_Resets
Minister:
回复 Shine:
AM572X
Minister:
回复 Shine:
你发的那个,我刚刚也搜到了,但是我观察寄存器,并没有发现cpu有进行相应的复位操作,复位寄存器的数值也没有改变
Shine:
回复 Minister:
在ccs里调试uboot的方法可以参考下面的文档。
www.ti.com.cn/…/zhca539.pdf如果在脱机的情况下uboot能启动的话,那么仿真器里需要先CPU reset一下再执行代码就没影响了。
Minister:
回复 Shine:
问题1:如果我在仿真器里cpu reset,是否会把uboot代码擦除。因为我现在只是想uboot加载裸机程序,如果我在仿真器里reset,那的确能执行代码。问题2:如果我没有连仿真器,我在uboot命令行(也就是串口软件)该如何模仿这个reset的操作才能正常执行代码。问题3:为什么cpu reset 后能正常运行?
Shine:
回复 Minister:
1. CPU reset不会擦除uboot代码。
2. 没有连仿真器时,uboot不能加载内核?
3. 您看一下cpu reset后,是不是pc指针指到代码的入口地址了?
Minister:
回复 Shine:
没有连仿真器的时候,我在uboot 执行fatload bin文件到ddr的内存,然后go到内存(例程指定进入点)里面去,不能加载我的文件(普通例程不是内核)。仿真器连上cpu后,通过load memory(非load program,不会自动识别pc指针)将bin文件load到ddr内存里面,然后还需通过register将pc指针指导代码入口地址,此操作和uboot命令行是同等意义的。但唯一不同是,我在ccs上执行cpu reset操作后以上我所说的仿真过程才能正常运行,所以我uboot中无法执行此bin文件。
Minister:
回复 Shine:
调试的过程中gel文件也需要执行cpu reset,请问有sbl的详细解释吗
Shine:
回复 Minister:
下面是sbl user guide。
processors.wiki.ti.com/…/TDA_SBL_UserGuide.pdf