Quy trình viết driver cho các thiết bị theo chuẩn usb trong hệ thống nhúng Linux
Số trang: 4
Loại file: pdf
Dung lượng: 822.18 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài báo trình bày về quy trình viết Driver cho một thiết bị USB – một chuẩn giao tiếp hết sức phổ biến hiện nay, Driver được xây dựng cho các hệ thống sử dụng hệ điều hành Linux và nhân ARM là những nền tảng phổ biến trên các hệ thống nhúng hiện đại.
Nội dung trích xuất từ tài liệu:
Quy trình viết driver cho các thiết bị theo chuẩn usb trong hệ thống nhúng LinuxNgô Thị Vinh và ĐtgTạp chí KHOA HỌC & CÔNG NGHỆ116 (02): 9 - 12QUY TRÌNH VIẾT DRIVER CHO CÁC THIẾT BỊ THEO CHUẨN USBTRONG HỆ THỐNG NHÚNG LINUXNgô Thị Vinh, Đoàn Ngọc Phương*, Ngô Hữu HuyTrường Đại học Công nghệ Thông tin và Truyền thông – ĐH Thái NguyênTÓM TẮTĐể điều khiển được các thiết bị ngoại vi, các module mở rộng của các hệ thống nhúng, người lậptrình thường phải tự viết các chương trình điều khiển – Driver cho các cổng giao tiếp thay vì sửdụng các Driver có sẵn của nhà cung cấp thiết bị vì tính riêng biệt của các hệ nhúng. Việc viếtDriver cho các cổng giao tiếp luôn được coi là một công việc hết sức quan trọng và tốn nhiều côngsức của người lập trình, do đó cần có các quy trình rõ ràng để cụ thể hóa và đơn giản hóa công việcnày. Bài báo trình bày về quy trình viết Driver cho một thiết bị USB – một chuẩn giao tiếp hết sứcphổ biến hiện nay, Driver được xây dựng cho các hệ thống sử dụng hệ điều hành Linux và nhânARM là những nền tảng phổ biến trên các hệ thống nhúng hiện đại.Từ khóa: Linux, Tiny 6410, vi điều khiển ARM11, hệ điều hành nhúng, USB DriverGIỚI THIỆU*Khi xây dựng ứng dụng cho các hệ nhúng thìmột trong những công việc quan trọng nhấtcủa người lập trình đó chính là lập trình ghépnối để điều khiển các module, các thiết bịngoại vi ghép nối với hệ vi điều khiển trungtâm. Nếu các module và các thiết bị đượcghép nối với các hệ thống tương thích vớinhau về chuẩn giao tiếp và giao thức truyềnthông thì chúng có thể hoạt động và trao đổidữ liệu cho nhau. Các hệ nhúng thường sửdụng các giao thức truyền thông phổ biến nhưEthernet, RS232, SPI, I2C và đặc biệt ngàynay là giao thức USB. Sử dụng giao thứcUSB có nhiều ưu điểm [1] như dễ sử dụng,tốc độ truyền cao chỉ sau chuẩn Ethernet [1],độ tin cậy cao, chi phí thấp, yêu cầu điện ápnguồn nuôi nhỏ (+5V). Có được những hiểubiết sâu sắc về chuẩn USB sẽ giúp người lậptrình có thể thực hiện được rất nhiều côngviệc như: thiết kế, chế tạo thiết bị hoạt độngtheo chuẩn USB, viết driver cho thiết bị giaotiếp theo chuẩn USB, lập trình ghép nối vớicác thiết bị hoạt động theo chuẩn USB.Bài báo sẽ trình bày các bước viết một drivercho một thiết bị USB trên hệ điều hành nhúngLinux được cài đặt trên kít ARM Tiny6410[8]. Linux là một trong những hệ điều hành*Tel: 0979 479940được phát triển rộng rãi cho các hệ nhúng vớiphần nhân có kích thức rất nhỏ gọn và miễnphí [4]. Ngoài ra, Linux hỗ trợ trình biên dịchcho các ứng dụng được viết bằng C/C++ vàjava [4]. Đây là hai trong ba ngôn ngữ lậptrình được sử dụng nhiều nhất thế giới bởi tốcđộ chạy nhanh và không phụ thuộc vào nềnphần cứng của chúng.CHUẨN USBTín hiệu: Chuẩn USB sử dụng 4 đường tínhiệu trong đó có 2 đường cấp nguồn DC làVBUS-5V và đường GND. 2 đường còn lại làmột cặp tín hiệu vi sai D+ và D- cho phéptruyền dữ liệu [1].Thiết bị USB: Các thiết bị USB có thể đượcchia làm 3 loại chính [1] dựa theo vài trò củachúng: (1) USB Host là thiết bị đóng vai tròđiều khiển toàn bộ mạng USB. Để giao tiếpvà điều khiển các USB device, Bộ điều khiểnUSB Host controller cần được thiết kế tíchhợp với một USB RootHub. USB Host cóchức năng trao đổi dữ liệu với các USBDevice, điều khiển bus USB, quản lý các thiếtbị cắm vào hay rút ra khỏi Bus USB qua quátrình định danh, phân xử, quản lý luồng dữliệu trên Bus, đảm bảo các thiết bị đều có cơhội trao đổi dữ liệu tùy thuộc vào cấu hìnhcủa mỗi thiết bị. (2) USB Device là các thiếtbị đóng vai trò như các slave giao tiếp vớiUSB Host. Các USB Device là các thiết bị bị9Ngô Thị Vinh và ĐtgTạp chí KHOA HỌC & CÔNG NGHỆđộng, quá trình trao đổi dữ liệu của chúng đềuphải thông qua quá trình điều phối của USBHost. (3) USB Hub đóng vai trò như các Hubtrong mạng Ethernet để cấp nguồn cho cácthiết bị USB.Hoạt động của chuẩn USB: được chia làmhai giai đoạn chính gồm quá trình định danhvà quá trình truyền dữ liệu. Quá trình địnhdanh là quá trình USB Host phát hiện cácthiết bị cắm vào và rút ra khỏi đường USBBus. Mỗi khi một thiết bị tham gia vào BusUSB, USB Host sẽ tiến hành đọc các thôngtin mô tả của USB Device rồi thiết lập địa chỉNodeID và chế độ hoạt động tương ứng chothiết bị USB Device. Các địa chỉ sẽ đượcđánh một số nguyên từ 1 đến 126. Khi thiết bịrút ra khỏi đường Bus, địa chỉ này sẽ đượcthu hồi. Quá trình truyền dữ liệu liên quanđến hai khái niệm là Interface và Endpoint.Một thiết bị USB có thể có nhiều Interface vàmột Interface có thể sử dụng nhiều Endpointkhác nhau. Các Endpoint đóng vai trò như cácbộ đệm truyền/nhận dữ liệu. Nhờ việc sửdụng nhiều bộ đệm mà các quá trình truyềnthông được tiến hành song song và cho tốc độcao hơn, đồng thời giúp cho việc phân táchcác dịch vụ khác nhau dễ dàng. Với chuẩnUSB, các thiết bị được thiết kế với tối đa là16 Endpoint. Các Endpoint được phân loạitheo hướng truyền dữ liệu nhìn từ phía USBHost theo cách: Các Endpoint truyền dữ li ...
Nội dung trích xuất từ tài liệu:
Quy trình viết driver cho các thiết bị theo chuẩn usb trong hệ thống nhúng LinuxNgô Thị Vinh và ĐtgTạp chí KHOA HỌC & CÔNG NGHỆ116 (02): 9 - 12QUY TRÌNH VIẾT DRIVER CHO CÁC THIẾT BỊ THEO CHUẨN USBTRONG HỆ THỐNG NHÚNG LINUXNgô Thị Vinh, Đoàn Ngọc Phương*, Ngô Hữu HuyTrường Đại học Công nghệ Thông tin và Truyền thông – ĐH Thái NguyênTÓM TẮTĐể điều khiển được các thiết bị ngoại vi, các module mở rộng của các hệ thống nhúng, người lậptrình thường phải tự viết các chương trình điều khiển – Driver cho các cổng giao tiếp thay vì sửdụng các Driver có sẵn của nhà cung cấp thiết bị vì tính riêng biệt của các hệ nhúng. Việc viếtDriver cho các cổng giao tiếp luôn được coi là một công việc hết sức quan trọng và tốn nhiều côngsức của người lập trình, do đó cần có các quy trình rõ ràng để cụ thể hóa và đơn giản hóa công việcnày. Bài báo trình bày về quy trình viết Driver cho một thiết bị USB – một chuẩn giao tiếp hết sứcphổ biến hiện nay, Driver được xây dựng cho các hệ thống sử dụng hệ điều hành Linux và nhânARM là những nền tảng phổ biến trên các hệ thống nhúng hiện đại.Từ khóa: Linux, Tiny 6410, vi điều khiển ARM11, hệ điều hành nhúng, USB DriverGIỚI THIỆU*Khi xây dựng ứng dụng cho các hệ nhúng thìmột trong những công việc quan trọng nhấtcủa người lập trình đó chính là lập trình ghépnối để điều khiển các module, các thiết bịngoại vi ghép nối với hệ vi điều khiển trungtâm. Nếu các module và các thiết bị đượcghép nối với các hệ thống tương thích vớinhau về chuẩn giao tiếp và giao thức truyềnthông thì chúng có thể hoạt động và trao đổidữ liệu cho nhau. Các hệ nhúng thường sửdụng các giao thức truyền thông phổ biến nhưEthernet, RS232, SPI, I2C và đặc biệt ngàynay là giao thức USB. Sử dụng giao thứcUSB có nhiều ưu điểm [1] như dễ sử dụng,tốc độ truyền cao chỉ sau chuẩn Ethernet [1],độ tin cậy cao, chi phí thấp, yêu cầu điện ápnguồn nuôi nhỏ (+5V). Có được những hiểubiết sâu sắc về chuẩn USB sẽ giúp người lậptrình có thể thực hiện được rất nhiều côngviệc như: thiết kế, chế tạo thiết bị hoạt độngtheo chuẩn USB, viết driver cho thiết bị giaotiếp theo chuẩn USB, lập trình ghép nối vớicác thiết bị hoạt động theo chuẩn USB.Bài báo sẽ trình bày các bước viết một drivercho một thiết bị USB trên hệ điều hành nhúngLinux được cài đặt trên kít ARM Tiny6410[8]. Linux là một trong những hệ điều hành*Tel: 0979 479940được phát triển rộng rãi cho các hệ nhúng vớiphần nhân có kích thức rất nhỏ gọn và miễnphí [4]. Ngoài ra, Linux hỗ trợ trình biên dịchcho các ứng dụng được viết bằng C/C++ vàjava [4]. Đây là hai trong ba ngôn ngữ lậptrình được sử dụng nhiều nhất thế giới bởi tốcđộ chạy nhanh và không phụ thuộc vào nềnphần cứng của chúng.CHUẨN USBTín hiệu: Chuẩn USB sử dụng 4 đường tínhiệu trong đó có 2 đường cấp nguồn DC làVBUS-5V và đường GND. 2 đường còn lại làmột cặp tín hiệu vi sai D+ và D- cho phéptruyền dữ liệu [1].Thiết bị USB: Các thiết bị USB có thể đượcchia làm 3 loại chính [1] dựa theo vài trò củachúng: (1) USB Host là thiết bị đóng vai tròđiều khiển toàn bộ mạng USB. Để giao tiếpvà điều khiển các USB device, Bộ điều khiểnUSB Host controller cần được thiết kế tíchhợp với một USB RootHub. USB Host cóchức năng trao đổi dữ liệu với các USBDevice, điều khiển bus USB, quản lý các thiếtbị cắm vào hay rút ra khỏi Bus USB qua quátrình định danh, phân xử, quản lý luồng dữliệu trên Bus, đảm bảo các thiết bị đều có cơhội trao đổi dữ liệu tùy thuộc vào cấu hìnhcủa mỗi thiết bị. (2) USB Device là các thiếtbị đóng vai trò như các slave giao tiếp vớiUSB Host. Các USB Device là các thiết bị bị9Ngô Thị Vinh và ĐtgTạp chí KHOA HỌC & CÔNG NGHỆđộng, quá trình trao đổi dữ liệu của chúng đềuphải thông qua quá trình điều phối của USBHost. (3) USB Hub đóng vai trò như các Hubtrong mạng Ethernet để cấp nguồn cho cácthiết bị USB.Hoạt động của chuẩn USB: được chia làmhai giai đoạn chính gồm quá trình định danhvà quá trình truyền dữ liệu. Quá trình địnhdanh là quá trình USB Host phát hiện cácthiết bị cắm vào và rút ra khỏi đường USBBus. Mỗi khi một thiết bị tham gia vào BusUSB, USB Host sẽ tiến hành đọc các thôngtin mô tả của USB Device rồi thiết lập địa chỉNodeID và chế độ hoạt động tương ứng chothiết bị USB Device. Các địa chỉ sẽ đượcđánh một số nguyên từ 1 đến 126. Khi thiết bịrút ra khỏi đường Bus, địa chỉ này sẽ đượcthu hồi. Quá trình truyền dữ liệu liên quanđến hai khái niệm là Interface và Endpoint.Một thiết bị USB có thể có nhiều Interface vàmột Interface có thể sử dụng nhiều Endpointkhác nhau. Các Endpoint đóng vai trò như cácbộ đệm truyền/nhận dữ liệu. Nhờ việc sửdụng nhiều bộ đệm mà các quá trình truyềnthông được tiến hành song song và cho tốc độcao hơn, đồng thời giúp cho việc phân táchcác dịch vụ khác nhau dễ dàng. Với chuẩnUSB, các thiết bị được thiết kế với tối đa là16 Endpoint. Các Endpoint được phân loạitheo hướng truyền dữ liệu nhìn từ phía USBHost theo cách: Các Endpoint truyền dữ li ...
Tìm kiếm theo từ khóa liên quan:
Quy trình viết driver Thiết bị theo chuẩn usb Hệ thống nhúng Linux Vi điều khiển ARM11 Hệ điều hành nhúngGợi ý tài liệu liên quan:
-
Bài giảng Hệ thống nhúng: Phần 1 - Đậu Trọng Hiển
109 trang 16 0 0 -
Hệ thống nhúng và thời đại hậu PC
5 trang 16 0 0 -
Bài giảng Lập trình hệ nhúng: Chương 1 - Phạm Ngọc Hưng
56 trang 14 0 0 -
Đồ án tốt nghiệp Điện tử viễn thông: Lập trình nhúng ARM trên Linux
78 trang 14 0 0 -
55 trang 14 0 0
-
Bài giảng IC3 GS4 - Bài 1: Hệ điều hành
44 trang 11 0 0 -
0 trang 11 0 0
-
Tài liệu tóm tắt bài giảng Hệ thống điều khiển nhúng (Embedded Control Systems) - TS. Lưu Hồng Việt
54 trang 11 0 0 -
26 trang 10 0 0
-
Đề tài: Nghiên cứu hệ điều hành nhúng thời gian thực FREERTOS
49 trang 8 0 0