คำถามติดแท็ก linker-script

3
Flash และ RAM: Code Execution
ฉันเพิ่งเริ่มเรียนรู้การชุมนุมและรู้เกี่ยวกับตัวเชื่อมโยงสคริปต์และรายละเอียดในระดับต่ำอื่น ๆ ของการเขียนโปรแกรมฮาร์ดแวร์ ฉันยังสอนสถาปัตยกรรมคอมพิวเตอร์ด้วยตัวเองและบางแห่งตามแนวที่ฉันกลัวว่ารูปภาพของฉันในแบบจำลองหน่วยความจำอาจจะผิดตลอดไป ตามสิ่งที่ฉันเข้าใจในปัจจุบันรหัสและข้อมูลทั้งหมดอยู่ในหน่วยความจำแบบไม่ลบเลือนหลังจากที่เรา 'เผา' ไบนารีลงบนหน่วยประมวลผล - RAM ที่มีความผันผวนจะไม่มีอะไรเกิดขึ้นเมื่อรีเซ็ต เมื่อโปรแกรมเริ่ม 'เรียกใช้งาน' โปรแกรมจะทำเช่นนั้นจากที่อยู่ 0x0000 ซึ่งเกือบตลอดเวลา (AFAIK) ที่อยู่ต่ำที่สุดใน Flash ดังนั้นคำแนะนำจะถูกสลักลงบนบัสที่เชื่อมต่อแฟลชกับซีพียูหลักและนั่นคือจุดที่เกิดการดำเนินการจริง อย่างไรก็ตามเมื่อเราพูดถึงการดึงหรือเก็บข้อมูลจากหน่วยความจำของ CPU เรามักจะพูดถึง RAM - ฉันรู้ว่าเราสามารถอ่าน / เขียนข้อมูลจากหน่วยความจำของโปรแกรมได้เช่นกัน (ฉันเคยเห็นสิ่งนี้ทำบน AVR) แต่มันไม่เป็นเรื่องธรรมดาเหรอ? เป็นเพราะแรมเร็วกว่า ROM ที่เราต้องการเก็บข้อมูลหรือไม่ คำตอบที่ได้รับการยอมรับสำหรับคำถามนี้บอกว่าส่วนใหญ่ของรหัสรันออกจาก RAM นี่หมายความว่ารหัสรันไทม์เริ่มต้น (ซึ่งเรียกใช้จาก Flash) ต้องคัดลอกโปรแกรม opcodes ทั้งหมดจาก Flash ไปยัง RAM และแมปที่อยู่ใด ๆ ใน Flash ให้ชี้ไปที่ RAM …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.