我正试图在FPGA板上安装Linux。Linux风味是Xilinx芯片的瓣鱼。
目前的Xilinx SoC有一个A9处理器和一个可编程硬件逻辑,即FPGA。我在终端上捕获了引导消息:
.....................U-boot time.......................partition.......................................................
[Fri Dec 27 15:18:53.108 2013] Copying Linux from SD to RAM...
[Fri Dec 27 15:18:53.129 2013] Device: SDHCI
[Fri Dec 27 15:18:53.129 2013] Manufacturer ID: 2
[Fri Dec 27 15:18:53.129 2013] OEM: 544d
[Fri Dec 27 15:18:53.129 2013] Name: SA04G
[Fri Dec 27 15:18:53.129 2013] Tran Speed: 25000000
[Fri Dec 27 15:18:53.129 2013] Rd Block Len: 512
[Fri Dec 27 15:18:53.129 2013] SD version 1.10
[Fri Dec 27 15:18:53.129 2013] High Capacity: Yes
[Fri Dec 27 15:18:53.129 2013] Capacity: 3951034368
[Fri Dec 27 15:18:53.129 2013] Bus Width: 1-bit
[Fri Dec 27 15:18:53.129 2013] reading zImage
[Fri Dec 27 15:18:59.367 2013]
[Fri Dec 27 15:18:59.367 2013] 2304852 bytes read
[Fri Dec 27 15:18:59.381 2013] reading devicetree.dtb
[Fri Dec 27 15:18:59.475 2013]
[Fri Dec 27 15:18:59.475 2013] 2709 bytes read
[Fri Dec 27 15:18:59.491 2013] reading ramdisk8M.image.gz
[Fri Dec 27 15:19:06.121 2013]
[Fri Dec 27 15:19:06.121 2013] 2501584 bytes read
[Fri Dec 27 15:19:06.144 2013] Trying to set up GEM link...
[Fri Dec 27 15:19:06.144 2013] Resetting PHY...
[Fri Dec 27 15:19:06.144 2013]
[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive我对这些台词特别感兴趣:
[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive问题1:我想这些行是用于TCP/IP的吧?
可以看到,在这里浪费了大约12秒。问题是,我需要一个快速启动系统,并且在最终应用程序中根本不需要TCP/IP。
到目前为止,我安装的Linux使用的是Xilinx提供的预先构建的映像。现在,为了摆脱TCP/IP部分(因为我不需要它,如果我在操作系统中没有它,那么这12秒就可以被保存--这是我的理解),我计划构建我自己的Linux内核。
所以我下载了for PetaLinux的源代码,假设我必须从我的主机系统交叉编译它。
问题2:但是我想知道如何将TCP/IP部分排除在操作系统源代码之外,这样当操作系统启动时,它就不会执行那些耗时的TCP/IP例程了?
问题3:我也不确定在预先构建的映像中,我们是否可以选择禁用TCP/IP部件?
我的目标是在引导过程中去掉这些行:
[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive发布于 2017-03-31 20:29:09
问题2:我相信这些指纹来自uboot。如果是这样的话,我相信您已经定义了"CONFIG_PHY_RESET“--请您检查一下您的uboot配置好吗?要禁用此功能,您可能需要检查您的配置,通常类似于:./include/ this /YourBoardConfigFile.h,这是uboot所使用的。
另一个答案是使用Kconfig -我检查了我的uboot的menuconfig,这个选项没有出现。
如果您查看uboot源文件:/司机/净/4xx_enet.c,搜索"CONFIG_PHY_RESET",就会发现代码正在执行:
#if defined(CONFIG_PHY_RESET)
/*
* Reset the phy, only if its the first time through
* otherwise, just check the speeds & feeds
*/
if (hw_p->first_init == 0) {不久之后,您可以看到打印的“等待PHY自动协商完成”文本,因此这应该是您问题所在的地方(或者接近它--其他一些文件的初始化也取决于体系结构)。
出于某种原因,顶级uboot源代码中的自述文件文件调用CONFIG_PHY_RESET_DELAY,而不是CONFIG_PHY_RESET,因此您可能错过了它。
问题3:如果CONFIG_PHY_RESET是问题所在,那么这需要在编译时设置。您应该能够为您的董事会下载Xilinx氏uBoot源代码。
我不知道为什么需要重置,所以我没有真正回答你的问题1,但似乎有些PHY在初始化时对重置有不同的要求,甚至有些还需要一定的延迟。
发布于 2016-06-30 10:04:39
该系统显然想要平IP地址10.10.70.101,可能是因为它正在检查自己的IP地址或网关。这部分意味着系统配置了一个具有该IP地址或类似IP地址的网络接口。
之所以会出现暂停,是因为在配置IP的过程中,它加载了以太网网络驱动程序,该驱动程序进行了PHY自动协商,实际上它试图查看与其连接的内容。因为没有任何联系,所以就超时了。
您可能应该查找这个Linux发行版保存网络接口设置的位置。粗略的google搜索表明这个U-Boot有变量ipaddr / http://www.denx.de/wiki/view/DULG/UBootEnvVariables。
发布于 2014-01-06 07:06:34
在编译内核时,使用Kconfig或其图形类比来禁用网络。例如:看看这个。
https://unix.stackexchange.com/questions/108034
复制相似问题