如题,由于板子的硬件出了点问题。使得现在需要先 用串口启动 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