การรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานทำงานอย่างไร


18

อุปกรณ์ฝังตัวทั้งหมดมีตัวเลือก "รีเซ็ตเป็นค่าเริ่มต้นจากโรงงาน" ซึ่งอนุญาตให้ผู้ใช้รีเซ็ตอุปกรณ์ของเขาหากมีสิ่งผิดปกติ

ฉันกำลังพัฒนาเฟิร์มแวร์บนบอร์ด STM32 เฟิร์มแวร์มีบูตโหลดเดอร์ที่อนุญาตให้อัปเกรดแอปพลิเคชันผ่าน UART (โดยการส่งไฟล์ไบนารีที่มีภาพใหม่) และฉันต้องการเพิ่มคุณสมบัติอื่น: รีเซ็ตเป็นค่าจากโรงงาน เมื่อผู้ใช้เลือกตัวเลือกนี้บอร์ดจะโหลดภาพต้นฉบับ

การรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานคืออะไร มันเกี่ยวกับการโหลดไฟล์ไบนารี่ทั้งหมดลงในหน่วยความจำอีกครั้งหรือเพียงแค่เรียกใช้ฟังก์ชันที่เริ่มต้นตัวแปรที่แก้ไขโดยผู้ใช้ปลายทางหรือไม่

วิธีปฏิบัติที่ดีที่สุดในการทำเช่นนั้นคืออะไร?

จะเก็บ FW ดั้งเดิมไว้ที่ไหน มันอยู่ในแฟลชภายในหรือภายนอก?

คำตอบ:


20

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

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


1
ไม่ใช่คำตอบจริงๆดังนั้นฉันจะทิ้งไว้เป็นความคิดเห็น: อุปกรณ์บางอย่างเพียงแค่เปลี่ยนการตั้งค่ากลับเป็นค่าเริ่มต้นนี่เป็นเรื่องง่าย (ตัวอย่างเช่นเพียงแค่ลบการตั้งค่าผู้ใช้) อื่น ๆ (ฉันคิดว่าน้อยลง) รีเซ็ตเฟิร์มแวร์เป็นค่าเริ่มต้นจากโรงงาน สิ่งนี้ยากกว่าเนื่องจากคุณต้องการวิธีแทนที่เฟิร์มแวร์ที่มีอยู่ด้วยเฟิร์มแวร์รุ่นเก่า
Dithermaster

11

หากคุณใช้ตัวอย่างทั่วไปของค่าเริ่มต้นจากโรงงานนั่นคือ UEFI (BIOS) สำหรับพีซีของคุณ

มันทำด้วยชิปแฟลชและชิปหน่วยความจำ SRAM สำรองแบตเตอรี่ ชิปแฟลชมีโปรแกรมและ SRAM มีการตั้งค่า

เมื่อรีเซ็ตเป็นค่าเริ่มต้นเนื้อหาของ sram ระเหยจะถูกลบ ในการบูตครั้งถัดไปจะตรวจพบว่าการตรวจสอบการตั้งค่าไม่ถูกต้องและเรียกคืนค่าเริ่มต้นที่มีอยู่ในโปรแกรม

นี่ไม่ได้ จำกัด อยู่ที่การสำรองแบตเตอรี่ SRAM สามารถทำได้ด้วย FLASH หรือ EEPROM แต่ SRAM สำรองแบตเตอรี่สามารถลบได้โดยไม่ต้องเปิดเครื่อง


อีกคำหนึ่งคือการกู้คืนจากโรงงานซึ่งหมายความว่ามันมีโปรแกรมหลักสองครั้ง แต่ผู้ใช้สามารถอัพเกรดได้เพียงหนึ่งชุดเท่านั้น
Dual-BIOS เป็นตัวอย่างของสิ่งนี้

ในระบบระดับสูงกว่าเช่นโทรศัพท์และคอมพิวเตอร์หมายความว่าจะใช้ไฟล์การติดตั้งเพื่อกู้คืนระบบปฏิบัติการกลับสู่สภาพโรงงาน


10

การรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานคือสิ่งที่คุณต้องการ ขึ้นอยู่กับแอพพลิเคชั่นและประเภทอุปกรณ์

ฉันมักจะทำสองสิ่ง:

  1. รับรองว่ามีอยู่เสมอ วิธีที่เชื่อถือได้ในการเข้าสู่ bootloaderดังนั้นแม้การอัพเดตเฟิร์มแวร์บางส่วน / ไม่ถูกต้องก็ไม่สามารถสร้างอุปกรณ์ได้
  2. มีวิธีรีเซ็ตการตั้งค่าเฟิร์มแวร์ในกรณีที่ผู้ใช้เปลี่ยนแปลงบางอย่างการรวมการตั้งค่าเฉพาะจะทำให้แอปพลิเคชันเสียหายเป็นต้น

ทั้งสองสามารถทำได้ด้วยปุ่ม (กดยาวกดสั้น), สวิตช์ DIP หรือวิธีการสื่อสารอื่น ๆ (เช่น UART, USB)

ตัวอย่างเช่นถ้าคุณใช้ GPIO หนึ่งปุ่มเพียงปุ่มเดียวคุณสามารถใช้วิธีต่อไปนี้:

  1. กดปุ่มเปิดเครื่อง + กด = เรียกใช้ bootloader
  2. เปิดเครื่อง, ไม่ได้กดปุ่ม = รอ 3 วินาที, กะพริบไฟ led, ถ้ากดปุ่ม (ภายในหน้าต่าง) และค้างไว้เป็นเวลา 5 วินาทีจากนั้นรีเซ็ตการตั้งค่าเฟิร์มแวร์

2

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.