Bagaimana cara kerja reset pabrik?

18

Semua perangkat yang disematkan menyertakan opsi "Reset pabrik" yang memungkinkan pengguna untuk mereset perangkatnya jika ada sesuatu yang salah.

Saya mengembangkan Firmware pada papan STM32. Firmware mencakup boot loader yang memungkinkan untuk meningkatkan aplikasi melalui UART (Dengan mengirim file biner yang berisi gambar baru) dan saya ingin menambahkan fitur lain: Reset pabrik. Ketika pengguna memilih opsi ini, papan akan memuat gambar asli.

Apa itu reset pabrik? Apakah ini tentang memuat seluruh file biner ke dalam memori lagi atau hanya memanggil fungsi yang menginisialisasi ulang variabel yang dimodifikasi oleh pengguna akhir?

Apa praktik terbaik untuk melakukannya?

Di mana menyimpan FW asli? apakah itu dalam flash internal atau eksternal?

Pryda
sumber

Jawaban:

20

Secara umum fungsi reset pabrik yang Anda sebutkan akan mengembalikan informasi data variabel yang disimpan kembali ke nilai default. Tidak benar bahwa semua perangkat yang tertanam memiliki kemampuan ini. Beberapa melakukan tetapi tidak semua.

Jika Anda ingin perangkat Anda mendukung pengembalian ke firmware default pabrik sendiri maka desain Anda harus memasukkan memori ke dalam rangkaian untuk menyimpan gambar itu. Komponen umum untuk ini adalah chip flash SPI. Kemudian boot loader Anda juga perlu diubah untuk mendukung mode mendapatkan gambar firmware dari chip flash SPI alih-alih memasukkan gambar melalui port serial. Jika perangkat Anda tidak mendukung firmware yang dapat diganti pengguna, maka biasanya tidak perlu menyediakan sarana untuk mengembalikan ke firmware default pabrik.

Michael Karas
sumber
1
Tidak benar-benar jawaban jadi saya akan meninggalkannya sebagai komentar: beberapa perangkat hanya mengembalikan pengaturan ke default, ini mudah (misalnya, hapus saja pengaturan pengguna). Lainnya (lebih sedikit, saya pikir) mengatur ulang firmware ke default pabrik. Ini lebih sulit, karena Anda perlu cara untuk mengganti firmware yang ada dengan firmware yang lebih lama.
Dithermaster
11

Jika Anda mengambil contoh standar pabrik yang paling umum, ini adalah UEFI (BIOS) PC Anda.

Ini dibuat dengan chip flash dan chip memori SRAM cadangan baterai yang mudah menguap. Chip flash berisi program, dan SRAM berisi pengaturan.

Pada pengaturan ulang pabrik , isi sram yang mudah menguap dihapus. Pada boot berikutnya, mendeteksi bahwa checksum dari pengaturan tidak valid dan mengembalikan default yang terkandung dalam program.

Ini tidak terbatas pada SRAM cadangan baterai, hal yang sama dapat dilakukan dengan FLASH atau EEPROM. Tetapi baterai cadangan SRAM dapat dihapus tanpa menyalakan mesin.


Istilah lain adalah pemulihan pabrik , ini berarti bahwa itu berisi program utama dua kali. Tetapi hanya satu salinan yang dapat ditingkatkan oleh pengguna.
Dual-BIOS adalah contohnya.

Pada sistem level yang lebih tinggi, seperti ponsel dan komputer, ini berarti ia menggunakan file instalasi untuk mengembalikan sistem operasi ke kondisi pabrik.

Jeroen3
sumber
10

Reset pabrik adalah apa pun yang Anda inginkan. Itu tergantung pada jenis aplikasi dan perangkat.

Saya biasanya melakukan dua hal:

  1. Pastikan selalu ada cara yang andal untuk masuk ke bootloader , sehingga bahkan pembaruan firmware sebagian / salah tidak dapat merusak perangkat.
  2. Memiliki cara untuk mengatur ulang pengaturan firmware jika pengguna mengubah sesuatu, kombinasi pengaturan tertentu akan membuat aplikasi macet dll.

Keduanya dapat dilakukan dengan tombol (penekanan lama, penekanan singkat), sakelar DIP atau sarana komunikasi lainnya (mis. UART, USB).

Misalnya jika Anda menggunakan satu GPIO untuk satu tombol, Anda dapat menggunakannya dengan cara berikut:

  1. Tombol daya + ditekan = memanggil bootloader
  2. Power-on, tombol tidak ditekan = tunggu 3s, berkedip led, jika tombol ditekan (di dalam jendela) dan ditahan selama 5s kemudian reset pengaturan firmware
filo
sumber
2

Seperti yang Anda katakan pengaturan ulang pabrik memuat ulang gambar awal pabrik ke perangkat. Ini dapat diperlukan jika terjadi kesalahan konfigurasi di mana pengguna tidak tahu apa yang dia lakukan atau hanya ingin kembali ke konfigurasi awal. Dalam kasus seperti milik Anda saat pembaruan perangkat lunak dilakukan, Anda mungkin ingin membahas skenario kegagalan tertentu selama pembaruan. Dalam hal ini Anda bahkan mungkin memiliki memori flash khusus dengan gambar pabrik asli yang disimpan yang dapat dipilih menggunakan jumper untuk mengembalikan konfigurasi default pabrik. Hal ini misalnya dilakukan pada komputer utama jika Anda dapat mengembalikan konfigurasi BIOS asli jika terjadi pembaruan yang gagal dan merusak gambar utama.

paus
sumber