Sau một thời gian tìm kiếm, nghiên cứu, tìm hiểu, đào bới sục sạo trên mọi diễn đàn, tui hông thấy (hoặc là tìm hông thấy) bài nào hoàn chỉnh về USB từ đầu tới cuối, mà chỉ có người hỏi, người trả lời thì lấp lửng, hoặc là người trả lời cũng chỉ cung cấp tất cả những gì mình có cho anh em. Tui tổng hợp lại và đã làm ra được 1 device USB bằng chip PIC8F4550, nay post lên cho anh em tham khảo và phát triển. Lưu ý là không phải tôi làm từ đầu, mà là tìm kiếm, làm thành công và post lại thôi. Hi vọng là mọi người cũng làm thành công và phát triển thêm. Tui nghĩ có nhiều người cũng tìm tòi và làm được nhưng giấu nghề, hổng chịu chỉ cho anh em.
Trước tiên là tìm hiểu về USB, tài liệu thì rất là nhiều, nhưng theo các cao thủ đi trước thì anh em khoan nên đọc USB complete, vì chưa làm usb bao giờ mà đọc cuốn đó thì có mà té giếng, tui thấy cũng đúng là té thiệt, và được khuyên là đọc cuốn USB in nutshell trước, cuốn này thì có nhiều người đã post lên rồi, nên tui hông post lại nữa.
- Anh em đọc để hiểu về cách enumuration của usb, quá trình khi cắm device vô, nó sẽ làm gì để nói cho máy tính biết "tui là USB device nè", rồi máy tính làm gì để cấp địa chỉ, reset device..
- Tiếp theo, là đọc firmware của usb, trong này đa số là dân hardware, đa số là dân PIC nên đọc hiểu lẹ, còn tui là dân software chính thống, vì mê hardware nên mới tự nghiên cứu học hỏi, nên đọc firmware hơi lâu, sửa thì sửa được nhưng hiểu thì chưa hiểu. Đọc firmware để biết quá trình initializing của USB device diễn ra như thế nào, làm sao mà để lúc cắm usb vô thì máy tính nó nói "found new hardware.." rồi nó biểu bỏ đĩa vô cài driver. Nếu ai có lòng thì phân tích phụ tui code firmware. Thanks nhiều.
- Kế tới là đọc code driver. À, cái này là chua nhát đây, viết driver là một nghệ thuật, không dễ cho những ai mới biết viết c/c++. Ở đây tui xài driver opensource, phiên bản gốc là libusb viết trên linux, sau đó được port qua windows, gọi là libusb-win32. Download ở đây:
http://libusb-win32.sourceforge.net/