อัพเกรด ARM เหนืออากาศ


9

เราจะสร้างบอร์ด ARM พร้อมโมเด็ม GSM ในตัว
เราต้องการอัพเกรดเฟิร์มแวร์ ARM บนอากาศ

มีวิธีการแก้ปัญหาโอเพ่นซอร์สที่ดีน่าเชื่อถือหรือไม่
ถ้าไม่มีฟีเจอร์นี้มี OS ที่ต้องชำระเงินหรือไม่?


2
ARM ค่อนข้างทั่วไป: มีผู้ผลิตหลายรายที่ฝังสถาปัตยกรรม ARM และบางรายอาจมีคุณสมบัติดังกล่าว
clabacchio

1
ข้อมูลที่เฉพาะเจาะจงมากขึ้นเกี่ยวกับชิป ARM / ตระกูลที่คุณวางแผนจะใช้จะดีมาก ไมโครคอนโทรลเลอร์ Cortex-M จำนวนมากถ้าไม่ใช่ทั้งหมดรองรับการเขียนแฟลชจากรหัสผู้ใช้ ตัวอย่างการใช้งานโอเพ่นซอร์สมีอยู่เช่น Maple bootloader leaflabs.com/docs/bootloader.htmlและฉันคิดว่าฉันเห็นการอัพเกรดเฟิร์มแวร์ผ่านลิงก์วิทยุที่รองรับใน quadcopter บางตัว
หนาม

เรายังไม่ได้เลือกอุปกรณ์ ARM ในขณะนี้;)
hotips

7
ปัญหาใหญ่ของการอัพเกรดเฟิร์มแวร์คือการบังคับให้ชิปเข้าสู่โหมดอัปเดตเมื่อเกิดข้อผิดพลาดกับเฟิร์มแวร์ เมื่อคุณเข้าถึงชิปคุณสามารถรีเซ็ตและบังคับให้ bootload pin สูง แต่คุณจะทำเช่นนั้นผ่านทางอากาศได้อย่างไร ทางออกเดียวที่เชื่อถือได้ที่ฉันสามารถจินตนาการได้คือการมีชิปตัวที่สอง (ไม่สามารถอัพเดตได้) ซึ่งจัดการกับการสื่อสารพื้นฐานและสามารถอัปเดตชิปหลักได้ หลังจากแก้ปัญหานั้นแล้ว bootloading ที่เกิดขึ้นจริงนั้นสามารถทำได้ง่ายอย่างเช่นใช้ (ตัวอย่าง) bootloader ที่สร้างขึ้นในชิป (เช่น LPC uC ของ I รู้ว่าทุกคนมี serial bootloader)
Wouter van Ooijen

2
@ เฮอร์นันนั่นจะทำให้โหมดความล้มเหลวเล็กน้อยเป็นไปได้เช่นเดียวกับชิปตัวใดตัวหนึ่ง (ทำงานรหัสผิด) เพื่อให้ตั้งค่าอีกครั้ง วิธีแก้ปัญหาที่เชื่อถือได้จริง ๆ เพียงอย่างเดียวคือการทำให้ฟังก์ชั่นในชิปตัวเดียวนั้นง่ายจนคุณไม่จำเป็นต้องอัพเดต
Wouter van Ooijen

คำตอบ:


9

ฉันไม่ทราบวิธีแก้ปัญหาใด ๆ ที่ทำไว้ล่วงหน้า แต่ฉันจะอธิบายว่าฉันไปรอบ ๆ มันได้อย่างไรในโครงการหนึ่ง มันไม่ใช่ 'ไม่สามารถ' ได้ทั้งหมด แต่ฉันไม่รู้ว่ามันล้มเหลวกับการอัพเกรดหลายพันครั้ง สำหรับแอปพลิเคชันนี้อัตราความล้มเหลวที่ต่ำมากจะยังคงถูกกว่าการเข้าถึงหน่วย

แอปพลิเคชันหลักมีประเภทแพ็กเก็ตเพิ่มเติมอีกสามประเภทที่เพิ่มเข้ากับโปรโตคอลการสื่อสารปกติซึ่งรวมถึงการตรวจจับข้อผิดพลาดและการลองอีกครั้งด้านบน:

  1. คำสั่งเริ่มต้นอัพเดตเฟิร์มแวร์จะล้างพื้นที่หน่วยความจำที่สงวนไว้ใน SPI Flash ภายนอก มันส่งคืนข้อผิดพลาดหากหน่วยกำลังทำงานจากแบตเตอรี่สำรองหรือหากกำลังทำงานจากพลังงานภายนอก แต่สถานะการชาร์จของแบตเตอรี่ต่ำกว่า 25%

  2. คำสั่งเขียนบล็อกยอมรับที่อยู่ตรงข้ามและข้อมูลที่เขียนไปยังหน่วยความจำแฟลชภายนอกในกลุ่มเล็ก ๆ โปรโตคอลระดับสูงจะดูแลการตรวจจับข้อผิดพลาดและการส่งสัญญาณซ้ำ หลังจากแต่ละบล็อกถูกเขียนมันจะถูกอ่านและตรวจสอบก่อนที่คำสั่งนั้นจะได้รับการยอมรับ

  3. คำสั่งอัปเดตเฟิร์มแวร์เสร็จสิ้นรวมถึงความยาวที่เฟิร์มแวร์ที่ได้รับควรจะมาพร้อมกับ CRC32 ของภาพทั้งหมดเพื่อการตรวจสอบเพิ่มเติม หากที่ตรงกับเนื้อหาของหน่วยความจำแฟลชภายนอกและเงื่อนไขพลังงานยังคงตกลงความยาวเท่ากันและ CRC32 จะถูกถ่ายโอนไปยังพื้นที่ EEPROM พร้อมกับ 'หมายเลขมายากล' เพื่อระบุว่าการอัพเดตเฟิร์มแวร์กำลังรออยู่

  4. ฮาร์ดไดรฟ์ถูกเรียกใช้งานในแอปพลิเคชันหลักเพื่อบังคับให้รีสตาร์ท Watchdog

  5. bootloader (ที่อยู่ในพื้นที่ป้องกันการเขียนของแฟลชของ ARM) เห็นหมายเลขเวทย์มนตร์ใน EEPROM และตรวจสอบ CRC32 ของภาพอีกครั้ง หากทุกอย่างตกลงมันจะถ่ายโอนภาพจากแฟลชภายนอกไปยังพื้นที่โปรแกรมหลักของแฟลชของ ARM

  6. ข้อมูลการอัปเกรดที่ค้างอยู่จะถูกล้างออกจาก EEPROM และฮาร์ดลูปบังคับให้รีบูตอีกครั้ง เวลานี้ bootloader จะเริ่มแอปพลิเคชันหลักตามปกติ

ในขณะที่ฉันไม่เคยเห็นขั้นตอนการอัปเดตล้มเหลวในการทดสอบเฟิร์มแวร์ใหม่ก่อนที่จะนำไปใช้งานเป็นสิ่งสำคัญโดยใช้วิธีนี้ หากรีลีสใหม่ไม่สามารถเชื่อมต่อกับเครือข่าย GSM และการยอมรับการอัพเดทในอนาคตจะต้องมีการอัปเดตเฟิร์มแวร์ในสถานที่


1

คุณใช้งาน Linux หรือ RTOS หรือโลหะเปลือยหรือไม่? หากใช้ Debian คุณสามารถถ่ายภาพระบบไฟล์ปัจจุบันทำการอัพเกรดผ่าน "apt-get" จากนั้นเก็บหรือย้อนกลับการเปลี่ยนแปลงโดยขึ้นอยู่กับว่ามันทำงานหรือไม่


เรามี Linux และโลหะเปลือยขึ้นอยู่กับแอปพลิเคชัน ;-)
ฮอตสปอต

1
หากคุณมี Linux คุณสามารถใช้ประโยชน์จากโครงสร้างพื้นฐานจำนวนมากได้ วิธีที่ฉันจัดการการอัปเดตในโครงการปัจจุบันของฉันคือการสร้างไฟล์. deb สำหรับแอปพลิเคชันที่กำหนดเองจากนั้นใช้อัปเดต apt-get เพื่ออัปเดตระบบ ฉันกำลังทดลองกับ btrfs ด้วย ระบบไฟล์นั้นให้คุณถ่ายภาพได้ ดังนั้นแผนของฉันคือการจับภาพไดเรกทอรีที่ต้องการลองและอัปเดตและหากไม่สามารถใช้งานได้ให้เปลี่ยนภาพรวมกลับคืน หากคุณใช้โลหะเปลือยคุณอาจต้องใช้หน่วยความจำคู่ปกติภาพหนึ่งสำหรับรหัสทำงานล่าสุดและอีกภาพหนึ่งสำหรับรหัสที่ดาวน์โหลดใหม่
fred basset
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.