Saya memiliki pekerjaan penuh waktu sebagai insinyur firmware. Saya baru-baru ini diberi tugas untuk meninjau konfigurasi GPIO dan mengubah pengaturan sesuai kebutuhan. Saya menemukan beberapa pin yang salah dikonfigurasi sehingga secara alami saya mengkonfigurasi ulang mereka, namun saya diberitahu saya melakukannya dengan urutan yang salah. Inilah yang saya bicarakan:
Sebelum:
GPIO1.direction = INPUT;Setelah:
GPIO1.direction = OUTPUT;
GPIO1.value = 0;
Namun selama ulasan kode saya telah diberitahu bahwa saya perlu mengubah urutan inisialisasi menjadi sebagai berikut:
GPIO1.value = 0;
GPIO1.direction = OUTPUT;
Dengan kata lain atur nilainya terlebih dahulu lalu tetapkan arah pin. Saya juga telah diberitahu bahwa ini adalah bagaimana harus pada prosesor modern karena mereka menggunakan dua register, satu untuk input dan satu untuk output, namun prosesor lama hanya menggunakan satu register, sehingga urutan operasi tidak masalah.
(Catatan: Modern = ARM Cortex M3 dan di atasnya, Old = Intel 8051)
Saya meminta penjelasan yang lebih baik di tempat kerja, tetapi saya tidak bisa mendapatkan jawaban yang baik. Itu sebabnya saya memutuskan untuk bertanya di sini.
Jadi inilah pertanyaanku:
- Mengapa urutan inisialisasi penting pada prosesor baru?
- Mengapa urutan inisialisasi tidak masalah pada prosesor lama?
- Dua register apa yang mereka bicarakan dalam prosesor modern?
- Apa register tunggal yang mereka bicarakan pada prosesor lama?
Jika seseorang bisa memberikan semacam diagram, itu akan lebih baik.