วิธีการนำส่วนที่สำคัญไปใช้กับ ARM Cortex A9
ฉันกำลังย้ายรหัสดั้งเดิมจากแกน ARM926 ไปยัง CortexA9 รหัสนี้เป็น baremetal และไม่รวมระบบปฏิบัติการหรือไลบรารีมาตรฐานที่กำหนดเองทั้งหมด ฉันมีความล้มเหลวที่ดูเหมือนจะเกี่ยวข้องกับสภาพการแข่งขันที่ควรได้รับการป้องกันโดยการแบ่งส่วนที่สำคัญของรหัส ฉันต้องการความคิดเห็นเกี่ยวกับวิธีการของฉันเพื่อดูว่าส่วนที่สำคัญของฉันอาจใช้ไม่ได้กับ CPU นี้หรือไม่ ฉันใช้ GCC ฉันสงสัยว่ามีข้อผิดพลาดเล็กน้อย นอกจากนี้มีไลบรารี opensource ที่มี primitives ประเภทนี้สำหรับ ARM (หรือแม้แต่ไลบราล็อก / เซมาฟอร์ไลบรารี่ที่มีน้ำหนักเบา) หรือไม่? #define ARM_INT_KEY_TYPE unsigned int #define ARM_INT_LOCK(key_) \ asm volatile(\ "mrs %[key], cpsr\n\t"\ "orr r1, %[key], #0xC0\n\t"\ "msr cpsr_c, r1\n\t" : [key]"=r"(key_) :: "r1", "cc" ); #define …