Xilinx'te Linux önyükleme işlemi sırasında PHY otomatik anlaşmasını devre dışı bırakma


9

Linux'u bir FPGA kartına kurmaya çalışıyorum. Linux aroması Xilinx FPGA cipsleri için petalinux'dur .

Mevcut Xilinx SoC, bir Cortex A9 işlemciye ve programlanabilir bir donanım mantığına, yani FPGA'ya sahiptir. Terminaldeki önyükleme mesajını yakaladım:

.....................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

Özellikle şu hatlarla ilgileniyorum:

[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

Soru # 1: Sanırım bu satırlar TCP / IP için mi?

Görüldüğü gibi burada yaklaşık 12 saniye israf ediliyor. Şey, hızlı bir önyükleme sistemine ihtiyacım var ve sonunda uygulamada TCP / IP'ye ihtiyaç duymayacaktım.

Şimdiye kadar kurduğum Linux, Xilinx tarafından sağlanan önceden oluşturulmuş bir görüntü kullanıyordu. Şimdi TCP / IP bölümünden kurtulmak için (buna ihtiyacım olmadığından ve işletim sisteminde yoksa, bu 12 saniye kaydedilebilir - bu benim anlayışım), kendi Linux çekirdeği.

Bu yüzden ana sistemimden derlemek zorunda kalacağımı varsayarak PetaLinux'un kaynak kodunu indirdim.

Soru # 2: Ama TCP / IP bölümünü işletim sistemi kaynağından nasıl hariç tutabileceğimi bilmek istiyorum, böylece işletim sistemi önyüklendiğinde TCP / IP yordamlarını asla yürütmeyecek mi?

Soru # 3: Önceden oluşturulmuş görüntüde TCP / IP bölümünü devre dışı bırakma seçeneğimiz olup olmadığından da emin değilim?

Amacım, önyükleme işlemi sırasında bu satırlardan kurtulmaktır:

[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. adım: hangi init sisteminin kullanıldığını bulun. Adım 2: Yapılandırma dosyalarını dürtün.
strugee

Çekirdek kaynağınız var mı? Şu andan itibaren nasıl önyükleme yapacaksın? İlgili bir cihaz ağacı var mı?
Stark07

Bu mesaj U-Boot'tan geliyor, Linux henüz bu noktada açılmadı.
Gilles 'SO- kötü olmayı bırak'

Yanıtlar:


2

Soru 2: Bu baskıların uboot'tan geldiğine inanıyorum. Eğer öyleyse, "CONFIG_PHY_RESET" tanımlı olduğuna inanıyorum - bunun için uboot yapılandırmanızı kontrol edebilir misiniz? Bu özelliği devre dışı bırakmak için, genellikle uboot'un kullanacağı şey olan yapılandırmanızı kontrol etmeniz gerekir, genellikle ./include/configs/YourBoardConfigFile.h.

Kconfig'i kullanmak için çağrılan diğer cevaplardan biri - uboot'umun menuconfig'ini kontrol ettim ve bu seçenek yoktu.

Uboot kaynak dosyasına bakarsanız: ./drivers/net/4xx_enet.c , "CONFIG_PHY_RESET" için arama yaparsanız , kod yürütülüyor gibi görünecektir:

#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) {

Kısa bir süre sonra, "PHY otomatik görüşmesinin tamamlanması bekleniyor" metninin yazdırıldığını görebilirsiniz, bu yüzden sorun tam olarak bu noktada olmalıdır (veya buna yakın - mimariye bağlı olarak benzer başlatmaya sahip birkaç dosya daha vardı).

Bazı nedenlerden dolayı, üst düzey uboot kaynağındaki README dosyası CONFIG_PHY_RESET_DELAY'i çağırır, ancak CONFIG_PHY_RESET'i çağırmaz, bu yüzden orada kaçırmış olabilirsiniz.

Soru 3: CONFIG_PHY_RESET sorunsa, derleme zamanında ayarlanması gerekir. İndirmek gerekir Xilinx en uboot sizin kurulu için kaynağı.

Sıfırlamanın neden gerekli olduğundan emin değilim, bu yüzden gerçekten 1. soruya cevap vermedim, ancak bazı PHY'lerin başlatma sırasında sıfırlama konusunda farklı gereksinimleri var ve hatta bazılarının belirli bir gecikmeye ihtiyacı var gibi görünüyor.


0

Bu sistem, muhtemelen kendi IP adresini veya ağ geçidini kontrol ettiği için 10.10.70.101 IP adresine ping atmak istiyor. Bu bölüm, sistemin söz konusu IP adresine veya benzeri bir ağ arayüzüyle yapılandırıldığı anlamına gelir.

Duraklama, IP yapılandırma sürecinde, PHY otomatik anlaşması yapan Ethernet ağ sürücüsünü yüklediği için, esas olarak ona neyin bağlı olduğunu görmeye çalıştığı için olur. Hiçbir şey bağlı olmadığından zaman aşımına uğrar.

Muhtemelen bu Linux dağıtımının ağ arayüzü ayarlarını nerede saklayacağını aramalısınız. Bir cursory google araması, bu U-Boot'un http://www.denx.de/wiki/view/DULG/UBootEnvVariablesipaddr başına değişkene sahip olduğunu gösterir.


-1

Kullanım Kconfigveya çekirdeğin derlenmesi üzerine devre dışı Networking onun grafiksel analoglar. Örnekler: bakınız .


2
Lütfen sadece bağlantı göndermeyin, doğrudan bu siteye alakalı içerik ekleyin. Bağlantı verdiğiniz site kaybolursa, cevabınız değersiz hale gelir.
slm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.