GNU/Linux >> Belajar Linux >  >> Linux

Sistem linux tertanam kami tidak akan mengenali Perangkat USB jika dicolokkan sebelum dinyalakan. Saran?

Membawa ini kembali dari kematian untuk penyelesaian.

Detailnya tidak jelas, tetapi ternyata perangkat itu sendiri mogok saat boot. Saya percaya itu ada hubungannya dengan obrolan yang dihasilkan uBoot di jalur USB. Pada dasarnya, uBoot menyurvei semua lini perangkat keras (termasuk USB) untuk menemukan gambar yang dapat di-boot. Polling ini seharusnya tidak berbahaya, tetapi firmware pada perangkat USB kami tidak dapat menanganinya dan langsung mogok, membuatnya tidak dapat dioperasikan hingga hard reset (mencabut perangkat secara fisik dan menyambungkannya kembali).

Kami memang melaporkan bug ini ke produsen perangkat, tetapi kami tidak menerima indikasi bahwa perbaikan untuk masalah (yang tampaknya hanya memengaruhi kami) akan menjadi prioritas, jadi kami menggunakan perbaikan sebesar $,50.

Cara kami menyelesaikan ini cukup kreatif, tetapi bekerja dengan sempurna. Kami membuat relai sederhana yang dikontrol GPIO dan menyambungkan kabel daya USB melalui relai ini. Pada dasarnya, sistem melakukan boot dengan relai "mati", dan karenanya tidak ada daya ke perangkat USB. Sistem melakukan boot secara normal, dan dalam skrip startup kami, kami cukup mengaktifkan jalur GPIO untuk mengaktifkan relai. Perangkat USB bebas melakukan booting secara normal, tanpa gangguan dari uBoot.


Kedengarannya seolah-olah perangkat mencoba mengobrol dengan OS saat boot pertama dan karena tumpukan belum siap pada saat itu, ia "keluar" dari hub. Pertimbangkan untuk menambahkan bagian di akhir proses booting untuk melepaskan driver dan memaksa memuat ulang. (modprobe -vr ehci_hcd; modprobe -v ehci_hcd jika USB2.0, uhci_hcd jika USB1.x)

Kemungkinan lain adalah ketika Gumstix dimatikan, ia memberi tahu perangkat untuk masuk ke mode hemat daya yang mungkin tidak didukung dengan benar oleh perangkat. Windows mungkin melakukan hal-hal yang berbeda di sana daripada Windows yang mungkin diuji oleh vendor. Untuk menguji ini, Anda mungkin harus memberitahu pengandar perangkat untuk tidak menangguhkan atau mematikan perangkat selama restart sistem. Lihat Dokumentasi Kernel Linux tentang Penghematan Daya di bagian USB untuk memulai.


Linux
  1. 4 Cara Berguna untuk Mengetahui Nama Perangkat USB yang Dicolokkan di Linux

  2. Linux – Udev Tidak Mengganti Nama Perangkat Ethernet Usb?

  3. Bagaimana saya bisa yakin bahwa saya telah menyambungkan perangkat ke port USB 3?

  1. Linux – Bagaimana Cara Menghubungkan Kembali Perangkat Usb yang Terputus Secara Logis?

  2. Bagaimana Anda bisa mengidentifikasi chipset perangkat usb di Linux?

  3. Bagaimana cara mendapatkan vendor USB dan info produk secara terprogram di Linux?

  1. Mengontrol catu daya USB (on/off) dengan Linux

  2. Mengapa kita membutuhkan bootloader di perangkat tertanam?

  3. Bagaimana cara menyebabkan reset pengawas perangkat Linux tertanam saya