ฉันจะทราบได้อย่างไรว่า uboot ช่วงที่อยู่หน่วยความจำ RAM ถูกใช้งานอย่างไร


12

ฉันอยู่ใน uboot และสงสัยว่าฉันจะบอกได้อย่างไรว่าช่วงที่อยู่ของ RAM นั้นถูกใช้โดย uboot

uboot ต้องการหน่วยความจำในการทำงานดังนั้นจึงอาจใช้ RAM บางตัว ฉันต้องการหลีกเลี่ยงการแก้ไขที่อยู่ RAM เหล่านั้น

ฉันจะทราบได้อย่างไรว่าส่วนใดของหน่วยความจำที่โหลด uboot

คำตอบ:


2

หน้าDULG DebuggingUBootมีสิ่งนี้ที่จะพูด ("การย้าย" ที่กล่าวถึงคือการคัดลอกตัวเองจากแฟลชไปยัง RAM)

สำหรับการดีบัก U-Boot หลังจากการย้ายเราจำเป็นต้องรู้ที่อยู่ที่ U-Boot ย้ายไปอยู่เอง เมื่อไม่มีการใช้คุณสมบัติแปลกใหม่เช่น PRAM ที่อยู่นี้มักจะเป็น - CONFIG_SYS_MONITOR_LEN ในตัวอย่างของเราที่มี RAM ขนาด 16MB และ CONFIG_SYS_MONITOR_LEN = 192KB จะให้ที่อยู่ 0x1000000 - 0x30000 = 0xFD0000

การอ่านข้อความเพิ่มเติมดูเหมือนจะบ่งบอกว่ามันขึ้นอยู่กับโปรเซสเซอร์หรือบอร์ดและคุณอาจต้องตรวจสอบแหล่ง U-Boot เพื่อทราบอย่างแน่นอน

เกี่ยวกับGuruplug :

ทางด้าน RAM u-Boot มีการจอง 8 เมกะไบต์แรก ส่วนที่เหลือฟรี นักพัฒนาบางคนจะโหลดเคอร์เนลและระบบไฟล์ที่ 0 × 800000 สำหรับการเขียนโปรแกรมไปยังแฟลช จุดทั่วไปอีกจุดหนึ่งอยู่ที่ขอบเขต 100 เมกะไบต์ (หรือชดเชย 0 × 640000)

ขึ้นอยู่กับรุ่นของคำสั่ง U-Boot ของคุณอาจมีให้ใส่สตริงที่ไหนสักแห่งใน RAM ว่างแล้วตามล่า RAM ส่วนที่เหลือสำหรับสตริงนั้นโดยเปิดเผยตำแหน่งโดยประมาณของ U-Boot ในหน่วยความจำ


1

เมื่อฉันเริ่มรุ่นของ uboot ที่ฉันใช้มันจะแสดง "เค้าโครงหน่วยความจำเคอร์เนลเสมือน" โดยอัตโนมัติ

Memory: 859068k/859068k available, 25668k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xf9e00000 - 0xffe00000   (  96 MB)
    vmalloc : 0xe0800000 - 0xf4000000   ( 312 MB)
    lowmem  : 0x80000000 - 0xe0000000   (1536 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .init : 0x80008000 - 0x8004d000   ( 276 kB)
      .text : 0x8004d000 - 0x808ad000   (8576 kB)
      .data : 0x808ce000 - 0x80937a40   ( 423 kB)

ฉันพบว่ามันปลอดภัยที่จะใช้พื้นที่ lowmem สำหรับกระบวนการอรรถประโยชน์ต่าง ๆ ที่ฉันต้องการเรียกใช้ (เช่นการโหลดไฟล์ขนาดใหญ่ลงในหน่วยความจำ) ฉันคิดว่าคุณต้องการใช้หน่วยความจำสูงสำหรับสิ่งนั้น แต่ฉันไม่มีตัวเลือก (ดังที่คุณเห็นในผลลัพธ์ของฉัน)


คุณแน่ใจหรือไม่ว่าไม่ใช่แผนที่หน่วยความจำของ Linux
claymation

ฉันไม่แน่ใจ การขาด highmem และการอ้างอิงถึง "Virtual kernel" ทำให้ฉันคิดเป็นอย่างอื่น ฉันเป็นคนโง่ / แฮ็คเมื่อมาถึง uboot จุดสำคัญที่นี่คือฉันสามารถใช้ช่วง lowmem อย่างปลอดภัยโดยไม่ต้องเขียนอะไรที่ uboot ต้องการ
BuvinJ

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