Ada beberapa hal yang saya tidak mengerti pada proses boot mikrokontroler STM32F4.
Pemahaman saya adalah sebagai berikut:
- Sepatu bot ARM Cortex-M4 mengharapkan nilai inisialisasi penunjuk tumpukan dan vektor interupsi aktif
0x00000000 + SCB->VTOR
, sedangkanSCB->VTOR
dihapus saat reset. - Tidak ada memori di lokasi itu. Memori flash dimulai pada
0x08000000
, SRAM pada0x20000000
. - Untuk memungkinkan booting, μC dapat memetakan rentang memori flash atau SRAM
0x00000000
. Rentang memori yang akan dipetakan ditentukan oleh status pin booting.
Pertanyaan saya:
Mengapa manual referensi STM32F4 mengatakan pada halaman 69 itu
Ketika perangkat melakukan booting dari SRAM, dalam kode inisialisasi aplikasi, Anda harus memindahkan tabel vektor dalam SRAM menggunakan tabel pengecualian NVIC dan register offset.
? Dalam pandangan saya, ini tidak perlu, karena seluruh wilayah memori tetap ada. Menariknya, ini sepertinya tidak diperlukan ketika wilayah flash dipetakan kembali ke
0x0
angkasa.Satu-satunya penggunaan untuk boot dari SRAM saya bisa memikirkan jika untuk mengurangi siklus tulis pada flash selama pengembangan. Sebelum Anda melepaskan μC dari reset, Anda menulis program ke SRAM menggunakan debugger dan kemudian boot dari sana. Namun, karena Anda memiliki akses debugger, toh tidak akan ada batasan untuk memulai dari mana. Jadi mengapa memiliki fitur ini?
Bahwa posisi boot berasal dari pin menunjukkan (setidaknya menurut pendapat saya) bahwa fitur ini digunakan tidak selama pengembangan tetapi dalam operasi akhir. Dan dalam operasi terakhir, SRAM jelas saat boot. Oleh karena itu tidak masuk akal untuk boot dari SRAM.