1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

USB for everyone

Chủ đề trong 'Điện - Điện tử - Viễn thông' bởi Quen_mang_kinh, 20/10/2003.

  1. 0 người đang xem box này (Thành viên: 0, Khách: 0)
  1. Quen_mang_kinh

    Quen_mang_kinh Thành viên quen thuộc

    Tham gia ngày:
    23/05/2002
    Bài viết:
    542
    Đã được thích:
    1
    Lập trình cho cổng USB?
    Đầu tiên bạn phải chế tạo một thiết bị cắm vào cổng USB. Tuân theo giao thức USB.
    Sau đấy viết driver cho nó.
    Sau đó viết phần mềm sử dụng các API mà Driver mà USB cung cấp để sử dụng thiết bị đó.
    Để làm những việc đó bạn phải hiểu về USB và hệ điều hành. Tôi sẽ từ từ cung cấp kiến thức để cuối cùng cả tôi và bạn có thể làm được những việc trên. Tuy nhiên thời gian viết bài cuả tôi có hạn nên sẽ lâu đấy.
    Có cách hiểu nào khác:
    Nếu thiết bị của bạn tuân theo một số giao thức chuẩn thiết bị của microsoft cung cấp thì bạn có thể được hỗ trợ phần viết driver bởi MS. Ví dụ:
    Nếu bạn tuân theo giao thức USB solid state disk của Microsoft thì thiết bị của bạn sẽđược de tech bởi WINXP và lúc đấy dữ liệu của bạn sẽ được truy xuất như file.
    Nhưng nếu thiết bị bạn có những tính năng khác thì bạn vẫn phải học các viết mini driver thôi.
  2. txnghia

    txnghia Thành viên mới

    Tham gia ngày:
    13/10/2003
    Bài viết:
    216
    Đã được thích:
    0
    Bác Quen_mang_kinh ơi, vẫn có người theo bước chân của bác đấy. Cảm ơn bác dịch công phu. Mới nhặt được 2 chip USB - Serial, và post ở mục lượm lặt.
  3. txnghia

    txnghia Thành viên mới

    Tham gia ngày:
    13/10/2003
    Bài viết:
    216
    Đã được thích:
    0
    Bác Quen_mang_kinh ơi, vẫn có người theo bước chân của bác đấy. Cảm ơn bác dịch công phu. Mới nhặt được 2 chip USB - Serial, và post ở mục lượm lặt.
  4. vietson

    vietson Thành viên mới

    Tham gia ngày:
    29/12/2002
    Bài viết:
    102
    Đã được thích:
    0
    Bác Quen_mang_kinh ơi, đề tài USB rất hay đấy bác, mình có ý tưởng như vầy, bác xem coi có được không nhé.
    Vấn đề là như thế này.
    Mình đang muốn dùng một MCU giao tiếp với thiết bị lưu trữ qua cổng USB. ( làm một board rời, không liên quan gì đến PC)
    Mục đích cuối cùng là lấy được data trong thiết bị lưu trữ đó và chuyển nó vào RAM.
    Vậy xin các bậc tiền bối xem cái ý tưởng trên có điên rồ hay khả thi?. Và tại sao ?
    Nếu khả thi thì cần MCU nào?
  5. vietson

    vietson Thành viên mới

    Tham gia ngày:
    29/12/2002
    Bài viết:
    102
    Đã được thích:
    0
    Bác Quen_mang_kinh ơi, đề tài USB rất hay đấy bác, mình có ý tưởng như vầy, bác xem coi có được không nhé.
    Vấn đề là như thế này.
    Mình đang muốn dùng một MCU giao tiếp với thiết bị lưu trữ qua cổng USB. ( làm một board rời, không liên quan gì đến PC)
    Mục đích cuối cùng là lấy được data trong thiết bị lưu trữ đó và chuyển nó vào RAM.
    Vậy xin các bậc tiền bối xem cái ý tưởng trên có điên rồ hay khả thi?. Và tại sao ?
    Nếu khả thi thì cần MCU nào?
  6. Quen_mang_kinh

    Quen_mang_kinh Thành viên quen thuộc

    Tham gia ngày:
    23/05/2002
    Bài viết:
    542
    Đã được thích:
    1
    Ý tưởng của bạn là dùng vi xử lý lấy dữ liệu từ USB Flash disk chẳng hạn.
    Mình nghĩ là khó vì lúc đấy vi xử lý của bạn đóng vai trò một host - host thì khó thực hiện hơn device nhiều.
    Thực chất USB chế ra để thực hiện giao tiếp với máy tính (mà máy tính đóng vai trò host) chứ không phải giao tiếp giữa các thiết bị với nhau.
    Nếu bạn cần lấy dữ liệu từ thiết bị lưu trữ thì tốt hơn dùng Memory Card - loại này có nhiều vi xử lý hỗ trợ hơn nhưng tôi không chuyên lắm chỉ gợi ý thế thôi.
    Các bộ nhà sản suất như atmel cũng có bán bộ nhớ flash với các vi xử lý hỗ trợ đi kèm. Bạn có thể vào atmel.com để tham khảo.
  7. Quen_mang_kinh

    Quen_mang_kinh Thành viên quen thuộc

    Tham gia ngày:
    23/05/2002
    Bài viết:
    542
    Đã được thích:
    1
    Ý tưởng của bạn là dùng vi xử lý lấy dữ liệu từ USB Flash disk chẳng hạn.
    Mình nghĩ là khó vì lúc đấy vi xử lý của bạn đóng vai trò một host - host thì khó thực hiện hơn device nhiều.
    Thực chất USB chế ra để thực hiện giao tiếp với máy tính (mà máy tính đóng vai trò host) chứ không phải giao tiếp giữa các thiết bị với nhau.
    Nếu bạn cần lấy dữ liệu từ thiết bị lưu trữ thì tốt hơn dùng Memory Card - loại này có nhiều vi xử lý hỗ trợ hơn nhưng tôi không chuyên lắm chỉ gợi ý thế thôi.
    Các bộ nhà sản suất như atmel cũng có bán bộ nhớ flash với các vi xử lý hỗ trợ đi kèm. Bạn có thể vào atmel.com để tham khảo.
  8. Quen_mang_kinh

    Quen_mang_kinh Thành viên quen thuộc

    Tham gia ngày:
    23/05/2002
    Bài viết:
    542
    Đã được thích:
    1
    WinXP USB Driver StackHình một mô tả WDM driver stack mà được tạo trong WinXP cho hai thiết bị USB, một kết hợp  [composte] và hai không kết hợp. Thiết bị kết hợp có hai giao thức, mỗi giao thức được điều khiển bởi một client driver riêng.Hình mô tả các lựa chọn của port driver và kết hợp với mini-ports mà làm việc với WinXP. Windows XP gốc hỗ trợ Usbuhci.sys và Usbohci.sys. Win Server 2003 và Windows XP sẽ cho phép một mini-port mới gọi là Usbehci.sys, cho phép hỗ hỗ trợ gốc cho tiêu chuẩn USB Enhanced Host Controllers.Win2000 USB Driver StackWin2000 Driver Stack cho USB khác với WinXP. Để hỗ trợ USB 2.0 trên Win2000 cần một driver stack song song (mới). Driver stack sẽ gồm Usbport.sys, Usbhub20.sys và Usbehci.sys. Một điều khiển host cài đặt phụ (Hccoin.dll) sẽ được cung cấp để hỗ trợ cài đặt Windows Update sẽ hoạt động đúng.Bộ điều khiển host được Ms hỗ trợMicrosoft đang có kế hoạch chia những cách khác nhau để hỗ trợ USB 20. Phiên bản đầu tiên WinXP USB 2.0 (nhận được qua Win Update và các Win OEM mới) chỉ hỗ trợ những harward IDs sau thuộc về NEC USB 2.0 EHCI host controller:
  9. Quen_mang_kinh

    Quen_mang_kinh Thành viên quen thuộc

    Tham gia ngày:
    23/05/2002
    Bài viết:
    542
    Đã được thích:
    1
    WinXP USB Driver StackHình một mô tả WDM driver stack mà được tạo trong WinXP cho hai thiết bị USB, một kết hợp  [composte] và hai không kết hợp. Thiết bị kết hợp có hai giao thức, mỗi giao thức được điều khiển bởi một client driver riêng.Hình mô tả các lựa chọn của port driver và kết hợp với mini-ports mà làm việc với WinXP. Windows XP gốc hỗ trợ Usbuhci.sys và Usbohci.sys. Win Server 2003 và Windows XP sẽ cho phép một mini-port mới gọi là Usbehci.sys, cho phép hỗ hỗ trợ gốc cho tiêu chuẩn USB Enhanced Host Controllers.Win2000 USB Driver StackWin2000 Driver Stack cho USB khác với WinXP. Để hỗ trợ USB 2.0 trên Win2000 cần một driver stack song song (mới). Driver stack sẽ gồm Usbport.sys, Usbhub20.sys và Usbehci.sys. Một điều khiển host cài đặt phụ (Hccoin.dll) sẽ được cung cấp để hỗ trợ cài đặt Windows Update sẽ hoạt động đúng.Bộ điều khiển host được Ms hỗ trợMicrosoft đang có kế hoạch chia những cách khác nhau để hỗ trợ USB 20. Phiên bản đầu tiên WinXP USB 2.0 (nhận được qua Win Update và các Win OEM mới) chỉ hỗ trợ những harward IDs sau thuộc về NEC USB 2.0 EHCI host controller:
  10. Quen_mang_kinh

    Quen_mang_kinh Thành viên quen thuộc

    Tham gia ngày:
    23/05/2002
    Bài viết:
    542
    Đã được thích:
    1
    Chi tiết hơn về các thành phần USB


    Thiết bị USB vật lý: Phần cứng nằm một phía dây nối USB làm các chức năng người  sử dụng cần.

    Phần mềm client: Phần mềm sẽ chạy trên máy trạm đáp ứng lại thiết bị USB. Phần mềm client này sẽ thường được cung cấp bở hệ điều hành hay đi kèm thiết bị của nhà sản xuất.

    Phần mềm hệ thống USB: Phần mền hỗ trợ USB theo cách riêng biệt của hệ điều hành. Phần mềm hệ thống USB thường được cung cấp bởi hệ điều hành độc lập với thiết bị và phần mềm client.

    Bộ điều khiển host cho USB: Phần cứng và phần mềm cho phép thiết bị USB có thể gắn vào một host.
     
    Có sự chia sẻ quyền và trách nhiệm giữa 4 thành phần của một hệ thống USB. Phần còn lại của tài liệu kỹ thuật sẽ mô tả chi tiết về hỗ trợ dòng giao tiếp ổn định và tin cậy giữa một function và client của nó.
     
    Như cho thấy ở hình 5-2 một kết nối đơn giản giữa host và một thiết bị yêu cầu sự tương tác giữa một số các lớp và thực thể. Lớp Giao tiếp USB Bus cung cấp một đường kết nối vật lý/tín hiệu/gói giữa một host và một thiết bị. Lớp Thiết bị USB gồm có Phần mềm hệ thống USB có chức năng thực hiện những thao tác USB tổng quát với thiết bị. Lớp Function cung cấp thêm những khả năng cho host giao tiếp với thiết bị qua một lớp Phần mềm client tương ứng thích hợp. Mỗi lớp Thiết bị và Function USB giao tiếp với phần thiết bị vật lý qua các kết nối logic nhưng thực sự chúng sử dụng lớp Giao tiếp Bus USB để thực hiện việc truyền dữ liệu.
     

Chia sẻ trang này