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. rf_xtt

    rf_xtt Thành viên mới

    Tham gia ngày:
    23/02/2003
    Bài viết:
    17
    Đã được thích:
    0
    Em cũng học HDH và đang đụng đến USB .Nhưng chẳng biết gì hết trơn .Có đọc bài của bác quen_mang_kinh nên mình hỏi 1 chút .Bác nói phải làm 1thiết bị USB vậy làm như thế nào .Có chỗ nào để mua được không . Lập trình thì dùng ngôn ngữ gì .Dùng C++ hay assemly .Cái này thì đúng là không biết đi từ đâu . Còn anh ansoft nói connector USB thì dùng ra sao nữa .
    Cảm ơn các bác đã post bài .Em luôn theo dõi từng ngày đó .
  2. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Lập trình thì dùng ngôn ngữ nào chẳng đưọc nhưng nếu liên quan đến OS thì nên viết bằng C. Tốt nhất là tìm mã nguồn của Linux, có mã nguồn viết bằng C cho USB, hoặc vào Google theo từ khoá USB programming. Còn viết dưói dạng ứng dụng thì sử dụng visual C++, mình chưa sử dụng lần nào nhưng chắc là phải có OCX hỗ trợ giao tiếp với USB device.
    Mình chẳng biết rõ (giả lập bằng mcu giao tiếp qua giao diện USB hơi khó, nhất là về linh kiện)nhưng chắc là thử viết chương trình để link 2 máy tính thông qua cổng USB thử xem?
  3. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Lập trình thì dùng ngôn ngữ nào chẳng đưọc nhưng nếu liên quan đến OS thì nên viết bằng C. Tốt nhất là tìm mã nguồn của Linux, có mã nguồn viết bằng C cho USB, hoặc vào Google theo từ khoá USB programming. Còn viết dưói dạng ứng dụng thì sử dụng visual C++, mình chưa sử dụng lần nào nhưng chắc là phải có OCX hỗ trợ giao tiếp với USB device.
    Mình chẳng biết rõ (giả lập bằng mcu giao tiếp qua giao diện USB hơi khó, nhất là về linh kiện)nhưng chắc là thử viết chương trình để link 2 máy tính thông qua cổng USB thử xem?
  4. 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
    Các bạn đọc lại các bài thì sẽ thấy các bước để chế tạo một thiết bị USB như sau:
    - Chọn một CHIP có suppport USB rất nhiều hãng bán các loại chip này nhưng đa số ở nước ngoài (Quan trọng là định mục đích cho ứng dụng của mình) Microchip, Atmel... là hai địa chỉ có thể tìm đến.
    - Với các bạn thạo về điện tử các bạn có thể tự chế lấy một board để thí nghiệm còn các bạn chỉ làm phần mềm tốt nhất nên mua một KIT thí nghiệm về cái này hơi đắt một chút.
    - Bạn cần DDK của Ms hay một bộ công cụ driver nào đấy. Nếu các bạn học thì nên nghiên cứu DDK bạn sẽ hiểu sâu hên về kernel của win.
    - Rồi cứ theo tài liệu mà nghiên cứu vài tháng sau ra sản phẩm :D
    Như mình nói USB là bus master slave, máy tính chỉ đóng vai trò host mà hai host thì không thể nối trực tiếp để trao đổi dữ liệu được (Nghĩa là không thể lấy 2 cái dây USB nối từ máy này sang máy kia được). Tôi cũng đang nối giữa laptop với PC bằng một cable link ở giữa cable link đấy có một mạch điện nhỏ chính là mạch đóng vai trò device phải qua mạch này mới có thể kết nối máy tính với nhau.
    Các thiết bị low speed như chuột, bàn phímm, joystick được thực hiện khác với thiết bị fullspeed 1.1 tiêu chuẩn và được hỗ trợ bởi hệ điều hành. (Làm việc chỉ thông qua defaut endpoint)
  5. 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
    Các bạn đọc lại các bài thì sẽ thấy các bước để chế tạo một thiết bị USB như sau:
    - Chọn một CHIP có suppport USB rất nhiều hãng bán các loại chip này nhưng đa số ở nước ngoài (Quan trọng là định mục đích cho ứng dụng của mình) Microchip, Atmel... là hai địa chỉ có thể tìm đến.
    - Với các bạn thạo về điện tử các bạn có thể tự chế lấy một board để thí nghiệm còn các bạn chỉ làm phần mềm tốt nhất nên mua một KIT thí nghiệm về cái này hơi đắt một chút.
    - Bạn cần DDK của Ms hay một bộ công cụ driver nào đấy. Nếu các bạn học thì nên nghiên cứu DDK bạn sẽ hiểu sâu hên về kernel của win.
    - Rồi cứ theo tài liệu mà nghiên cứu vài tháng sau ra sản phẩm :D
    Như mình nói USB là bus master slave, máy tính chỉ đóng vai trò host mà hai host thì không thể nối trực tiếp để trao đổi dữ liệu được (Nghĩa là không thể lấy 2 cái dây USB nối từ máy này sang máy kia được). Tôi cũng đang nối giữa laptop với PC bằng một cable link ở giữa cable link đấy có một mạch điện nhỏ chính là mạch đóng vai trò device phải qua mạch này mới có thể kết nối máy tính với nhau.
    Các thiết bị low speed như chuột, bàn phímm, joystick được thực hiện khác với thiết bị fullspeed 1.1 tiêu chuẩn và được hỗ trợ bởi hệ điều hành. (Làm việc chỉ thông qua defaut endpoint)
  6. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Thực ra đâu cứ phải là host là device mới có thể trao đổi dữ liệu với nhau. Lúc trước chỉ cần cáp null modem là có thể link 2 PC lại với nhau qua norton commander như một HDD khác. Hoặc có loại ổ cứng HDD gắn với PC qua cổng LPT.
    Chế độ bus master/slave thực ra chỉ là chế độ bán song công, tại một thời điểm chỉ có 1 site phát, 1 site nhận. Cáp link thường là 1 đôi dây, do đó phải có 1 site cầm trịch, gọi là site master, site còn lại phát hay nhận theo sự điều khiển của master là các slave. Host thường đi liền với master.Nếu link 2 PC với nhau qua cổng usb thì 2 PC không thể giao tiếp với nhau, đơn giản vì không driver. Nếu muốn có thể viết một driver để sau khi link 2 PC với nhau thì các thiết bị (Hdd, com, lpt...)của PC bên kia xuất hiện lên như là thiết bị ngoại vi của PC bên này.
    Nếu giao tiếp với nhau theo chế độ bus master/slave thì cần phải chỉ định đâu là master/ đâu là slave. Trong các thiết bị viễn thông thiết kế theo giao tiếp CPCI, các module trao đổi dữ liệu với nhau thông qua chế độ bus master/ slave.
    Được opentdoors sửa chữa / chuyển vào 10:36 ngày 05/03/2004
  7. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Thực ra đâu cứ phải là host là device mới có thể trao đổi dữ liệu với nhau. Lúc trước chỉ cần cáp null modem là có thể link 2 PC lại với nhau qua norton commander như một HDD khác. Hoặc có loại ổ cứng HDD gắn với PC qua cổng LPT.
    Chế độ bus master/slave thực ra chỉ là chế độ bán song công, tại một thời điểm chỉ có 1 site phát, 1 site nhận. Cáp link thường là 1 đôi dây, do đó phải có 1 site cầm trịch, gọi là site master, site còn lại phát hay nhận theo sự điều khiển của master là các slave. Host thường đi liền với master.Nếu link 2 PC với nhau qua cổng usb thì 2 PC không thể giao tiếp với nhau, đơn giản vì không driver. Nếu muốn có thể viết một driver để sau khi link 2 PC với nhau thì các thiết bị (Hdd, com, lpt...)của PC bên kia xuất hiện lên như là thiết bị ngoại vi của PC bên này.
    Nếu giao tiếp với nhau theo chế độ bus master/slave thì cần phải chỉ định đâu là master/ đâu là slave. Trong các thiết bị viễn thông thiết kế theo giao tiếp CPCI, các module trao đổi dữ liệu với nhau thông qua chế độ bus master/ slave.
    Được opentdoors sửa chữa / chuyển vào 10:36 ngày 05/03/2004
  8. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Usb chủ yếu là giải pháp kết nối các thiết bị ngoại vi nên nó không có ý nghĩa để link 2 PC lại với nhau. Với mục đích học tập hay nghiên cứu về device driver thì đây cũng có thể là 1 thách thức. Mình không đọc nhiều về DDK trên MS, nhưng nếu với device driver dưới Linux thì mình sẽ tiến hành như sau:
    -Với PC đóng vai trò host, khởi tạo các entry node device trong /dev/xxxusb , tức là các mô tả về thiết bị dưới dạng file. Lý do: tất cả các thư mục, file và thiết bị ngoại vi (filesystem) đều được mô tả như là file. Các entry này là nơi để host xác định các thiết bị được nối vào thông qua usb, ở đây là các hdd của máy PC bên kia.
    - Với PC đóng vai trò device, phải viết các modules với tên module bao gồm chữ usb đầu tiên (usb_xxx.so). Các module đóng vai trò trung gian, vd như convert giao thức từ usb sang ide... hoặc gián tiếp truy nhập vào các hdd như tại chỗ. Và được gọi từ hàm probe của kernel. Tất nhiên PC này đóng vai trò như một multifunction usb device, với các interface desc khác nhau cho mỗi thiết bị ngoại vi.
    Đây là cách tiếp cận của mình. Trên thực tế, hiện nay người ta phát triển dual-role usb device.
  9. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Usb chủ yếu là giải pháp kết nối các thiết bị ngoại vi nên nó không có ý nghĩa để link 2 PC lại với nhau. Với mục đích học tập hay nghiên cứu về device driver thì đây cũng có thể là 1 thách thức. Mình không đọc nhiều về DDK trên MS, nhưng nếu với device driver dưới Linux thì mình sẽ tiến hành như sau:
    -Với PC đóng vai trò host, khởi tạo các entry node device trong /dev/xxxusb , tức là các mô tả về thiết bị dưới dạng file. Lý do: tất cả các thư mục, file và thiết bị ngoại vi (filesystem) đều được mô tả như là file. Các entry này là nơi để host xác định các thiết bị được nối vào thông qua usb, ở đây là các hdd của máy PC bên kia.
    - Với PC đóng vai trò device, phải viết các modules với tên module bao gồm chữ usb đầu tiên (usb_xxx.so). Các module đóng vai trò trung gian, vd như convert giao thức từ usb sang ide... hoặc gián tiếp truy nhập vào các hdd như tại chỗ. Và được gọi từ hàm probe của kernel. Tất nhiên PC này đóng vai trò như một multifunction usb device, với các interface desc khác nhau cho mỗi thiết bị ngoại vi.
    Đây là cách tiếp cận của mình. Trên thực tế, hiện nay người ta phát triển dual-role usb device.
  10. chnghung

    chnghung Thành viên mới

    Tham gia ngày:
    19/03/2002
    Bài viết:
    4
    Đã được thích:
    0
    Trích (Nghĩa là không thể lấy 2 cái dây USB nối từ máy này sang máy kia được). Tôi cũng đang nối giữa laptop với PC bằng một cable link ở giữa cable link đấy có một mạch điện nhỏ chính là mạch đóng vai trò device phải qua mạch này mới có thể kết nối máy tính với nhau.
    Cho hỏi mạch điện nhỏ chính giữa là mạch ra sao? Bạn có sơ đồ không cho xem để nghiên cứu với.

Chia sẻ trang này