Cara mengetahui apakah mikroprosesor cukup kuat

9

Semua orang tahu itu mudah untuk mengembangkan bukti konsep untuk perangkat tertanam pada ras rasper atau bahkan PC, meskipun ketika tiba saatnya memilih mikroprosesor untuk produk Anda, sulit untuk memastikan pilihan Anda akan memungkinkan konsep Anda untuk bekerja secara optimal.

Saat ini saya memiliki proyek streaming media yang berhasil mengerjakan pi raspberry, meskipun pi jauh lebih besar dan tebal agar layak sebagai perangkat akhir. Juga dinyatakan bahwa perangkat akhir adalah custom. Saya mengalami kesulitan menemukan kepercayaan pada prosesor yang dapat saya gunakan.

Apa proses yang baik untuk mengetahui apakah prosesor cukup kuat untuk menjalankan aplikasi saya?

Pada dasarnya persyaratan saya adalah:

  • Host USB atau tumpukan TCP / IP tertanam untuk operasi WiFi
  • Protokol media I2S / PCM
  • I2C untuk konfigurasi periferal

Menemukan keripik dengan properti itu sangat sederhana. Sejujurnya itu tidak bisa lebih sederhana. Masalahnya adalah bisa mengetahui apakah chip cukup cepat, pemrosesan dan bijaksana.

Saya telah melihat LPC4337 sedikit dan saya merasa itu akan cocok meskipun lingkungan pengembangan memberi saya sedikit masalah, untuk alasan itu saya masih melihat sekeliling, yang membawa saya ke CC3200 dari Texas Instruments , meskipun pengontrol itu hanya berjalan pada 80 MHz dan saya tidak yakin apakah itu akan cukup kuat untuk streaming media waktu nyata.

Apa saja langkah-langkah untuk memastikan prosesor cukup cepat untuk aplikasi saya? Seperti bagaimana saya tahu apakah prosesor 80 MHz akan cukup baik atau apakah saya memerlukan sesuatu dengan urutan 204 MHz atau bahkan lebih tinggi?

Funkyguy
sumber
1
Saya pikir Anda harus memberikan persyaratan daya juga.
kolosy
Ini tidak menjawab pertanyaan Anda, tetapi Anda mungkin mempertimbangkan untuk melihat keluarga mikrokontroler PIC32MZ baru , yang memiliki dua kali lebih banyak Flash (2MB) dan tiga kali lebih banyak RAM (512K), bersama dengan host USB 2.0, I²S dan lima I²C modul dengan harga yang sama dengan LPC4337. IDE (MPLAB X) dan kompiler bebas untuk dicoba, tetapi setelah masa percobaan Anda harus membayar untuk kompiler yang dioptimalkan jika Anda menginginkannya (kompiler GCC yang tidak dioptimalkan tetap gratis). Microchip memiliki perpustakaan bebas-royalti untuk tumpukan USB dan TCP / IP.
tcrosley
2
Saya pikir beberapa mungkin kehilangan inti pertanyaan. Saya tidak mencari rekomendasi bagian. Sangat mudah untuk memastikan ada cukup ruang pada chip atau ada perangkat yang tepat. Saya lebih mencari parameter pemrosesan dan langkah-langkah sebagai panduan untuk memastikan saya memilih prosesor yang cukup kuat. Seperti dalam kecepatannya.
Funkyguy
Jika Anda tidak dapat memberi tahu apa yang Anda butuhkan dari spesifikasi, dapatkah Anda memesan sampel dan prototipe?
Roger Rowland
@RogerRowland saya bisa meskipun itu adalah proses yang sangat panjang. Tentunya ada beberapa cara untuk menemukan spesifikasi minimum untuk suatu program
Funkyguy

Jawaban:

5

Itu tergantung pada seberapa percaya diri Anda. Saya bekerja di industri luar angkasa dan ini biasanya dicapai melalui apa yang kita sebut "CPU, RAM, anggaran ROM". Anggaran, baik itu biaya daya massa atau apa pun, memecah proses Anda dalam item yang dapat dikelola yang dapat Anda kuantifikasi dan jumlahkan semuanya untuk mendapatkan permintaan keseluruhan. Anda kemudian mengambil faktor keamanan yang tergantung pada kematangan proyek Anda, berkurang seiring waktu untuk memperhitungkan pertumbuhan permintaan. Awalnya, sangat bergantung pada pengalaman dan kemudian disempurnakan dari waktu ke waktu sebagai teknologi yang dipilih.

  • ROM relatif mudah. Anda tahu berapa banyak tumpukan / perpustakaan / driver kira-kira mengambil dalam memori ROM: baik yang diberikan oleh penulis, atau Anda dapat mengkompilasinya tanpa mengunggahnya. Angka itu dapat berubah banyak setiap kali Anda mengubah kode Anda karena optimisasi kompiler.
  • RAM jauh lebih rumit. Beberapa alat di lingkungan pengembangan terintegrasi khusus memberi Anda perkiraan runtime , dan saya bisa melihat bagaimana ini bisa dilakukan tetapi saya tidak mengetahui adanya alat generik - katakanlah, disediakan oleh GCC (ada yang tahu sebaliknya?). Sayangnya itu kedengarannya seperti menghitung unsur-unsur terbesar atau paling dialokasikan dari kode Anda (akuntansi untuk variabel seumur hidup).
  • CPU lebih kompleks karena tergantung pada arsitektur (CISC atau RISC), MIPS (Jutaan Instruksi Per Detik, sebanding dengan frekuensi clock CPU) dapat atau tidak bisa representatif. Karena jika Anda memiliki kode, Anda dapat memecah bagian paling kritis menjadi instruksi dan menghitung MIPS yang diperlukan dari persyaratan waktu. Setiap gangguan non-cacat HARUS dianggap dipicu pada saat itu - hukum Murphy dan semua itu.

Di atas sangat sulit untuk secara akurat menentukan kapan penjadwal menendang, segera setelah Anda memiliki utas (kecuali utas dialokasikan secara manual ke inti) dan sistem operasi. Seharusnya dikelola untuk kode mikrokontroler sederhana, tetapi apakah itu layak untuk aplikasi Anda?

Ini hanya partisipasi saya: meskipun saya merancang sistem terintegrasi, saya belum bertanggung jawab atas anggaran khusus itu (yang merupakan input bagi saya), dan saya sebenarnya sangat tertarik untuk mengetahui cerita para ahli mengenai hal itu.

Tambahan: Dengan sistem waktu nyata, biasanya lebih mudah untuk menilai kecukupan sistem untuk tugas melalui waktu pengambilan sampel maksimum yang tergantung pada latensi / keterlambatan dalam pengiriman informasi di seluruh alur kerja, dan waktu maksimum yang diambil oleh masing-masing contoh tugas.

Tuan Mystère
sumber
avrdudedapat memberikan perkiraan berapa banyak RAM yang diambil oleh variabel global, tetapi Anda harus menjalankannya dengan opsi dry run karena ini pada dasarnya merupakan alat pengunggahan.
felixphew
1
Bagian tersulit untuk memperkirakan IMO adalah penggunaan stack dan heap. Sistem tertanam kami saat ini (OS berpemilik), berjalan pada PIC32, biasanya memiliki lebih dari 25 tugas yang berjalan, banyak dari mereka memerlukan beberapa K tumpukan atau lebih ketika mereka aktif. Anda mendapatkan beberapa dari mereka, ditambah beberapa penggunaan tumpukan yang berat dan Anda akan segera kehabisan RAM. Saya baru saja menulis rutin rekursif sekitar seminggu yang lalu dan harus sangat berhati-hati terhadap penggunaan variabel lokal (tidak ada array dll.)
tcrosley
Menarik, terima kasih. Apakah Anda memperkirakan jumlah RAM yang dialokasikan oleh kode Anda (analisis kode atau alat tertentu), atau apakah Anda mengukurnya saat runtime? Menurut saya MIPS sedikit lebih sulit untuk diperkirakan karena tidak dapat diperkirakan dari menganalisis kode tanpa memecahnya menjadi instruksi, tidak seperti penggunaan RAM (mungkin, tidak mudah). Utas membuat tugas menjadi sangat sulit, tetapi kedengarannya seperti analisis CPU masih membutuhkan lebih banyak langkah - itu hanya sedikit masalah secara umum. Bagaimana menurut anda?
Tuan Mystère
2

Saya akan menyederhanakan pertanyaan Anda menjadi, "Bagaimana cara mengetahui apakah mikroprosesor cukup cepat "?
Anda perlu mengidentifikasi proses / prosedur yang membutuhkan waktu eksekusi tercepat. Jika prosesor Anda dapat menjalankan instruksi yang diperlukan dalam waktu tertentu, atau kurang, maka itu cukup cepat.
Mari kita lihat sebuah contoh: Persyaratan tercepat Anda adalah memproses terputusnya daya ; ini membutuhkan 10.000 instruksi untuk dieksekusi dalam 10 milidetik. Anda akan membutuhkan CPU dengan setidaknya 1 MIP. Untuk mengonversikan ini menjadi "MHz," Anda perlu mengetahui jumlah siklus jam per instruksi (cci). Mari kita asumsikan 10 cci, CPU Anda harus berjalan pada 10 MHz, atau lebih cepat.

Guill
sumber
0

Jika Anda ingin menurunkan biaya BOM, kadang-kadang pabrikan Shenzhen tersebut memiliki beberapa penawaran mengejutkan. Satu contoh: Allwinner A10 memiliki lebih banyak daya komputasi dan opsi koneksi daripada Raspberry Pi tetapi mungkin akan lebih murah jika digunakan dalam desain Anda. Jika Anda melihat pada biaya yang sama dengan Pi A31s Allwinner adalah 6-8 kali lebih kuat.

Maxthon Chan
sumber