5
ความเป็นไปได้สำหรับการจัดสรรหน่วยความจำสำหรับการออกแบบเฟิร์มแวร์แบบแยกส่วนใน C
วิธีการแบบแยกส่วนค่อนข้างมีประโยชน์โดยทั่วไป (พกพาและสะอาด) ดังนั้นฉันจึงลองโปรแกรมโมดูลเป็นอิสระจากโมดูลอื่น ๆ เท่าที่จะทำได้ แนวทางของฉันส่วนใหญ่ขึ้นอยู่กับ struct ที่อธิบายถึงโมดูลเอง ฟังก์ชั่นการเริ่มต้นจะตั้งค่าพารามิเตอร์หลักหลังจากนั้นตัวจัดการ (ตัวชี้ไปยังโครงสร้าง desriptive) จะถูกส่งผ่านไปยังฟังก์ชันใดก็ตามภายในโมดูลที่เรียกว่า ตอนนี้ฉันสงสัยว่าวิธีที่ดีที่สุดของหน่วยความจำการจัดสรรสำหรับโครงสร้างที่อธิบายถึงโมดูลอาจเป็น ถ้าเป็นไปได้ฉันต้องการสิ่งต่อไปนี้: โครงสร้างทึบแสงดังนั้นโครงสร้างอาจเปลี่ยนแปลงได้โดยการใช้ฟังก์ชั่นอินเตอร์เฟสที่มีให้เท่านั้น หลายกรณี หน่วยความจำที่จัดสรรโดย linker ฉันเห็นความเป็นไปได้ดังต่อไปนี้ซึ่งขัดแย้งกับหนึ่งในเป้าหมายของฉัน: ประกาศทั่วโลก หลายอินสแตนซ์ทั้งหมดถูกลิงค์โดย linker แต่ struct ไม่ทึบแสง (#includes) module_struct module; void main(){ module_init(&module); } malloc opaque โครงสร้างหลายอินสแตนซ์แต่ allcotion on heap ใน module.h: typedef module_struct Module; ในฟังก์ชั่น module.c init, malloc และตัวชี้กลับไปยังหน่วยความจำที่จัดสรรไว้ module_mem = …