Apa pro dan kontra menggunakan Wiznet W5100 atau Microchip EncX24J600?
Agak rumit untuk dijelaskan.
Pertanyaan saya adalah tentang kinerja tumpukan Microchip TCP vs Wiznet TCP / IP pada chip. Juga tentang biaya ($$).
Sebagai contoh: Dengan Wiznet, mikrokontroler akan memiliki lebih sedikit pemrosesan, sehingga membebaskan mikrokontroler untuk melakukan tugas-tugas lain. Tapi saya pikir ini akan tergantung pada lapisan mana yang Anda kerjakan.
Dengan Microchip TCP stack mungkin saya memiliki batasan pada periferal yang dapat saya kendalikan. Mungkin saya harus menggunakan mikrokontroler kedua.
Jadi, saya harap saya sudah menjelaskan lebih baik sekarang bagi Anda untuk membantu saya dalam pilihan terbaik.
Jawaban:
W5100 memiliki inti TCP / IP pada chip. Dengan perangkat Microchip ENC, pengguna harus mengimplementasikan sendiri tumpukan TCP / IP, pada MCU yang terhubung dengannya. Ini cukup mudah dengan PIC yang sesuai, karena tumpukan TCP / IP gratis tersedia dari Microchip.
W5100 memiliki keunggulan yang dapat digunakan dengan hampir semua MCU, tetapi perangkat yang cukup kuat diperlukan untuk menjalankan tumpukan TCP / IP jika chip ENC digunakan.
Tentu saja, opsi lain adalah menggunakan MCU dengan MAC dan PHY bawaan. Microchip membuat beberapa yang bagus, dan ada varian ARM juga.
sumber
Perusahaan tempat saya bekerja menggunakan PIC18F97J60. Ini adalah mikroprosesor 8-bit dengan built-in MAC dan PHY yang sangat mirip dengan ENC24J60. Jika Anda berencana menggunakan mikroprosesor PIC maka Anda dapat menggunakan tumpukan Microchip TCP / IP. Tumpukan ini menyediakan semuanya hingga ke lapisan aplikasi. Jika Anda menggunakan prosesor non-Microchip, saya pikir Anda hanya dapat menggunakan driver ENC24J60. Yang mengatakan sepertinya Wiznet mengintegrasikan lapisan transport ke dalam perangkat keras bukan hanya MAC dan PHY. Namun mereka menyerahkannya kepada pengembang untuk mengimplementasikan lapisan aplikasi seperti Telnet, FTP, dan HTTP.
sumber
Anda mungkin ingin mempertimbangkan keripik lainnya juga.
Apa itu mikrokontroler yang baik untuk aplikasi Ethernet?
sumber
Saya tahu ini sudah tua, tetapi saya telah melakukan ini dengan dspice tahun lalu, jadi saya akan meringkasnya untuk keuntungan orang lain.
Pertama, saya tidak akan menggunakan W5100, tetapi saudaranya W5500 , yang pada dasarnya adalah revisi, dan menggunakan SPI jauh lebih baik. Saya juga akan mempertimbangkan beralih ke bagian yang memiliki DMA, khususnya jika Anda ingin membuatnya hanya UDP.
Dalam kedua kasus Anda mungkin akan menggunakan tumpukan Microchip MLA TCP / IP, Wiznet menyediakan tambalan untuk ini.
Sayangnya, semua varian Microchip TCP / IP stack tampaknya melakukan pemblokiran komunikasi melalui SPI (tidak ada DMA, tidak ada mode buffer yang ditingkatkan) . Saya mencoba untuk memotongnya menjadi hanya UDP dan memotong seluruh bagian microchip (menggunakan driver yang mendasari wiznet secara langsung dan menulis ulang dalam proses).
Saya juga setuju dengan MJH bahwa DMA yang diaktifkan PIC18F97J60 adalah pilihan yang lebih baik daripada PIC yang lebih murah dengan ENC (kecuali jika Anda angkanya sangat tinggi), tetapi saya agak kecewa bahwa TCP / IP tidak benar-benar memanfaatkan manfaat dari J60, menempel ke penyebut umum terendah.
Keuntungan menggunakan bagian IP daripada bagian ethernet adalah Anda dapat membatasi soket ke port tertentu, dan Anda tidak perlu mentransfer lalu lintas yang tidak terkait melalui tautan SPI Anda. W5500 memiliki 4KB per soket, dan saya menggunakan soket terpisah untuk menerima dan mengirim untuk memaksimalkan pemanfaatan buffer.
Tumpukan UDP saya saat ini hanya bereaksi pada interupsi wiznet, dan tidak mengunduh data payload yang tidak diperlukan. Saya menggunakannya UDP, meskipun berbasis paket (tidak ada aliran), dan menggunakan siaran pada port untuk mengirim (untuk menghindari harus cache data MAC untuk keperluan ARP, meskipun dalam retrospeksi yang mungkin bukan opimization terbaik).
Pada dspice 60MIPS, perjalanan bolak-balik (menerima paket kecil, menjawab dengan paket kecil) memakan waktu sekitar 100-120us, di mana sekitar 10-12us adalah waktu CPU dalam tiga bagian yang berbeda (pra terima (3-5us), pos terima dan kirim (5-7 kita tergantung) dan mengirim kirim (2us) .Setiap 2kb saya harus melakukan pemeliharaan yaitu sekitar 40us waktu dinding dan 5us waktu CPU.
Perintah pendek dilakukan menggunakan buffer yang disempurnakan. Lebih lama dilakukan menggunakan DMA menggunakan (pada dspice, DMA membutuhkan 2 bit waktu antara byte (atau kata-kata dalam mode 16-bit), buffer ditingkatkan tidak).
Suite tidak (belum) terbuka, tetapi jika sb membutuhkan petunjuk, silakan balas dalam komentar. Saya berencana untuk port stack ke pic32 (mk) di tahun mendatang.
sumber