รหัสจะขึ้นอยู่กับว่าของ MER ( วิญญาณและโอกาส ) ซึ่งมีพื้นฐานมาจากคนงานคนแรก MPF ( Sojourner ) มันคือ 3.5 ล้านบรรทัดของ C (ส่วนใหญ่จะสร้างอัตโนมัติ), ทำงานบนโปรเซสเซอร์ RA50 ที่ผลิตโดยBAEและระบบปฏิบัติการVxWorks กว่าล้านเส้นถูกเขียนด้วยมือ
รหัสนี้มีการใช้งานเป็น 150 โมดูลแยกกันโดยแต่ละฟังก์ชั่นมีหน้าที่แตกต่างกัน โมดูลที่มีการเชื่อมโยงกันสูงจะถูกจัดระเบียบเป็นส่วนประกอบที่เป็นนามธรรมของโมดูลที่มีอยู่และ "ระบุฟังก์ชันกิจกรรมหรือพฤติกรรมที่เฉพาะเจาะจง" ส่วนประกอบเหล่านี้มีการจัดระเบียบเป็นชั้น ๆ และมี "องค์ประกอบระดับบนสุดไม่เกิน 10 รายการ"
ที่มา: ปาฐกถาพิเศษโดยBenjamin Cichyในการประชุมเชิงปฏิบัติการ 2010 เรื่องซอฟต์แวร์ยานอวกาศการบิน (FSW-10) , สไลด์, เสียงและวิดีโอ (เริ่มต้นด้วยภาพรวมภารกิจการอภิปรายสถาปัตยกรรมที่สไลด์ 80)
มีคนถาม Hacker News ว่า "ไม่แน่ใจว่ารหัส C ส่วนใหญ่สร้างโดยอัตโนมัติจากอะไร"
ฉันไม่แน่ใจ 100% แม้ว่าอาจมีการนำเสนอแยกกันในปีนั้นหรือปีอื่นที่อธิบายกระบวนการสร้างอัตโนมัติของพวกเขา ฉันรู้ว่ามันเป็นหัวข้อยอดนิยมโดยทั่วไปในการประชุม FSW-11
Simulinkเป็นไปได้ มันเป็นส่วนประกอบของ MATLAB ที่ได้รับความนิยมในหมู่วิศวกรเครื่องกลดังนั้นวิศวกรนำทางและควบคุมส่วนใหญ่จึงอนุญาตให้พวกเขาใช้ 'รหัส' และจำลองสิ่งต่าง ๆ โดยไม่ต้องคิดว่าพวกเขากำลังเข้ารหัส
การเขียนโปรแกรมตามรูปแบบนั้นเป็นสิ่งที่อุตสาหกรรมตระหนักอย่างช้า ๆ แต่ฉันไม่รู้ว่ามันเป็นที่จับได้ในJPLหรือว่าพวกเขาจะเลือกใช้เมื่อโครงการเริ่มต้นขึ้น
ความเป็นไปได้ที่สามและน่าจะเป็นไปได้สำหรับรหัสการสื่อสาร ด้วยระบบพื้นที่ทั้งหมดคุณต้องส่งคำสั่งไปยังซอฟต์แวร์เครื่องบินจากซอฟต์แวร์ภาคพื้นดินและรับ telemetry จากซอฟต์แวร์เครื่องบินและดำเนินการด้วยซอฟต์แวร์ภาคพื้นดิน แต่ละแพ็คเก็ตคำสั่ง / telemetry เป็นโครงสร้างข้อมูลที่แตกต่างกันและเป็นสิ่งจำเป็นที่ทั้งสองฝ่ายกำลังทำงานจากคำจำกัดความแพ็กเก็ตเดียวกันที่แน่นอนและจัดรูปแบบแพ็คเก็ตเพื่อให้มีการจัดรูปแบบ สิ่งนี้เกี่ยวข้องกับการได้รับสิ่งต่าง ๆ มากมายอย่างถูกต้องรวมถึงชนิดข้อมูลขนาดและ endianness (แม้ว่าหลังมักจะเป็นสิ่งที่ทั่วโลกคุณอาจมีโปรเซสเซอร์หลายตัวบนเครื่องบินที่มีความแตกต่างกัน)
แต่นั่นเป็นเพียงพื้นผิว คุณต้องมีรหัสซ้ำ ๆ มากมายทั้งสองด้านเพื่อจัดการสิ่งต่าง ๆ เช่นการบันทึกการตรวจสอบความถูกต้องของคำสั่ง / telemetry การตรวจสอบข้อ จำกัด และการจัดการข้อผิดพลาด จากนั้นคุณสามารถทำสิ่งที่ซับซ้อนมากขึ้น สมมติว่าคุณมีคำสั่งเพื่อตั้งค่าการลงทะเบียนฮาร์ดแวร์และค่านั้นจะถูกส่งกลับเป็น telemetry ในแพ็คเก็ตเฉพาะ คุณสามารถสร้างซอฟต์แวร์ภาคพื้นดินที่ตรวจสอบว่าจุด telemetry เพื่อให้แน่ใจว่าเมื่อมีการตั้งค่าการลงทะเบียนในที่สุด telemetry การเปลี่ยนแปลงเพื่อสะท้อนการเปลี่ยนแปลง และแน่นอนว่าจุด telemetry บางจุดมีความสำคัญมากกว่าจุดอื่น (เช่นกระแสบัสหลัก) และถูกกำหนดให้ลงในแพ็คเก็ตหลาย ๆ อันซึ่งเกี่ยวข้องกับการทำสำเนาเพิ่มเติมในด้านการบินและการทำสำเนาข้อมูลบนพื้นดิน
ทั้งหมดนั้นมันง่ายกว่ามาก (ในความคิดของฉัน) ที่จะเขียนหนึ่งไฟล์คอลเลกชันคงที่ (ใน XML, CSV, หรือ DSL / อะไรก็ได้ที่คุณมี) รันมันผ่านสคริปต์ Perl / Python และ presto! รหัส!
ฉันไม่ทำงานที่ JPL ดังนั้นฉันจึงไม่สามารถให้รายละเอียดใด ๆ ที่ไม่ได้อยู่ในวิดีโอด้วยข้อยกเว้นเพียงข้อเดียว ฉันได้ยินมาว่าโค้ด C ที่สร้างอัตโนมัติถูกเขียนโดยสคริปต์ Python และปริมาณของการเข้ารหัสอัตโนมัติในโครงการนั้นแตกต่างกันอย่างมากขึ้นอยู่กับว่าใครเป็นผู้นำ FSW