Baru-baru ini saya menemukan penyebab bug jahat yang telah saya kerjakan dengan Atmel AT91SAM9G20 SBC yang menjalankan U-boot , sebuah bootloader open source. Inti masalahnya adalah bahwa U-boot mengharapkan perangkat keras dikonfigurasikan secara berbeda dari yang saya buat, jadi beberapa register perangkat salah konfigurasi.
Sekarang saya sudah menemukan masalahnya, saya perlu men-tweak U-boot untuk mengkonfigurasi register dengan benar. Saya bisa melakukan ini secara membabi buta dengan menambahkan beberapa baris kode di akhir program, tapi itu berantakan.
Ini membawa saya ke pertanyaan saya: bagaimana saya bisa mengetahui bagaimana U-boot bekerja lebih efisien daripada memulai di main () dan membaca semua jalur kode yang mungkin di semua file? Saya sudah mencoba melihat-lihat dalam file dan melihat kode di dekat pengidentifikasi yang relevan. Ini terbukti tidak efektif; tampaknya sebagian besar kode adalah driver untuk subsistem yang tidak saya pedulikan. Saya benar-benar mengerti bagaimana bootloader bekerja dengan sangat baik sekarang, tapi saya berharap ada metode yang lebih baik daripada pendekatan naif saya.
sumber
Jawaban:
Ada beberapa alat / strategi yang dapat membantu:
Alat yang lebih baik untuk memahami kode sumber:
Analisis runtime
Menulis mini bootloader Anda sendiri
Sayangnya, tidak ada resep ajaib yang bekerja untuk semuanya.
sumber
Bagaimana Anda mengkonfigurasinya untuk membangun AT91?
Pohon kode tampaknya dirancang sedemikian rupa sehingga setiap hal arsitektur spesifik terletak di pohon 'arch / (kelas cpu) / (tipe cpu) / ...'. Saya menemukan kode AT91 di bawah arch / arm / cpu / arm926ejs / at91 ... apakah varian spesifik yang ingin Anda ubah tidak ada di sana? Tidak banyak yang bisa ditelusuri dalam direktori itu, terutama karena hampir setengah dari file-file tersebut adalah varian spesifik AT91.
Maaf jika ini jelas ... tetapi Anda tidak menyebutkan memeriksa ini.
Saya belum melihat pohon kode uBoot, tetapi posting Anda membuat saya takut melakukannya. Proyek back burner saya melibatkan akhirnya menggunakan uBoot dan Linux pada PCB iMX233 kustom. Saya sangat tertarik untuk mendapatkan umpan balik semacam ini tentang seberapa baik arsitektur uBoot dan hal-hal khusus varian diisolasi dan seberapa besar rasa sakit yang akan terjadi.
sumber