Saya sedang mengembangkan perangkat lunak sistem waktu nyata tertanam (dalam bahasa C). Saya telah merancang arsitektur s / w - kita tahu berbagai objek diperlukan, interaksi diperlukan antara berbagai objek dan komunikasi IPC antara tugas. Berdasarkan informasi ini, saya perlu memutuskan persyaratan sistem operasi (RTOS), mikroprosesor dan ukuran memori.
(Kemungkinan besar saya akan menggunakan Quadros, seperti yang telah disarankan oleh klien berdasarkan pengalaman mereka sebelumnya dalam proyek serupa)
Tapi saya bingung harus mulai dari mana, karena pilihan yang satu bisa berdampak pada pemilihan yang lain.
Bisakah Anda juga membimbing saya pada parameter untuk mempertimbangkan memperkirakan kebutuhan memori dari desain s / w (batas bawah dan batas atas persyaratan memori)?
(Biaya komponen dapat diabaikan untuk evaluasi ini)
Jawaban:
Memori lebih murah daripada waktu Anda, setidaknya untuk beberapa sistem pertama yang diproduksi. Isi maksimal semua yang Anda bisa ke papan untuk sistem prototipe Anda dan instal kode Anda. Anda dapat membeli papan yang kurang populer untuk produksi tetapi sekarang Anda menginginkan sumber daya yang besar.
Ketika Anda sudah melakukan semua itu, Anda akan memiliki pegangan yang jauh lebih baik pada kebutuhan memori Anda daripada yang bisa Anda dapatkan sekarang.
(Edit; komentar tidak tersedia untuk saya)
James:
Jawaban singkatnya adalah ya, RAM kemungkinan merupakan bagian kecil dari biaya perangkat keras Anda, jadi teruskan dan perkirakan - Anda harus tetap dekat.
Sebagai pemeriksaan kasar, Anda mungkin mendapatkan perkiraan kasar untuk persyaratan memori statis - kode dan data statis - dengan menulis dan menyusun beberapa fungsi untuk mendapatkan rasio sumber-jalur kasar ke memori, dan ekstrapolasi. Anda akan memerlukan penghitungan kasar dan beberapa perkiraan waktu yang berpendidikan tentang bagaimana desain Anda akan berkembang menjadi fungsi dan garis kode. Dapatkah Anda membuat tebakan yang terpelajar tentang penggunaan waktu berjalan struktur dinamis desain Anda - tumpukan dan tumpukan atau kolam? Saya mungkin setidaknya akan menggandakan atau melipatduakan perkiraan saya.
Bisakah Anda menerapkan sistem pada komputer yang ada, fungsi hubungan pendek (dengan mengkompilasi kode dengan pengembalian pendek daripada # ifdef'ing it out) yang tidak masuk akal di lingkungan itu?
Jika Anda benar-benar perlu memperkirakan tanpa banyak mengimplementasikan, saya pikir Anda akan terjebak dengan ekstrapolasi.
sumber
Sepertinya Anda sudah membuat beberapa pilihan desain.
Anda memerlukan OS multi-ulir dan UC yang akan menjalankannya, biasanya berarti Anda ingin membidik prosesor dengan MMU. Opsi OS adalah hal-hal seperti Quadros, QNX, linux, meringis, dll.
Berdasarkan apa yang "objek" Anda (modul adalah istilah yang lebih baik untuk C :)) lakukan, Anda mungkin dapat menentukan jenis arsitektur apa yang Anda butuhkan. Apakah lengkungan 16bit cukup? butuh lebih banyak memori atau bekerja dengan angka yang lebih besar maka apakah 32bit jawaban yang tepat? banyak pekerjaan floating point? maka Anda mungkin membutuhkan prosesor dengan FPU. Apakah banyak DSP suka bekerja? mungkin Anda memerlukan DSP atau UC dengan instruksi seperti DSP atau co-proc. Menjalankan tampilan grafis? memerlukan SoC dengan pengontrol LCD bawaan atau berharap untuk melakukannya secara eksternal. Melakukan grafis 2D yang berat? memerlukan SoC dengan beberapa percepatan grafis.
Buatlah daftar fitur yang Anda butuhkan dan perkirakan berapa banyak kode Anda termasuk dalam kategori seperti operasi integer, perulangan, operasi floating point, operasi grafis, operasi DSP, dll.
Ini akan memungkinkan Anda untuk mengklasifikasikan tingkat perangkat yang Anda butuhkan. Untuk beberapa arsitektur Anda dapat mengkompilasi lintas beberapa kode menggunakan GCC dan menirunya menggunakan qemu di atas linux. Ini mungkin hanya layak jika Anda perlu menguji kinerja algoritma kritis pada arsitektur tertentu. Ini dapat membantu Anda mengukur kecepatan yang Anda butuhkan untuk aplikasi Anda.
Pertimbangan kedua harus penggunaan daya dan dukungan untuk manajemen daya. Dikombinasikan dengan kinerja yang diperlukan, Anda dapat memilih DSP, UC, prosesor aplikasi, dll.
Seperti yang orang lain katakan saya tidak akan khawatir tentang penggunaan memori, hanya bertujuan besar, seringkali ukuran ram berbeda pin yang kompatibel sehingga Anda hanya dapat memotong ram untuk produksi. Satu-satunya pertanyaan nyata untuk dijawab di sini adalah:
* Seberapa besar ruang alamat yang saya butuhkan? 16bit? 32bit? dll
* Apakah saya memerlukan ram eksternal atau ram internal UC akan cukup? <- jawab ini setelah Anda memilih arsitektur dan bisa pergi berburu SoC.
Untuk sebagian besar memilih di antara prosesor di kelas yang sama adalah "perang suci" alias di pasar 32bit risc beberapa akan kembali ARM, beberapa akan kembali coldfire, beberapa bahkan mungkin mendukung PIC32. Pada akhirnya mungkin ada yang akan berhasil. Anda harus memilih berdasarkan SoC yang tersedia dengan periferal yang diperlukan, kemudahan pengembangan (seberapa baik rantai alat) dan biaya.
Hal yang sama berlaku untuk pilihan OS, linux vs QNX vs quadros adalah pilihan untuk sebagian besar aplikasi, biasanya jawaban terbaik adalah yang paling Anda miliki. Sekalipun sedikit lebih mahal, pengurangan waktu pengembangan seringkali mengimbangi biaya pembangunan. Pastikan OS memiliki fitur yang diperlukan, pustaka bersama, komunikasi antar-proses, pipa, apa pun yang Anda butuhkan.
Sebagai aturan umum saya akan memilih arsitektur Anda terlebih dahulu. Ini akan memiliki dampak yang jauh lebih tinggi pada kinerja perangkat Anda daripada sistem operasi. Selain itu sistem operasi di ruang ini sering didukung pada banyak arsitektur. Juga OS yang lebih baik adalah POSIX compliant, ditulis dengan benar sebagian besar kode Anda harus dapat dijalankan pada banyak OS.
Jangan merasa buruk jika Anda harus melakukan beberapa upaya untuk membuat pilihan yang benar. Anda mungkin menemukan inti yang sangat sesuai dengan kebutuhan kode Anda, tetapi setelah beberapa penelitian menemukan bahwa itu tidak mendukung beberapa fitur minor yang Anda butuhkan, atau tidak ada SoC tersedia dengan periferal yang Anda butuhkan, atau bahkan benda itu dipesan kembali. selama 6 bulan. Pastikan setelah membuat pilihan awal bahwa Anda meneliti bagaimana desain akan datang bersama-sama berdasarkan pada bagian itu sehingga Anda melihat batu sandungan sekarang daripada setengah jalan melalui pengembangan.
sumber