TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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/AM3352:是否使用 Raspberry Pi 的 TFTP 首次引导?

Guru**** 2048030 points
Other Parts Discussed in Thread: UNIFLASH, AM3352
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/777748/linux-am3352-first-boot-using-tftp-from-raspberry-pi

器件型号:AM3352
主题中讨论的其他器件:UNIFLASH

工具/软件:Linux

您好!

我们有一个基于 AM3352和 BBB 的定制板。 在开发过程中、我们在 Windows 7计算机上使用 uniflash 加载了电路板 eMMC、并使用 flasher.sh 脚本等。  

对于生产、我们不希望使用 Windows 7、我们在所有测试系统上都安装了 Windows 10、但是由于 Win10上的驱动程序处理方式不同、我们无法在 Win10上使用 Uniflash 刷写电路板。 因此、由于整个闪存过程应在 Linux 上运行、我们认为我们可能可以使用从 Windows 计算机进行 netboot 的 Raspberry Pi、然后使用 Raspberry Pi 来刷写电路板。

我跟着这本指南,   但在拉斯比亚,我运气不好。 我已在 Ubuntu 12.04上使用它。 在最新的 Raspbian 上,我已经测试了不同的方法,包括 ISC-DHCP-server 和 dnsmaqs,但没有结果。

那么、我在中的问题是、为什么这在和(真正)旧的 Ubuntu 上可以正常工作、但在更新的 Linux 版本上不能正常工作? 有人尝试过这种方法吗?

提前感谢!

此致、
Jonas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jonas、

    我没有尝试过、但不知道为什么它不起作用。 您能否发布日志、尤其是来自 AM335x 的日志、以便深入了解具体的故障是什么? 我猜这是 RPi 和 Ubuntu 之间的配置差异。

    我可能会尝试在我身边运行 Debian 的 BeagleBone Black、但这未经测试、我不确定它是否能正常工作。

    此外、在 Win10上、MS 最近将 RNDIS 驱动程序添加回 Windows、Uniflash 可能可以正常工作、但我无法尝试。 这假设您使用的是 USB。 对于以太网、我不知道任何可能影响该过程的驱动程序问题。

    我希望这些意见有所帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ron:

    我不知道 Microsoft 重新添加了驱动程序。 我会尽快尝试、因为这对我们来说是最佳解决方案。 我是否仍然需要使用 uniflash 3.4或是否为 Sitara 更新了 Uniflash 4?

    当我尝试从 Raspberry Pi 上的 Raspbian 引导时、我会从 ISC-DHCP-服务器获取 IP、但它从不会开始发送任何文件。 因此 AM3352不会开始引导。 在监控 UART0时、我得到的只是 CCCCC、直到我插入 USB 电缆。 然后、C 停止和 usb0将出现在 Raspberry Pi 上。

    如果 Windows 不起作用、我可能会尝试使用旧版本的 Raspbian、如果效果更好的话。

    请告诉我您通过 BBB 测试得到的结果。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Windows 10不幸运。 我无法为电路板选择 RNDIS 驱动程序、它将作为默认串行端口。 我甚至尝试使用设备管理器中的添加传统硬件选项。 我要让 Raspbery Pi 再去一次。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我今天的培训内容更深入了。

    我需要在 dhcpd.conf 中添加 tftp-server 和 next server:

    子网192.168.2.0子网掩码255.255.255.0
    {
    选项 tftp-server-name "192.168.2.1";
    下一个服务器192.168.2.1;
    
    范围 dynamic-BOOTP 192.168.2.2 192.168.2.100;
    if substring (选项 vender-class-identifier,0,10)="am335x rom"
    {
    文件名"u-boot-spl-restore.bin";
    log ("AM335x ROM");
    }
    elsif 子字符串(选项 vender-class-identifier、0、10)="DM814x ROM"
    {
    文件名"u-boot-spl-restore.bin";
    log ("DM814x ROM");
    }
    elsif 子字符串(选项 vender-class-identifier、0、17)="AM335x U-Boot SPL"
    {
    文件名"u-boot-restore.img";
    log ("AM335x U-Boot SPL");
    }
    否则
    {
    文件名"zImage";
    log ("AM335x zImage");
    }
    
    范围192.168.2.101 192.168.2.199;
    } 

    这些日志用于调试。 我现在遇到的问题是、每次 usb0接口再次出现(一个编程周期为四次)、我似乎找不到重新启动 ISC-DHCP-server 的方法。 在较新的 Raspbian 版本中、/etc/network/ip-up 不再使用、它看起来...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jonas、

    您似乎与圆周率日(Pi)很接近。 祝你好运。

    对于 Windows、请查看最近的这个主题、其中提到了将 USB 串行设备解决为 RNDIS 的可能方法。 但是、他们还没有确认它是否实际正常工作。

    e2e.ti.com/.../776446

    您将需要继续使用 Uniflash 3.4 for Sitara。

    但愿这对您有所帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供链接 Ron。 它似乎也很有希望在 Windows 10上启动和运行它。

    在另一个线程中、JONI 似乎能够使 Windows 10将 ROM 引导识别为 RNDIS、这是我失败的情况。

    我问 Jon iin 另一个主题、他采取了哪些步骤来使其更好地工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对此进行了一些更新。

    我无法使用 Windows 10使其正常工作。 我发现一些 node.js 应用程序(node-beagle-boot)看起来很有希望,但无法安装。

    但在 Raspberry PI 上使用 NetworkManager 方法时、我已经能够取得一些进一步的结果。 我现在能够自动加载 u-boot SPL 等和闪存器内核。 只需插入 USB 电缆即可开始加载。 但是、当闪存器内核请求 DHCP 租约时、它不会接收到。 但 ISC-DHCP-server 为正确的 MAC 提供了一个。

    奇怪的是(使用我上面的帖子中的 dhcpd.conf 设置)我获得的 IP 租约范围为192.168.2.2-192.168.2.100。 但我认为这只是在 BOOTP 请求期间? Flasher 内核正在发送常规 DHCP 请求(看起来至少来自日志)。 因此、我希望获得范围为192.168.2.101-192.168.2.199的 IP。 这是问题吗?

    以下是 Raspberry Pi 的 DHCP-log:

    3月11日15:22:02 raspberrypi dhcpcd[360]:USB0:无 IPv6路由器
    
    
    3月11日15:22:17 raspberrypi dhcpd[5714]:AM335x zImage 3 11 15:22:17 raspberrypi 未知 d[5714]:DHCPvr Or 从 ns1.example.org:18:561:15:562d:rbd:15:563rbd:17 rbr dhcpi 未知
    3月11日15:22:18 raspberrypi dhcpd[5714]:ns2.example.org:主机未知。
    3月11日15:22:18 raspberrypi dhcpd[5714]:DHCPOFFER on 192.168.2.8 to E6:54:40:53:61:9e via usb0
    3 11 15:22:18 raspberrypi dhcpd[5714]:AM335x zImage
    DHCP11:22:18 rbp 18
    :00 rcpe6:00:rp 18:00 rcpd:rcpd:rasp 18:rp 18:rcpd:rcpd:rcpd:rp 18:rcpd:rcpd:rp 18:rcpd:rcpd:rasp 18:rp 18:rcpd:rcpd:rcpd:rcpi dr a rp 18:rcpd:rcpd 

    您可以从"AM335x zImage"中看到、使用了配置。 我已经注释掉了文件名为"zImage"的行、因为 u-boot 会通过自身获取该行。

    下面是 Sitara Fetcher 脚本的输出(我进行了一些修改、以加载 g_ether 模块并显示 ifconfig 的输出:

    (二
    (二
    
    Sitara 闪存取器脚本 v2.1 - 2016年3月11
    
    
    日此版本与基于 Linux 4.1内核的 Processor SDK Linux 2.0.0保持一致。
    
    J-Lo-version 2019-01-31
    insmod /lib/modules/3.12.30/kernel/drivers/usb/gadget/g_ether.ko
    [3.317854]使用随机自以太网地址
    [3.323220]使用随机主机以太网地址
    [3.329094] usb0:主机 MAC f6:85:25:ca:ae:ec
    [ 3.333735] usb0:Mac E6:54:53:61:9gadether [
    使用
    随机
    以太网地址3.33735]使用随机以太网地址[3.3gadether:33735] 2008年阵亡将士纪念日
    [3.355019] g_ether 小工具:g_ether ready
    lsmod
    未受 USBg_NET1588污染
    0 - Live bbbf01e000
    USB_f_ECM_subset 2732 0 - Live bbbf01a000
    USB_f_ECM 4444 1 - Live bbbf015000
    USB_f_RNDIS 4608 2 g_ether、Live
    
    subset f010000 u_REV 5164 1 USB_f_RECM、Live bnbd0092、USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_bether、USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_bether、USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_
    链路未就绪
    Live bbf000000
    udhcpc (v1.23.1)已开始
    发送 discover...
    [4.080165] g_ether 小工具:高速配置#1:CDC 以太网(ECM)
    [4.087739] IPv6:ADDRCONF (NETDEV_CHANGE):USB0:链路已准备
    就绪、正在发送 discover...
    正在发送发现...
    无需租赁、可用于后台
    办公 链路环状图:本地环回
    iNet addr:127.0.0.1掩码:255.0.0.0
    inet6 addr:::1/128范围:Host
    正在运行 MTU:65536公制:1的上环回
    RX 数据包:0错误:0丢弃:0超限:0帧:0
    TX 数据包:0错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:0
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
    
    usb0 链接地址:以太网 HWaddr E6:54:40:53:61:9E
    inet6 addr:fe80:e454:40ff:fe53:619e/64范围:链接
    运行多播 MTU:1500公制:1的上广播
    RX 数据包:33错误:0丢弃:0超限:0帧:0
    TX 数据包:8错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1000
    RX 字节:3533 (3.4 KiB) TX 字节:1172 (1.1 KiB)
    
    未找到服务器 IP、设置为默认
    值从服务器获取 flasher.sh:192.168.2.1
    tftp:Sendto:无法访问网络
    无法获取 Flasher 脚本! 正在退出... 

    如果有任何建议、我们将不胜感激!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果我没有获得 IP、则通过在 fetcher 脚本中发出 udhcpc -i usb0来使其正常工作。  

    现在、只需将 USB 电缆插入电路板、等待90秒、电路板就会启动并运行!