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.
工具/软件:Linux
您好!
我们最终拥有第一块 AM3358板。 我正在尝试使用 USB RNDIS 引导将其启动。 SYSBOOT 引脚搭接与 BeagleBone Black 匹配。
当我为 AM3358板加电时 、它以 lsusb 形式出现、如下所示:
总线001器件062:ID 0451:6141 Texas Instruments、Inc.
在 USB 以太网接口上运行 tcpdump、我看到:
tcpdump -n -i $(ifconfig | grep enp0s20 | awk '{print 1}')端口67或端口68或端口69
08:53:47.197009 IP 0.0.0.68>255.255.67:BOOTP/DHCP,请求来自74:E1:82:96:9c:b4,长度364
08:53:47.200006 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
08:54:06.729362 IP 0.0.0.68>255.255.67:BOOTP/DHCP,请求来自74:E1:82:96:9c:b4,长度364
08:54:06.731799 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
08:54:30.167931 IP 0.0.0.68>255.255.67:BOOTP/DHCP,请求来自74:E1:82:96:9c:b4,长度364
08:54:30.189133 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
08:55:16.672206 IP 0.0.0.0.68>255.255.67:BOOTP/DHCP,从74:E1:82:96:9c:b4请求,长度364
08:55:16.673394 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
有一次、我实际上看到了 u-boot-spl.bin 的 TFTP 请求、但未能使其再次发生。
要验证我的笔记本电脑配置、如果我擦除 BeagleBone 的 eMMC 并插入 USB、我会看到以下情况:
08:57:51.275150 IP 0.0.0.68>255.255.67:BOOTP/DHCP,请求来自74:E1:82:74:1f:37,长度364
08:57:51.277373 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
08:57:51.280269 IP 192.168.2.2.1234 > 192.168.2.1.69: 34 RRQ "u-boot-spl.bin"八位位组
08:57:54.472525 IP 0.0.0.0.68>255.255.67:BOOTP/DHCP,请求来自74:E1:82:74:1f:39,长度300
08:57:54.718783 IP 192.168.2.1.67 > 192.168.2.3.68:BOOTP/DHCP、应答、长度300
08:57:54.719429 IP 0.0.0.68>255.255.67:BOOTP/DHCP,请求来自74:E1:82:74:1f:39,长度300
08:57:54.722467 IP 192.168.2.1.67 > 192.168.2.3.68:BOOTP/DHCP、应答、长度300
08:57:54.742590 IP 192.168.2.3.4022 > 192.168.2.1.69: 53 RRQ "u-boot.img"八位位组超时5 blksize 1468
因此、我非常确信我的笔记本电脑已针对 RNDIS 引导进行了正确配置。
如何调试此问题? 如果连接 JTAG 时遇到一些阻止发出 TFTP 请求的错误、是否会从引导 ROM 中提供任何反馈? 我是否可以在某个位置找到引导 ROM 的源代码?
谢谢、
Matt
您好、Steve、
我已连接我的 JTAG 工具并下载了跟踪矢量。 这是报告输出。 我仍然不明白为什么 USB 启动失败。
控制:DEVICE_ID = 0x2b94402e
* AM335x 系列
*器件修订版本2.1
PRM_DEVICE:PRM_RSTST = 0x00000001
*位0:global_cold_RST
控制:CONTRAL_STATUS = 0x0040031c
* SYSBOOT[15:14]= 01b (24MHz)
* SYSBOOT[11:10]= 00b 无 GPMC CS0地址/数据多路复用
*器件类型=通用(GP)
* SYSBOOT[7:6]= 00b MII (仅限 EMAC 引导模式)
* SYSBOOT[5]= 0禁用 CLKOUT1
*引导顺序:MMC1 -> MMC0 -> UART0 -> USB0
ROM:电流跟踪矢量、字1 = 0x0000903f
*位0 :[General]传递了公共复位矢量
位1 :[General]进入 main 函数
位2 :[General]正在冷复位后运行
*位3 :输入[Boot]主引导例程
*位4 :[Memory Boot]内存引导已启动
*位5 :[外设启动]外设启动已启动
*位12:[外设引导]设备已初始化
*位15:[外设引导]外设引导失败
ROM:当前跟踪矢量、字1 = 0x000000f0
*位4 :[USB] USB 连接
位5 :[USB] USB 配置状态
*位6 :[USB] USB VBUS 有效
位7 :[USB] USB 会话有效
ROM:电流跟踪矢量、字1 = 0x00111000
*位12:内存引导设备 SPI
位16:外设引导设备 UART0
*位20:[外设引导]外设引导设备 USB
ROM:PRM_RSTST 的当前副本= 0x00000000
ROM:冷复位跟踪矢量、字1 = 0x00000000
ROM:冷复位跟踪矢量、字1 = 0x00000000
ROM:冷复位跟踪矢量、字1 = 0x00000001
*位0 :[Memory Boot] Memory booting device NULL
Cortex A8程序计数器= 0x0002862c
ROM 异常向量
* 0x4030CE04未定义
* 0x4030CE08 SWI
* 0x4030CE0C 预取中止
* 0x4030CE10数据中止
* 0x4030CE14未使用
* 0x4030CE18 IRQ
* 0x4030CE1C FIQ
ROM 死区循环
* 0x00020080未定义异常默认处理程序
* 0x00020084 SWI 异常默认处理程序
* 0x00020088预取中止异常默认处理程序
* 0x0002008C 数据异常默认处理程序
* 0x00020090未使用的异常默认处理程序
* 0x00020094 IRQ 异常默认处理程序
* 0x00020098 FIQ 异常默认处理程序
* 0x0002009C 验证测试通过
* 0x000200A0验证测试失败
* 0x000200A4保留
* 0x000200A8图像未执行或返回
* 0x000200AC 保留
* 0x000200B0保留
* 0x000200B4被保留
* 0x000200B8保留
* 0x000200BC 保留
器件型号:AM3358
工具/软件:Linux
这是此主题的延续:
我可以使用 RNDIS 成功引导 BeagleBone Black。 在我们的 AM3358定制板上、我正在尝试引导、但它从未请求 SPL 映像。 我将 Linux 用于 DHCP 服务器和 TFTP、但我也在 Windows 上使用 Uniflash 3.x 对此进行了测试。 在这两种环境中、我的定制板将请求 IP 地址、但无法下载 SPL。
我已连接 JTAG 并在各种异常和死循环矢量上设置断点。 我曾经能够获得"0x0002008C 数据异常默认处理程序"、但我无法再次复制它。 通常情况下、处理器只会继续请求 DHCP 地址。
从 am553x-boot.dss 生成的报告可在此处找到:
什么会导致引导 ROM 仅请求 IP 地址、而不通过 TFTP 请求 SPL?
这个线程被标记为已解决、因此我认为我必须创建一个新的线程。 新内容如下:
您可以删除该内容或执行需要执行的任何清理操作!
以下是 tcpdump:
使用我的 AM3358定制板:
e2e.ti.com/.../am3358_5F00_custom.tcpdump.txt
$ sudo tcpdump -i enp0s8 -n 端口67或端口68或端口69
tcpdump:详细输出被抑制、使用-v 或-vv 进行完整的协议解码
侦听 enp0s8、链路类型 EN10MB (以太网)、捕获大小为262144字节
18:29:04.155184 IP 0.0.0.68>255.255.67:BOOTP/DHCP、请求来自74:E1:82:96:9c:b4、长度364
18:29:04.190202 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
18:29:11.968775 IP 0.0.0.68 > 255.255.67:BOOTP/DHCP、请求来自74:E1:82:96:9c:b4、长度364
18:29:11.968984 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
18:29:23.689725 IP 0.0.0.68 > 255.255.67:BOOTP/DHCP、请求来自74:E1:82:96:9c:b4、长度364
18:29:23.691637 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
18:29:39.321536 IP 0.0.0.68>255.255.67:BOOTP/DHCP、请求来自74:E1:82:96:9c:b4、长度364
18:29:39.321765 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
18:29:58.846923 IP 0.0.0.68 > 255.255.67:BOOTP/DHCP、请求来自74:E1:82:96:9c:b4、长度364
18:29:58.847116 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
使用我的 BeagleBone Black:
e2e.ti.com/.../BBB.tcpdump.txt
$ sudo tcpdump -i enp0s8 -n 端口67或端口68或端口69
tcpdump:详细输出被抑制、使用-v 或-vv 进行完整的协议解码
侦听 enp0s8、链路类型 EN10MB (以太网)、捕获大小为262144字节
18:30:55.268561 IP 0.0.0.68 > 255.255.67:BOOTP/DHCP、请求自74:E1:82:74:1f:37、长度364
18:30:55.268753 IP 192.168.2.1.67 > 192.168.2.68:BOOTP/DHCP、应答、长度300
18:30:55.276633 IP 192.168.2.2.1234 > 192.168.2.1.69: 44 RRQ "innov8-idl-interface/u-boot-spl.bin"八位位组
18:30:57.977951 IP 0.0.0.68 > 255.255.67:BOOTP/DHCP、请求来自74:E1:82:74:1f:39、长度300
18:30:58.231749 IP 0.0.0.68 > 255.255.67:BOOTP/DHCP、请求来自74:E1:82:74:1f:39、长度300
18:30:58.734114 IP 0.0.0.68 > 255.255.67:BOOTP/DHCP、请求来自74:E1:82:74:1f:39、长度300
18:30:58.978831 IP 192.168.2.1.67 > 192.168.2.3.68:BOOTP/DHCP、应答、长度300
18:30:58.981294 IP 0.0.0.68 > 255.255.67:BOOTP/DHCP、请求来自74:E1:82:74:1f:39、长度300
18:30:58.984486 IP 192.168.2.1.67 > 192.168.2.3.68:BOOTP/DHCP、应答、长度300
18:30:59.008279 IP 192.168.2.3.1113 > 192.168.2.1.69: 63 RRQ "innov8-idl-interface/u-boot.img"八位位组超时5 blksize 1468
使用 USB0
USB ID 悬空、电路板通电时读数为0v。
下面是我在使用 Run -> Load -> Load Program...
CortxA8:写入长度为0x7ff0的第0页0x402f0094上的存储器块时出现问题:(错误-1065 @ 0x3D5A)无法访问器件存储器。 验证内存地址是否在有效内存中。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包8.0.27.9)
CortxA8:文件加载程序:验证失败:目标写入0x402F0094失败
CortxA8:GEL:文件:/home/mbarclay/Downloads/TI/ti-processor-sdk-linux-am335x-evm-04.03.00.05/board-support/u-boot-2017.01 +gitAUTOINC+c68ed086bd-gc68ed086bd/spl/u-boot-spl:加载失败。
这是我用于"加载符号"的图像。
我发现了一些有趣的东西:
我的办公桌上有3块 Beaglebones、我可以在其中的两块上重现此问题。 第三个工作正常。
我已经在工作的 BeagleBone 和其中一个非工作的 BeagleBone 上安装了 JTAG 接头。
在"gory" BeagleBone 上-我可以 USB RNDIS 引导、它下载 u-boot-spl.bin、然后下载 u-boot.img。 但是、如果我通过 JTAG 将同一 u-boot-spl.bin 文件加载到0x402F0400、设置 CPSR.T = 0、然后点击"Run"、它只会将此文件打印到控制台:
U-Boot SPL 2017.01-g340fb36f04 (2018年7月19日- 16:37:31)
SPL:不支持的引导设备!
SPL:无法从所有引导设备引导
###错误###请重置电路板###
但是、如果我让引导 ROM 执行直到它启动 USB 接口、那么我可以通过 JTAG 下载该同一 u-boot-spl.bin 并正常执行它。 引导 ROM 显然必须执行 u-boot-spl 所期望的关键 USB 初始化。
在"Bad" BeagleBone 上执行类似的过程时、我只会得到:
U-Boot SPL 2017.01-g340fb36f04 (2018年7月19日- 16:37:31)
SPL:无法从所有引导设备引导
###错误###请重置电路板###
引导 ROM 中是否可能有错误阻止这些电路板完成 RNDIS 引导?
尝试查看引导 ROM 中 Beaglebones 的区别,我使用 Tools -> Save Memory 从地址0x20000下载,长度0xBFFF
生成的引导 ROM 二进制文件在字节541处不同、在32751处也不同。 我不确定这是否重要、或者我是否已正确下载内存。 如果我做错了、也许您可以建议正确的程序。
您好、Steve、
我确实设置了 UART1时钟和引脚多路复用器。 但是、我在周末注意到 UART0已被引入测试点、因此我重新接线了电路板以放弃 UART1并使用 UART0。
现在我看到"C"字符被打印到控制台。
代码现在变得更加深入。 打印 U-Boot SPL 横幅:"u-Boot SPL 2017.01-00443-g340fb36-脏 污(2018年7月23日- 15:41:18)"
横幅的最后一个字符是'\n'、SPL 代码使用该字符来触发看门狗复位。 代码在该点崩溃、就像启用 UART1时一样-即卡在_FIQ ()例程中。