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.
已将您的问题升级到E2E英文论坛,一旦得到回复会立刻回复给您
请问您是使用Linux还是RTOS来进行boot启动?
我们是用uboot启动我们自己的应用程序,我们的应用程序是基于ucos的
您能提供更多细节吗?
- SDK 版本是什么?
- 有任何显示问题的日志文件吗?
- 可以提供硬件板信息吗?
现在的问题是CPU没有启动uboot,和uboot的版本关系不大,电路主要芯片如下:
1、我们硬件默认选择的是EMMC0启动,sysboot管脚配置为000 0100 0010 0000 0100或者000 0100 0010 0000 1100;
2、电源芯片选择的4376配套的 TPS65218D0RSLT
3、外扩了2路RGMII以太网,1个nandflash,2个ddr3l内存
现象如下:
1、好的板卡上电启动后,CPU会通过 MMC0_CLK向MMC的CLK管脚发送脉冲,通过示波器也可以测量到此信号;即使外部不连接MMC卡,clk时钟依然会发送;
2、好的板卡上电后,通过jtag,可以查看到sysboot管脚采集正确的值,,也可以看到cpu根据sysboot初始化的pinmux寄存器,同时可以通过 Boot Error Counters内存看到CPU启动的次数;
3、故障的板卡上电后,测量不到任何脉冲;
4、故障的板卡上电后,可以查看到sysboot管脚采集正确的值,但是Boot Error Counters内存是随机的值,pinmux寄存器看不到任何初始化的痕迹
目前我们的感觉的问题就是,cpu可以识别到sysboot,但是cpu自己的boot没有启动。
已将您的最新回复升级到E2E英文论坛,一旦得到回复会立刻回复给您
对于故障板卡,我们可以尝试将 JTAG“附加”到板上以查明代码运行到哪个点吗?
其中“附加”意味着附加/连接 JTAG 而不重置目标。
请使用 JTAG 调试器来查看 SPL 是否开始在板上运行。
A)如果是,则需要进一步调试 SPL 以查看锁定位置。
b)如果不是,请检查锁定在 CM CTRL_STS 寄存器 @0x44E10040 中的 SYSBOOT[],看它是否与板上配置的 SYSBOOT 引脚匹配。
此外,可以通过读取跟踪向量来检查 bootrom boot进度,如技术手册的“5.2.3.2.5 Tracing Data”中所述。
故障板卡上电后,将 JTAG“附加”到板上,PC寄存器指向0X00030000,没有往下运行
读取CTRL_STS寄存器,数值为0X00420304,与配置一致
watchdog没有被初始化,PRCM_CM_WKUP__WDT1_CLKCTRL中的IDLEST数值为11
Tracing Data 0X40338E40~0X40338E64是随机数值
Boot Error Counters 0X40337DE0为随机数值
手动点击CCS运行按钮(rusume)后,
watchdog被初始化
Tracing Data 0X40338E40~0X40338E64数值被赋值
0X40338E40 0000807E
0X40338E44 00000010
0X40338E48 03000030
0X40338E4C 00010000
0X40338E50 00000000
Boot Error Counters 0X40337DE0仍然为随机数值
根据问题描述,加上跟踪数据中捕获的随机值,您的问题可能与硬件相关。
我正在询问我的同事以征求他的意见...
请问故障板卡的百分比是多少?
您看到的问题是在最初的电路板测试期间观察到的,还是在它已经工作了一段时间后问题才出现?
之前生产的板卡有没有没出现过该问题的?
目前板卡为试制板卡,总共4块板卡,均出现类似问题,今天又进一步定位,现象如下:
1、故障板卡上电后,通过jtag连接观测,我们认为故障cpu上电后就没有运行 Public ROM Code,所以PC指针一直停止在0X0003_0000位置;
2、jtag连接的过程中,应该是会对cpu进行部分初始化;
3、一旦jtag连接CPU后,通过warm 复位,该板卡就可以通过SD启动了,应该是jtag初始化了cpu中的某些模块;
4、jtag连接CPU后,通过cold复位,该板卡可无法通过SD卡启动,PC指针一直停止在0X0003_0000位置;
warm复位和cold复位之间的差异包括电源斜坡、排序、振荡器启动和 POR 的释放。
您能否验证硬件以确认上述功能没有问题?
问题已经解决,由于EMU0管脚电路中被设置为GPIO输入管脚,导致启动失败。
十分感谢。
硬件电路中,EMU0管脚被当作GPIO输入管脚,上电采集到了低电平,导致cpu不启动。
我们猜测的原因是,通过jtag连接cpu后,脚本文件或者boot会将该管脚设置为GPIO,所以在warm复位的时候,管脚配置寄存器不受影响,所以可以一直启动;cold复位后,该管脚又默认为emu0,所以无法启动。
请问为了解决问题,您是否做过硬件更改或固件更改?
我认为 EMU0 有一个终端。
是的,有一个终端,暂时断开,后续电路板升版时,不再使用EMU0管脚