เราจะสร้างบอร์ด ARM พร้อมโมเด็ม GSM ในตัว
เราต้องการอัพเกรดเฟิร์มแวร์ ARM บนอากาศ
มีวิธีการแก้ปัญหาโอเพ่นซอร์สที่ดีน่าเชื่อถือหรือไม่
ถ้าไม่มีฟีเจอร์นี้มี OS ที่ต้องชำระเงินหรือไม่?
เราจะสร้างบอร์ด ARM พร้อมโมเด็ม GSM ในตัว
เราต้องการอัพเกรดเฟิร์มแวร์ ARM บนอากาศ
มีวิธีการแก้ปัญหาโอเพ่นซอร์สที่ดีน่าเชื่อถือหรือไม่
ถ้าไม่มีฟีเจอร์นี้มี OS ที่ต้องชำระเงินหรือไม่?
คำตอบ:
ฉันไม่ทราบวิธีแก้ปัญหาใด ๆ ที่ทำไว้ล่วงหน้า แต่ฉันจะอธิบายว่าฉันไปรอบ ๆ มันได้อย่างไรในโครงการหนึ่ง มันไม่ใช่ 'ไม่สามารถ' ได้ทั้งหมด แต่ฉันไม่รู้ว่ามันล้มเหลวกับการอัพเกรดหลายพันครั้ง สำหรับแอปพลิเคชันนี้อัตราความล้มเหลวที่ต่ำมากจะยังคงถูกกว่าการเข้าถึงหน่วย
แอปพลิเคชันหลักมีประเภทแพ็กเก็ตเพิ่มเติมอีกสามประเภทที่เพิ่มเข้ากับโปรโตคอลการสื่อสารปกติซึ่งรวมถึงการตรวจจับข้อผิดพลาดและการลองอีกครั้งด้านบน:
คำสั่งเริ่มต้นอัพเดตเฟิร์มแวร์จะล้างพื้นที่หน่วยความจำที่สงวนไว้ใน SPI Flash ภายนอก มันส่งคืนข้อผิดพลาดหากหน่วยกำลังทำงานจากแบตเตอรี่สำรองหรือหากกำลังทำงานจากพลังงานภายนอก แต่สถานะการชาร์จของแบตเตอรี่ต่ำกว่า 25%
คำสั่งเขียนบล็อกยอมรับที่อยู่ตรงข้ามและข้อมูลที่เขียนไปยังหน่วยความจำแฟลชภายนอกในกลุ่มเล็ก ๆ โปรโตคอลระดับสูงจะดูแลการตรวจจับข้อผิดพลาดและการส่งสัญญาณซ้ำ หลังจากแต่ละบล็อกถูกเขียนมันจะถูกอ่านและตรวจสอบก่อนที่คำสั่งนั้นจะได้รับการยอมรับ
คำสั่งอัปเดตเฟิร์มแวร์เสร็จสิ้นรวมถึงความยาวที่เฟิร์มแวร์ที่ได้รับควรจะมาพร้อมกับ CRC32 ของภาพทั้งหมดเพื่อการตรวจสอบเพิ่มเติม หากที่ตรงกับเนื้อหาของหน่วยความจำแฟลชภายนอกและเงื่อนไขพลังงานยังคงตกลงความยาวเท่ากันและ CRC32 จะถูกถ่ายโอนไปยังพื้นที่ EEPROM พร้อมกับ 'หมายเลขมายากล' เพื่อระบุว่าการอัพเดตเฟิร์มแวร์กำลังรออยู่
ฮาร์ดไดรฟ์ถูกเรียกใช้งานในแอปพลิเคชันหลักเพื่อบังคับให้รีสตาร์ท Watchdog
bootloader (ที่อยู่ในพื้นที่ป้องกันการเขียนของแฟลชของ ARM) เห็นหมายเลขเวทย์มนตร์ใน EEPROM และตรวจสอบ CRC32 ของภาพอีกครั้ง หากทุกอย่างตกลงมันจะถ่ายโอนภาพจากแฟลชภายนอกไปยังพื้นที่โปรแกรมหลักของแฟลชของ ARM
ข้อมูลการอัปเกรดที่ค้างอยู่จะถูกล้างออกจาก EEPROM และฮาร์ดลูปบังคับให้รีบูตอีกครั้ง เวลานี้ bootloader จะเริ่มแอปพลิเคชันหลักตามปกติ
ในขณะที่ฉันไม่เคยเห็นขั้นตอนการอัปเดตล้มเหลวในการทดสอบเฟิร์มแวร์ใหม่ก่อนที่จะนำไปใช้งานเป็นสิ่งสำคัญโดยใช้วิธีนี้ หากรีลีสใหม่ไม่สามารถเชื่อมต่อกับเครือข่าย GSM และการยอมรับการอัพเดทในอนาคตจะต้องมีการอัปเดตเฟิร์มแวร์ในสถานที่
คุณใช้งาน Linux หรือ RTOS หรือโลหะเปลือยหรือไม่? หากใช้ Debian คุณสามารถถ่ายภาพระบบไฟล์ปัจจุบันทำการอัพเกรดผ่าน "apt-get" จากนั้นเก็บหรือย้อนกลับการเปลี่ยนแปลงโดยขึ้นอยู่กับว่ามันทำงานหรือไม่