ID บทความ: 000074333 ประเภทข้อมูล: ข้อความแสดงข้อผิดพลาด การตรวจสอบครั้งล่าสุด: 22/10/2014

เกิดข้อผิดพลาดในการเขียนโปรแกรมระบบNios IIกะพริบ

สิ่งแวดล้อม

  • Intel® Quartus® II Subscription Edition
  • โปรเซสเซอร์ Intel® Nios® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    ปัญหาสำคัญ

    คำอธิบาย

    ปัญหานี้มีผลต่อรหัสที่ตั้งใจจะดําเนินการในพริบตา โดยการใช้ alt_load() เพื่อคัดลอกส่วนที่เขียนได้ไปยัง RAM หากจะคัดลอกส่วน ELF (เช่น .bss) แฟลชไปยัง RAM โดยใช้ alt_load()เครื่องมือสร้างซอฟต์แวร์ ตรวจสอบว่าส่วนนั้นพอดีกับ RAM แต่ไม่เหมาะกับใน หน่วยความจําแฟลชที่จะตั้งโปรแกรม เครื่องมือสร้าง ไฟล์การเขียนโปรแกรมที่ไม่มีการระบุข้อผิดพลาดด้านขนาดโค้ด

    ปัญหานี้มีแนวโน้มที่จะส่งผลกระทบต่อคุณหากหน่วยความจําเป้าหมายของคุณ คือแฟลช MAX 10 onchip ซึ่งมีขนาดค่อนข้างเล็ก ปัญหานี้ จะส่งผลกระทบกับคุณก็ต่อเมื่อคุณกําลังใช้ alt_load()เท่านั้น

    ความละเอียด

    คุณสามารถระบุได้ด้วยตนเองว่าโค้ดของคุณเหมาะกับการมองหรือไม่ ที่จุดเริ่มต้นของไฟล์ .objdump จะถูกสร้างขึ้นเมื่อ คุณสร้างแอปพลิเคชันของคุณ ไฟล์นี้มีข้อมูลที่ คุณสามารถใช้เพื่อตรวจสอบว่าแต่ละส่วนพอดีกับแฟลชของคุณหรือไม่ ดังที่แสดงในตัวอย่างต่อไปนี้

    ไฟล์ .objdump ถูกสร้างขึ้นในแอปพลิเคชัน ไดเรกทอรีระดับบนสุดของแอปพลิเคชัน คุณสามารถสร้างได้จาก บรรทัดคําสั่งโดยพิมพ์ make app ในแอปพลิเคชัน ได เรก ทอรี

    ใกล้กับด้านบนสุดของไฟล์ .objdump เป็นรายการ ในส่วนที่คล้ายกับต่อไปนี้:

    Sections:
    IdxNameSizeVMALMAFile offAlgn
    0.entry000000200002800000028000000010002**5
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    1.exceptions000002200002802000028020000010202**2
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    2.text00006504 00028240 00028240 00001240 2**2
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    3.rodata 0000005c 00040000 0002e744 00008000 2**2
    CONTENTS, ALLOC, LOAD, READONLY, DATA
    4.rwdata 00001b78 0004005c 0002e7a0 0000805c 2**2
    CONTENTS, ALLOC, LOAD, DATA, SMALL_DATA
    5.bss 00000154 00041bd4 00030318 00009bd4 2**2
    ALLOC, SMALL_DATA

    แต่ละส่วนจะมีค่าขนาด VMA และ LMA VMA คือ ที่อยู่รันไทม์ และ LMA คือที่อยู่การโหลด หากส่วนไม่ใช่ คัดลอก, VMA = LMA หากมีการคัดลอกส่วน ข้อมูลดังกล่าวจะถูกคัดลอกมาจาก LMA ถึง VMA

    ในกรณีนี้ ซึ่งใช้ alt_load().entry และ.text ไม่ได้คัดลอก (VMA = LMA) .rodata, .rwdata, และ.bssคัดลอกจากแฟลชแอดเดรส (LMA) ไปยัง RAM ที่อยู่ (VMA)

    แฟลชในตัวอย่างนี้มี0x28000มากมายให้0x30000 ส่วน .rwdata ถูกตั้งโปรแกรมให้เริ่มกะพริบ ที่ VMA = 0x2e7a0 และขยายเป็นขนาด VMA = 0x2e7a0 0x1b78 = 0x30518 ดังนั้นจึงไม่สามารถใช้งานได้ทันที

    ผลิตภัณฑ์ที่เกี่ยวข้อง

    บทความนี้จะนำไปใช้กับ 1 ผลิตภัณฑ์

    Intel® MAX® 10 FPGA

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