TI中文支持网
TI专业的中文技术问题搜集分享网站

请教下TI的工程师,am335x,先通过串口加载 SPL,然后在SPL中修改代码让板子从 MMC接口上读取 uboot 并继续启动。这样的启动流程可行吗?

如题,由于板子的硬件出了点问题。使得现在需要先 用串口启动 SPL, 然后在 SPL 的 board_init_r 中直接做如下赋值:

//boot_device = spl_boot_device();
boot_device = BOOT_DEVICE_MMC1;

让板子执行 下面这个分支:

case BOOT_DEVICE_MMC1:
spl_mmc_load_image();
break;

这样的修改可以实现上面提到的启动流程吗? 现在我在 Beaglebone Black 上试了下,好像不行,有如下打印说 MMC device not found:

USB Host mode controller at 47401800 using PIO, IRQ 0
11 boot device – 8
MMC Device 0 not found
spl: mmc device not found!!

请问下 TI 的工程师,如果想实现上面说的启动流程,还需如何修改 SPL 的代码?

Steven Liu1:

理论上说,如果代码部分修改OK了的话,应该是可以这样做的。

先确认一下,如果直接使用mmc卡启动,你能启动起来吗?

如果可以这样做,那很可能的问题,是你在spl部分里面修改的代码并没有初始化MMC的相关引脚。能否先打印一下相关的pinmux信息,确认mmc的引脚配置正常吗

Steven Liu1:

回复 quan liang:

有点好奇的是为啥你的mmc启动不了?看你的消息是说,你现在可以使用MMC1启动,并且成功了是么?方法是修改两个函数,为啥不用boot模式的定义管脚进行相关设置,而需要直接改函数呢?MMC0也是可以启动的。如果不需要追这个问题了,就结贴吧。

quan liang:

回复 Steven Liu1:

其实你好奇的问题正式我这边想极力解决的。

我们用了 MMC1 接口来接 SD 卡;使用了 pinMuxTools 上 mmc1 接口的 IO SET 4; 然后 SYSBOOT 设置如下:

SYSBOOT[4:0]
   11100b   
这个配置的启动顺序是 :MMC1   –> MMC0 –> UART0 –> USB0

用仿真器看了,对应的 control status 寄存器后五位确实是 11100b;但板子就是无法从 MMC1 启动;用示波器量板子上电时 SD 卡的时钟信号,搞了十几次才有一两次采集到信号。而同样的方法去量 MMC0 的 CLK ,很容易就得到一个波形规整的时钟。
所以 我们怀疑,是不是如果使用 MMC1 启动,对其 IO SET 的选择有要求?

已经发邮件给你们的 fae 确认,目前还没给答复呢。
Liu 工如果可以的话,帮我们尽快确认下也行,多谢了。

quan liang:

回复 Steven Liu1:

多谢liu工的确认。 我们板子之前是参考BBB的,只是我们还要用到 GMPC 的管脚来连接 fpga,所以才用了 IO set4. 看来要重新规划板子的管脚使用了。

顺便问下 Liu 工;SDK 6.0 支持BBB 了吗? 我现在是拿 SDK 7.0 中的uboot 作为基线来调我们的板子,貌似在启动内核的时候用到了 device tree;是个新玩意,不是很熟悉,需要花些时间来搞下,进度上可能来不及了。如果 SDK 6.0 也支持 BBB ,打算用作调试的基线。

quan liang:

回复 quan liang:

看来下 sdk6.0 的uboot ;貌似是支持的。

Steven Liu1:

回复 quan liang:

SDK6.0是支持BBB的,这些信息一般可以在release notes里面找到。

http://processors.wiki.ti.com/index.php/Sitara_SDK_Release_Notes

赞(0)
未经允许不得转载:TI中文支持网 » 请教下TI的工程师,am335x,先通过串口加载 SPL,然后在SPL中修改代码让板子从 MMC接口上读取 uboot 并继续启动。这样的启动流程可行吗?
分享到: 更多 (0)