โดยทั่วไปตัวจำลองซีพียูในตัวสามารถตั้งโปรแกรมให้จำลองฮาร์ดแวร์ได้เช่นกัน เทคโนโลยีการจำลองเสมือนทั้งหมดที่นอกเหนือจาก Xen ทำเช่นนั้น แต่คุณต้องเขียนโค้ดที่อ้างว่ามีรีจิสเตอร์บางตัวที่อยู่จริงหรือบน x86 ที่อยู่บนบัส I / O จากนั้นคุณต้องตอบกลับการอ่านและเขียนไปยังที่อยู่เหล่านี้ราวกับว่าซอฟต์แวร์ของคุณเป็นฟิสิคัล ชิปที่มีการเข้าถึงการควบคุมและการลงทะเบียนสถานะ
หากคุณต้องการทำเช่นนี้ฉันขอแนะนำให้แก้ไข QEMU แต่มันจะไม่ง่าย โดยทั่วไปแล้วการเรียงลำดับสิ่งนี้จะเกิดขึ้นเฉพาะเมื่อคุณออกแบบชิปที่กำหนดเองด้วยไมโครคอนโทรลเลอร์และคอร์อื่น ๆ สำหรับ I / O ของคุณ
ระบบการพัฒนาที่ ARM Holdings จัดจำหน่ายให้สำหรับเรื่องนี้และมีแนวโน้มที่จะทำงานได้ง่ายกว่าการแฮ็คข้อมูล QEMU แต่มีราคาแพงมาก
มีตัวเลียนแบบ Open Source ARM หลายตัวที่รันรูทีนย่อยเดียวซึ่งตัวมันเองสามารถเรียกรูทีนย่อยอื่น ๆ ที่คุณสามารถใช้สำหรับการดีบักการปรับแต่งประสิทธิภาพของรูทีนย่อยที่ไม่ขึ้นอยู่กับการเข้าถึงฮาร์ดแวร์ ฉันใช้อย่างใดอย่างหนึ่งต่อไปนี้เพื่อความสำเร็จที่ดีในการเพิ่มประสิทธิภาพ AES Encryptor สำหรับ ARM7TDMI
คุณสามารถเขียนชุดทดสอบหน่วยเทียมอย่างง่าย ๆ ใน C หรือ C ++ เชื่อมโยงคลาสหรือรูทีนย่อยภายใต้การทดสอบแล้วเรียกใช้มันในโปรแกรมจำลอง
ฉันไตร่ตรองปัญหาที่คล้ายกันมาหลายปีแล้ววิธีทดสอบหน่วย Linux หรือ Mac OS X เคอร์เนลรหัสหน่วย มันควรจะเป็นไปได้ แต่ฉันไม่เคยลองจริง ๆ อาจเป็นไปได้ที่จะสร้างเคอร์เนลแบบเต็มแทนที่จะทดสอบโค้ดของคุณโดยแยกด้วยเฟรมเวิร์กการทดสอบหน่วยที่ลิงก์โดยตรงกับเคอร์เนลของคุณ จากนั้นคุณจะทำการทดสอบหน่วยจากอินเทอร์เฟซภายนอกบางชนิด
บางทีมันอาจจะมีประสิทธิผลมากกว่าที่จะใช้เครื่องมือครอบคลุมรหัสจากนั้นทดสอบเฟิร์มแวร์ของคุณเป็นแพ็คเกจที่สมบูรณ์ผ่านอินเทอร์เฟซภายนอก เครื่องมือความครอบคลุมจะค้นหาเส้นทางรหัสที่ยังไม่ได้ทดสอบดังนั้นคุณสามารถเพิ่มการทดสอบภายนอกเพิ่มเติมเพื่อพยายามรับความครอบคลุมมากขึ้น