Electronics & Embedded Systems

ใช้ V-USB ทำ Low speed USB device เป็น DCD_ACM USB-2-Serial

https://i1.wp.com/www.obdev.at/Images/vusb/vusb-teaser.png
ต้องการพัฒนา Micro controller ที่ต่อกับ Computer ผ่าน USB แล้วสามารถส่งข้อมูล UART ได้
สามารถทำได้ง่ายโดยอาศัย V-USB Library http://www.obdev.at/products/vusb/index.html สำหรับ Softare-USB บน ATMEGA , แต่ว่า ปัญหากับอยู่ที่ Windows หรือ Linux เองที่ Driver ไม่สนับสนุนให้ Low speed USB Device ใช้ Bulk endpoint ในการติดต่อสื่อสาร

การแก้ปัญหา ถ้าใน Windows ก็ถึงกับต้องทำ Driver ใหม่ http://www.recursion.jp/avrcdc/ แต่สำหรับใน Linux นั้้นแทบไม่ต้องทำอะไรเลย แค่ทำให้ Linux จำได้ว่า ต้องใช้ OHCI driver กับ CDC_ACM เท่านั้นก็พอ ก็จะได้ /dev/ttyACM0 มาใช้งาน

แต่ ปัญหาที่ตามมาคือ โดย Usually แล้ว Linux จะใช้ EHCI เพราะเห็นว่า เครื่องคอมเราเป็น USB2 Hub .. ซึ่ง EHCI นี้เอง เป็นศัตรูกับ Low speed USB ATMAGA และ V-USB ของเรา  .. เพราะ V-USB อยากทำงานใน Bulk endpoint แบบ Low speed .. แต่ EHCI ไม่ยอม .. EHCI ต้องการให้ Low speed device เป็น endpoint แบบ Interrupt เท่านั้น …. ดังนั้น ผลที่ได้คือ ไม่มีข้อมูลส่งออกมา

ทางแก้คือ หา Hub usb1 มาใช้ / หรือ บังคับให้ Linux ใช้ OHCI / หรือ แก้ V-USB

Advertisements
มาตรฐาน

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s