Proses Inisialisasi USB - Sebelum membahas bagaimana proses inisialisasi USB, alangkah baiknya jika kita mengetahui apa itu USB?,Bagi yang sudah tahu dibaca lagi untuk mengingat.
Universal
Serial Bus (USB) adalah satu set spesifikasi Interface untuk kecepatan tinggi
kabel komunikasi antara peripheral elektronik sistem dan perangkat dengan atau
tanpa PC / komputer. USB pada awalnya dikembangkan pada tahun 1995 oleh banyak
perusahaan industri terkemuka seperti Intel, Compaq, Microsoft, Digital, IBM, dan
Northern Telecom. Tujuan
utama dari USB adalah untuk mendefinisikan sebuah bus ekspansi eksternal untuk
menambahkan periferal ke PC dengan cara mudah dan sederhana. USB
menawarkan pengguna konektivitas sederhana. Ini menghilangkan gabungan konektor
yang berbeda untuk berbagai perangkat seperti printer, keyboard, mouse, dan
peripheral lainnya. Itu berarti USB-bus memungkinkan banyak peripheral untuk
dihubungkan dengan menggunakan soket interface tunggal standar. Keuntungan lain
utama adalah bahwa, dalam lingkungan USB, DIP-switch tidak diperlukan untuk
menetapkan alamat perifer dan IRQs. Mendukung semua jenis data, dari input
mouse lambat untuk audio dan video digital terkompresi.
Gambar Topologi Koneksi USB
Host Controller,
Host controller
menghubungkan pohon device USB ke host (komputer, konsol, dan sebagainya).
Pengendali beberapa host dapat muncul. Setiap host pengontrol membawa satu
pohon device.
Hub, Hub adalah perangkat dengan
beberapa port, dimana telah terpasang hub dan fungsi. Root hub terintegrasi
dengan host controller. Semua hub lain hub eksternal.
Lalu Bagaimanakah Proses inisialisasi USB terjadi ?
Gambar Hierarki proses inisialisasi USB
- Saat USB dipasang ke port USB, hub akan mendeteksi keberadaan sambungan yang ada, kemudian Device (USB) akan menjalani tahap enumerasi yang sekaligus juga diinisialisasi.
- Bersamaan dengan itu pada host controller juga mengirimkan setup packet ke dalam proses enumerasi.
- Dalam proses enumerasi dilakukan inisialisasi ke device, apabila proses ini berhasil maka data dari device akan terbaca, data tersebut dikenal dengan sebutan USB descriptor, USB descriptor ini terbagi menjadi beberapa bagian, diantaranya :
- Device Descriptors, Device Descriptor pada USB mempresentasikan seluruh perangkat. Perangkat USB hanya dapat mempunyai 1 device descriptor, seperti informasi penting tentang perangkat, sebagai contoh versi USB yg didukung, Ukuran maksimal paket, Vendor dan Produk ID, dan jumlah yg mungkin dapat dikonfigurasikan oleh perangkat.
- Configuration Descriptors, Konfigurasi descriptor berisi informasi bagaimana perangkat mendapat suplay tegangan, jumlah maksimal daya yg dibutuhkan dan jumlah interface yang dimiliki. Olehkarena itu sangatlah memungkinkan mempunyai 2 konfigurasi. Pertama, semua konfigurasi telah diuji oleh host, host akan mengirim perintah SetConfiguration dengan nilai bukan 0 dimana sesuai dengan bConfigurationValue.
- Interface Descriptor, Interface descriptor bisa dilihat sama seperti header atau pengelompokan pada endpoint.
- Endpoint Descriptors, Endpoint Descriptor digunakan untuk mendeskripsikan endpoint selain endpoint zero. Endpoint zero selalu diasumsikan untuk mengontrol endpoint dan dikonfigurasikan sebelum endpoint lain. Host akan menggunakan informasi ini untuk mengembalikan dari descriptor ini untuk memperkirakan persyaratan bandwidth yang digunakan.
4. Setelah semua data (descriptor) terbaca, maka akan dibawa ke setup
Packet yang akan dikirim ke host controller, dari data tersebut host akan
menentukan jumlah bandwith dan tipe transfer data mana yang cocok untuk
digunaan device tersebut, apakah control, interrupt, bulk, atau Isochronous, missal ketika dipasang USB dengan device mouse maka,
tipe data transfer yang sesuai adalah interrupt, hal ini dikarenakan host
membaca data dari endpoint descriptor
5. Setelah host melakukan tugasnya, OS akan mencoba menemukan device yang
sesuai dengan driver untuk dihubungkan dengan device baru.
Demikianlah penjelasan dari saya semoga bermanfaat...