ปิดใช้งานการเจรจาต่อรองอัตโนมัติ PHY ในระหว่างกระบวนการบูท Linux บน Xilinx


9

ฉันพยายามติดตั้ง Linux บนบอร์ด FPGA รสชาติลินุกซ์คือเปตาลินซ์สำหรับชิป Xilinx FPGA

Xilinx SoC ปัจจุบันมีโปรเซสเซอร์ Cortex 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 เลยในแอปพลิเคชันปลายทาง

ลินุกซ์ที่ฉันติดตั้งจนถึงตอนนี้ใช้อิมเมจที่สร้างไว้ล่วงหน้าแล้วโดย Xilinx ตอนนี้เพื่อกำจัดส่วน TCP / IP (เนื่องจากฉันไม่ต้องการและถ้าฉันไม่ได้มีในระบบปฏิบัติการ 12 วินาทีนี้จะถูกบันทึก - นี่คือความเข้าใจของฉัน) ฉันวางแผนที่จะสร้างของฉัน เคอร์เนลของตัวเอง

ดังนั้นฉันจึงดาวน์โหลดซอร์สโค้ดของ PetaLinux โดยสมมติว่าฉันจะต้องรวบรวมจากระบบโฮสต์ของฉัน

คำถาม # 2:แต่ฉันต้องการทราบว่าฉันจะแยกส่วน TCP / IP ออกจากแหล่ง OS ได้อย่างไรดังนั้นเมื่อบูทระบบปฏิบัติการมันจะไม่รันเวลาที่ต้องใช้รูทีน 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

ขั้นตอนที่ 1: ค้นหาระบบ init ที่กำลังใช้งานอยู่ ขั้นตอนที่ 2: กระตุ้นไฟล์ปรับแต่ง
strugee

คุณมีแหล่งเคอร์เนลหรือไม่? คุณบูทมันตอนนี้ได้อย่างไร มีทรีอุปกรณ์เกี่ยวข้องหรือไม่
Stark07

ข้อความนั้นมาจาก U-Boot, Linux ยังไม่ได้บูตในตอนนั้น
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


2

คำถามที่ 2:ฉันเชื่อว่าภาพพิมพ์เหล่านั้นมาจาก uboot ถ้าเป็นเช่นนั้นฉันเชื่อว่าคุณได้กำหนด "CONFIG_PHY_RESET" - คุณช่วยกรุณาตรวจสอบการกำหนดค่า uboot สำหรับสิ่งนั้นได้ไหม หากต้องการปิดใช้งานคุณลักษณะนี้คุณอาจต้องตรวจสอบการกำหนดค่าของคุณซึ่งมักจะคล้ายกับ: ./include/configs/YourBoardConfigFile.h เป็นสิ่งที่ uboot จะใช้

หนึ่งในคำตอบอื่น ๆ ที่เรียกว่าใช้ Kconfig - ฉันตรวจสอบเมนู menuconfig ของ uboot และไม่มีตัวเลือกนั้น

หากคุณดูที่ไฟล์ต้นฉบับ uboot: ./drivers/net/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 ให้เสร็จสมบูรณ์" ดังนั้นจึงควรเป็นที่ที่ปัญหาของคุณอยู่ (หรือใกล้กับมัน - มีไฟล์อื่น ๆ อีกสองสามไฟล์ที่มีการเริ่มต้นคล้ายกันขึ้นอยู่กับสถาปัตยกรรม)

ด้วยเหตุผลบางอย่างไฟล์ READMEในแหล่งข้อมูล uboot ระดับบนเรียก CONFIG_PHY_RESET_DELAY แต่ไม่ใช่ CONFIG_PHY_RESET ดังนั้นคุณอาจพลาด

คำถามที่ 3:หาก CONFIG_PHY_RESET เป็นปัญหาแสดงว่าสิ่งนี้จะต้องถูกตั้งค่าในเวลาคอมไพล์ คุณควรจะสามารถดาวน์โหลด ซอร์สuBoot ของ Xilinxสำหรับบอร์ดของคุณ

ฉันไม่แน่ใจว่าทำไมต้องมีการรีเซ็ตดังนั้นฉันจึงไม่ได้ตอบคำถามข้อที่ 1 ของคุณ แต่ดูเหมือนว่า PHY บางรุ่นมีข้อกำหนดที่แตกต่างกันในการรีเซ็ตเมื่อเริ่มต้นทำงานและแม้บางคนต้องการเวลาที่ล่าช้า


0

เห็นได้ชัดว่าระบบนั้นต้องการ ping ที่อยู่ IP 10.10.70.101 อาจเป็นเพราะมันกำลังตรวจสอบที่อยู่ IP ของตนเองหรือเกตเวย์ ส่วนนี้หมายถึงระบบมีการกำหนดค่าด้วยอินเทอร์เฟซเครือข่ายที่มีที่อยู่ IP นั้นหรือที่คล้ายกัน

การหยุดชั่วคราวเกิดขึ้นเนื่องจากในกระบวนการกำหนดค่า IP จะโหลดไดรเวอร์เครือข่ายอีเทอร์เน็ตซึ่งทำการ PHY การจัดการโดยอัตโนมัติโดยพื้นฐานแล้วจะพยายามดูว่ามีการเชื่อมต่อกับอะไร เนื่องจากไม่มีการเชื่อมต่อจึงหมดเวลา

คุณน่าจะมองหาว่าการกระจาย Linux นี้เก็บการตั้งค่าเครือข่ายไว้ที่ไหน การค้นหา google คร่าวๆระบุว่า U-Boot นี้มีตัวแปรipaddrต่อhttp://www.denx.de/wiki/view/DULG/UBootEnvVariables


-1

ใช้Kconfigหรืออะนาล็อกแบบกราฟิกเพื่อปิดใช้งานเครือข่ายเมื่อมีการรวบรวมเคอร์เนล ตัวอย่าง: เห็นนี้


2
กรุณาอย่าโพสต์ลิงค์รวมถึงเนื้อหาที่เกี่ยวข้องโดยตรงบนเว็บไซต์นี้ หากไซต์ที่คุณกำลังเชื่อมโยงไปนั้นหายไปคำตอบของคุณจะไร้ค่า
slm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.