Selasa, 24 Juli 2018

Self Programming the Flash

Self-Programming the FlashMemori
Program diperbarui dalam mode halaman demi halaman. Sebelum memprogram halaman dengan
data yang disimpan di buffer halaman sementara, halaman harus dihapus. Penyangga halaman sementara
diisi satu kata setiap kali menggunakan SPM dan buffer dapat diisi sebelum halaman
hapus perintah atau antara penghapusan halaman dan operasi penulisan halaman:
Alternatif 1, isi buffer sebelum menghapus halaman.
• Isi buffer halaman sementara
• Lakukan penghapusan halaman
• Lakukan penulisan halaman
Alternatif 2, isi buffer setelah halaman dihapus.
• Lakukan penghapusan halaman
• Isi buffer halaman sementara
• Lakukan penulisan halaman
Jika hanya sebagian halaman yang perlu diubah, sisa halaman harus disimpan (misalnya
di buffer halaman sementara) sebelum dihapus, dan kemudian ditulis ulang. Saat menggunakan alternatif 1,
boot loader menyediakan fitur Read-Modify-Write yang efektif yang memungkinkan perangkat lunak pengguna
untuk pertama membaca halaman, lakukan perubahan yang diperlukan, dan kemudian tulis kembali data yang diubah. Jika alternatif
2 digunakan, tidak mungkin untuk membaca data lama saat memuat karena halaman sudah
dihapus. Penyangga halaman sementara dapat diakses dalam urutan acak. Sangat penting itu
alamat halaman yang digunakan baik dalam halaman menghapus dan operasi penulisan halaman adalah menangani hal yang sama
halaman. Lihat “Contoh Kode Perakitan Sederhana untuk Pemuat Boot” di halaman lain untuk perakitan
contoh kode.

Performing Page Untuk mengeksekusi penghapusan halaman, atur alamat di Z-pointer, tulis "X0000011" ke SPMCR dan
jalankan SPM dalam empat siklus clock setelah menulis SPMCR. Data dalam R1 dan R0 diabaikan.
Alamat halaman harus ditulis ke PCPAGE dalam daftar-Z. Bit lain dalam pointer-Z akan
diabaikan selama operasi ini.
• Halaman Hapus ke bagian RWW: Bagian NRWW dapat dibaca selama halaman dihapus
• Halaman Hapus ke bagian NRWW: CPU dihentikan selama operasi
Catatan: Jika interupsi terjadi dalam urutan waktu, akses empat siklus tidak dapat dijamin.
Untuk memastikan operasi atom, nonaktifkan interupsi sebelum menulis ke SPMCSR.
Erase by SPM

Mengisi Sementara
Buffer (Pemuatan Halaman)
Untuk menulis kata instruksi, atur alamat di Z-pointer dan data dalam R1: R0, tulis
"00000001" ke SPMCR dan jalankan SPM dalam empat siklus clock setelah menulis SPMCR. Kontennya
PCWORD dalam daftar-Z digunakan untuk menangani data dalam buffer halaman sementara. Itu
buffer sementara akan dihapus secara otomatis setelah operasi penulisan halaman atau dengan menulis bit RWWSRE di
SPMCR. Ini juga dihapus setelah Reset Sistem. Perhatikan bahwa tidak mungkin menulis lebih dari
satu kali untuk setiap alamat tanpa menghapus buffer sementara.
Catatan: Jika EEPROM ditulis di tengah-tengah operasi Pemuatan halaman SPM, semua data yang dimuat akan hilang

Melakukan Halaman
Menulis
Untuk mengeksekusi penulisan halaman, atur alamat di Z-pointer, tulis "X0000101" ke SPMCR dan
jalankan SPM dalam empat siklus clock setelah menulis SPMCR. Data dalam R1 dan R0 diabaikan.
Alamat halaman harus ditulis ke PCPAGE. Bit lain dalam pointer-Z harus ditulis
nol selama operasi ini.
• Halaman Tulis ke bagian RWW: Bagian NRWW dapat dibaca selama halaman ditulis
• Halaman Tulis ke bagian NRWW: CPU dihentikan selama operasi

Menggunakan SPM
Mengganggu
Jika interupsi SPM diaktifkan, interupsi SPM akan menghasilkan interupsi konstan saat
SPMEN bit di SPMCR dihapus. Ini berarti interupsi dapat digunakan sebagai pengganti polling
Daftar SPMCR dalam perangkat lunak. Saat menggunakan SPM interrupt, Interrupt Vectors seharusnya
pindah ke bagian BLS untuk menghindari interupsi yang mengakses bagian RWW saat itu
diblokir untuk membaca. Cara memindahkan interupsi dijelaskan dalam “Interupsi” di halaman 46.
Pertimbangan Sementara
Memperbarui BLS
Perhatian khusus harus diambil jika pengguna mengizinkan bagian Boot Loader diperbarui dengan pergi
Boot Lock bit11 tidak terprogram. Menulis tidak disengaja ke Boot Loader itu sendiri dapat merusak
seluruh Boot Loader, dan pembaruan perangkat lunak lebih lanjut mungkin tidak mungkin. Jika tidak perlu
ubah perangkat lunak Boot Loader itu sendiri, disarankan untuk memprogram Boot Lock bit11 ke
melindungi perangkat lunak Boot Loader dari perubahan perangkat lunak internal apa pun.
Mencegah Membaca
Bagian RWW Selama
Pemrograman Mandiri
Selama Self-Programming (baik halaman menghapus atau menulis halaman), bagian RWW selalu diblokir
untuk dibaca. Perangkat lunak pengguna itu sendiri harus mencegah bahwa bagian ini ditujukan selama diri
operasi pemrograman. The RWWSB di SPMCR akan diatur selama bagian RWW
sibuk. Selama Self-Programming, tabel Interrupt Vector harus dipindahkan ke BLS sebagai
dijelaskan dalam "Interupsi" di halaman 46, atau interupsi harus dinonaktifkan. Sebelum menangani
Bagian RWW setelah pemrograman selesai, perangkat lunak pengguna harus menghapus RWWSB oleh
menulis RWWSRE. Lihat “Contoh Kode Perakitan Sederhana untuk Pemuat Boot” di halaman 212 untuk
sebuah contoh.
Mengatur Boot
Loader Lock Bits oleh
SPM
Untuk mengatur Bits Boot Loader Lock, tulis data yang diinginkan ke R0, tulis "X0001001" ke SPMCR dan
jalankan SPM dalam empat siklus clock setelah menulis SPMCR. Satu-satunya Kunci Bits yang dapat diakses adalah
Booting Kunci Bilah yang dapat mencegah bagian Aplikasi dan Boot Loader dari perangkat lunak apa pun
perbarui oleh MCU.
Lihat Tabel 78 di halaman 205 dan Tabel 79 di halaman 205 untuk mengetahui perbedaan pengaturan Boot
Loader Bits mempengaruhi akses Flash.
Jika bit 5..2 di R0 dihapus (nol), bit Boot Lock yang sesuai akan diprogram jika sebuah
Instruksi SPM dilaksanakan dalam empat siklus setelah BLBSET dan SPMEN diatur dalam SPMCR.
Penunjuk Z tidak peduli selama operasi ini, tetapi untuk kompatibilitas di masa mendatang, disarankan untuk melakukannya
memuat Z-pointer dengan 0x0001 (sama seperti yang digunakan untuk membaca Kunci Bits). Untuk kompatibilitas masa depan
Disarankan juga untuk mengatur bit 7, 6, 1, dan 0 dalam R0 ke “1” saat menulis Kunci Bits. Kapan
pemrograman Bits Lock seluruh Flash dapat dibaca selama operasi.

EEPROM Tulis
Mencegah Penulisan ke
SPMCR
Perhatikan bahwa operasi tulis EEPROM akan memblokir semua program perangkat lunak ke Flash. Membaca
Sekering dan Bit Kunci dari perangkat lunak juga akan dicegah selama operasi penulisan EEPROM. Saya t
disarankan agar pengguna memeriksa bit status (EEWE) dalam Daftar EECR dan memverifikasi
bahwa bit dihapus sebelum menulis ke Daftar SPMCR.
Membaca Fuse dan
Kunci Bits dari
Perangkat lunak
Adalah mungkin untuk membaca Fuse dan Lock Bits dari perangkat lunak. Untuk membaca Kunci Bits, muat
Z-pointer dengan 0x0001 dan atur BLBSET dan SPMEN bit di SPMCR. Ketika instruksi LPM
dijalankan dalam tiga siklus CPU setelah BLBSET dan SPMEN bit diatur dalam SPMCR,
nilai Lock Bits akan dimuat dalam register tujuan. BLBSET dan SPMEN
bit akan otomatis bersih setelah selesai membaca Lock Bits atau jika tidak ada instruksi LPM yang dijalankan
dalam tiga siklus CPU atau tidak ada instruksi SPM yang dijalankan dalam empat siklus CPU. Kapan BLBSET
dan SPMEN dibersihkan, LPM akan berfungsi sebagaimana dijelaskan dalam Manual pengaturan Instruksi.
Algoritma untuk membaca Fuse Low bit mirip dengan yang dijelaskan di atas untuk membaca
Kunci Bits. Untuk membaca Fuse Low bit, muat Z-pointer dengan 0x0000 dan atur BLBSET dan
SPMEN bit di SPMCR. Ketika instruksi LPM dijalankan dalam tiga siklus setelah BLBSET
dan SPMEN bit diatur dalam SPMCR, nilai dari Fuse Low bit (FLB) akan dimuat
dalam daftar tujuan seperti yang ditunjukkan di bawah ini. Lihat Tabel 88 di halaman 217 untuk penjelasan rinci
dan pemetaan sekering bit rendah.
Demikian pula, ketika membaca bit Fuse High, muat 0x0003 di Z-pointer. Ketika instruksi LPM
dijalankan dalam tiga siklus setelah BLBSET dan SPMEN bit diatur dalam SPMCR,
nilai dari bit Fuse High (FHB) akan dimuat dalam register tujuan seperti yang ditunjukkan di bawah ini.
Lihat Tabel 87 di halaman 216 untuk deskripsi dan pemetaan rinci dari bit-bit tinggi sekering.
Fuse dan Lock Bits yang diprogram, akan dibaca sebagai nol. Fuse dan Lock Bits yang
tidak terprogram, akan dibaca sebagai satu.



Tidak ada komentar:

Posting Komentar