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

1

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