Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
LỜI CẢM ƠN
Quãng thời gian sinh viên đại học không phải là dài nhưng là một thời
gian sâu sắc và quan trọng trong mỗi chúng ta. Trong quãng thời gian sinh
viên của mình, em đã nhận được sự dạy dỗ, chỉ bảo tận tình của các thầy, các
cô các cán bộ khoa học kỹ thuật trong trường đại học Bách Khoa Hà Nội.
Khoảng thời gian đó đã cho em những kiến thức chuyên môn cũng như
phương pháp làm việc khoa học. Cùng với sự động viên giúp đỡ của gia đình,
các anh chị đồng nghiệp, bạn bè, giờ đây em đã hoàn thành đồ án tót nghiệp
đại học.
Nhân dịp này em xin được gửi lời cảm ơn tới tất cả các thầy, các cô đã
dạy dỗ chỉ bảo cho em trong suốt thời gian vừa qua. Em xin cảm ơn các thầy,
các cô trong khoa Công nghệ Thông tin, những người đã cho em những kiến
thức quý báu, dìu dắt em những bước đầu tiên trong nghề nghiệp. Em xin
cảm ơn các thầy, các cô trpng bộ môn Công nghệ Phần mềm, đặc biệt là thầy
Nguyễn Ngọc Bình. Thầy đã nhiệt tình giúp đỡ và tạo mọi điều kiện, chỉ bảo
và hướng dẫn từng bước đi để em có thể hoàn thành đồ án tôt nghiệp này.
Tôi xin được gửi lời cảm ơn chân thành tới công ty phần mềm FSOFT
đã tạo mọi điều kiện để tôi có thể hoàn thành đồ án tot nghiệp này, đặc biệt
là các anh Trần Xuân Khôi, Nguyễn Đức Quỳnh đã nhiệt tình chỉ bảo, hướng
dẫn. Cảm ơn các bạn đồng nghiệp đã giúp đỡ, động viên và đóng góp các ý
kiến quý báu trong thời gian tôi thực hiện đồ án.
Cuối cùng, tôi xin được gửi lời cảm ơn sâu sắc tới bố mẹ và gia đình,
những người thân đã hết sức động viên, cổ vũ, giúp đõ tôi về vật chất cũng
như tinh thần để tôi có thể hồan thành đồ án tốt nghiệp này
Phạm Tuấn Minh
Tháng 5 – Năm 2004
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
1
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
LỜI NÓI ĐẦU
1.3. SƠ LƯỢC VỀ KIẾN TRÚC BUS USB….………………… … 8-
1.3.1. USB interconnect……………… …………….…… … 8-
1.3.2. Bus Topology……………… …………… ….…… … 9-
1.3.3. USB host……………… …………….…………… … 9-
1.3.4. USB Devices……………… …………….…… ……… 9-
1.3.5. Quan hệ giữa USB devices và USB host .…….…… … 10-
1.3.6. Physical Interface……………… …………….…… … 11-
1.3.7. Bus Protocol……………… …………….…… … 12-
1.3.8. Các loại luồng điều khiển …… …………….…… … 13-
1.3.9. Cấu hình hệ thống……………… …………….…… … 13-
1.3.10. USB là một bus robustness………………….…… … 13-
1.3.11. Các trạng thái của device …… …………….…… … 14-
CHƯƠNG 2. HỆ ĐIỀU HÀNH LINUX & LINUX KERNEL 16-
2.1. LỊCH SỬ RA ĐỜI HỆ ĐIỀU HÀNH LINUX……………… …… 16-
2.2. CÁC ĐẶC ĐIỂM CƠ BẢN……………… ……………… 17-
2.3. QUẢN LÝ FILE ……………… …………….……… … 20-
2.4. QUẢN LÝ TIẾN TRÌNH………………….…….…… … 25-
2.5. QUẢN LÝ BỘ NHỚ……………… …………….…… … 34-
2.6. LINUX KERNEL……………… …………….…… … 38-
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
3
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
CHƯƠNG 3. MỘT SỐ VẤN ĐỀ KHI PHÁT TRIỂNDRIVER 40-
3.1. DRIVER LÀ GÌ………… ……… …………….…… … 40-
3.2. CÁC KHÓ KHĂN KHI PHÁT TRIỂN DRIVER……………… 40-
3.3. QUÁ TRÌNH PHÁT TRIỂN DRIVER ………….…… … 40-
3.3. GIỚI THIỆU VỀ LINUX DRIVER …………….…… … 41-
CHƯƠNG 4. USB DRIVER……………… …………….…… … 43-
4.1. THIẾT BỊ KÝ TỰ VÀ THIẾT BỊ KHỐI……………… ………… 43-
4.1.1. Thiết bị ký tự……………… …………….…… … 43-
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
CHƯƠNG 1
GIỚI THIỆU VỀ KIẾN TRÚC BUS USB
1.1. GIỚI THIỆU CHUNG VỀ USB
USB được xác định như một chuẩn công nghiệp mở rộng kiến trúc của
PC tập trung ở Computer Telephony Integration (CTI), sự giao tiếp, và hiệu
quả của ứng dụng. Một kiến trúc USB phải đáp ứng các tiêu chuẩn sau:
- dễ sử dụng cho việc mở rộng các thiết bị PC
- giá thành giảm và hỗ 12Mb/s
- hỗ trợ đầy đủ thời gian thực cho các loại dữ liệu như : voice, audio,
and compressed video
- giao thức trao đổi mềm dẻo, hỗ trợ hỗn hợp cả giao thức đẳng thời và
giao thức dị bộ
- tích hợp với các công nghệ kỹ thuật nổi tiếng
- hỗ trợ cho các cấu hình PC khác nhau và các thiết bị số
- cung cấp giao tiếp chuẩn cho phép triển khai nhanh trên các sản phẩm
- cho phép tham số hoá cho các loại PC khác nhau
1.2. CÁC ĐẶC ĐIỂM CỦA USB
Các đặc trưng của USB cung cấp một sự lựa chọn các thuộc tính để đạt
được các mức giá thành và hiệu năngn khác nhau.
Sự tích hợp các điểm có thể cho phép các chức năng với các mức hệ
thống và thanhg phần khác nhau
Các đặc điểm được xếp theo các loại sau:
+ Dễ sử dụng cho người sử dụng cuối
- Có một mẫu cho cáp và kết nối
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
6
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
- Các mức chi tiết về nguồn điện được phân tách từ người sử dụng
- Tự xác định các thiết bị, tự động kết nối với các hàm chức năng trong
- Cộng tác với một số hệ thống giao tiếp đã tồn tại
+ Giá thành thực hiện rẻ Low-cost implementation
- giá thành rẻ với kênh phụ ở 1.5Mb/s
- tối ưu cho tích hợp các thiết bị phần cứng với PC (host)
- thích hợp cho phá triển các thiết bị giá thành rẻ
- cáp và bộ phận kết nối giá thành rẻ
- Sử dụng các công nghệ phổ biến
1.3. SƠ LƯỢC VỀ KIẾN TRÚC USB
Một hệ thống USB được mô tả bao gồm ba phần chính :
+ USB interconnect
+ USB devices
+ USB host.
1.3.1 USB interconnect
USB interconnect là cách thức mà USB devices và giao tiếp với host
host. Bao gồm:
+ Bus Topology: Mô hình kết nối giữa USB devices và host.
+ Inter-layer Relationships: Là stack chứa các USB tasks được thực
hiện ở từng lớp của hệ thống
+ Data Flow Models: Cách thức mà dữ liệu được chuyển trong hệ
thống qua USB giữa các nhà sản xuất và người sử dụng.
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
8
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
+ USB Schedule: USB cung cấp một chia sẻ kết nối. Truy cập vào kết
nối này được xác định với mục đích hỗ trợ truyền thông đồng bộ và loại trừ
chi phí phân xử.
1.3.1. Bus Topology
1.3.2. USB host
Bất kỳ hệ thống USB nào cũng chỉ có một host. Giao tiếp USB tới PC
host được xác định thông qua Host Controller. Host Controller có thể được
11
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
1.3.6. Bus Protocol
USB là một bus thăm dò. Host Controller khởi đầu tất cả các trao đổi
dữ liệu. Tất cả các giao tác liên quan đến sự truyền thông dữ liệu được phân
chia thành 3 gói . Mỗi giao tác được bắt đầu khi Host Controller, được lập
lịch từ trước, gửi một USB packet môt tả kiểu và hướng của giao tác, địa chỉ
của thiết bị và số điểm cuối. packet này được gọi là “token packet.” USB
device được xác định địa chỉ kích hoạt chính nó bằng cách giải mã trường địa
chỉ thích hợp. Trong giao tác, dữ liệu được truyền tải từ host đến a device
hoặc từ a device tới host. Hướng truyền dữ liệu được xác định trong token
packet. Nguồn của giao tác sau đó gửi một data package hoặc chỉ ra rằng
không có dữ liệu để truyền. Nơi nhận sẽ trả lời bằng một “handshake packet”
chỉ ra rằng dữ liệu đã đwocj truyền thành công .
Mô hình truyền dữ liệu giữa nguồn và đích trên host và endpoint trên
device được gọi là một đường ống pipe. Có hai loại pipe: luồng và thông điệp
(stream and message). luồng dữ liệu không có cấu trúc USB trong khi thông
điệp thì có cấu trúc. Ngoài ra, các pipes có sự kết hợp của dải thông dữ
liệu(data bandwidth), kiểu dịch vụ truyền(transfer service type) như đồng
bộ,dị bộ và các đặc điểm của endpoint như like hướng và kích thước bộ đệm.
Hầu hết các pipes hình thành khi một USB device được cấu hình. Một
message pipe, Default Control Pipe được hình thành khi device được cugn
cấp nguồn để cung cấp truy cập tới cấu hình thiết bị, trạng thái và thông tin
điều khiển.
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
12
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Các giao tác được lập lịch cho phép điều khiển một vài luồng pipes. Ở
mức phần cứng, bằng cách sử dụng NAK handshake như bộ điều chỉnh tỉ lệ
dữ liệu để ngăn các bộ đệm khỏi các tình huống underrun or overrun. Khi có
+ tự động phát hiện sự gắn kết và gỡ bỏ của device khỏi hệ thống và
cấu hình ở mức hệ thống lại các device
+ sử dụng giao thức tự động khôi phục(Self-recovery),sử dụng
timeouts để kiểm tra mất mát dữ liêu và trục trặc xảy ra
+ Điều khiển luồng cho luồng dữ liệu để đảm bảo đồng bộ hoá và quản
lý bộ đệm phần cứng
+ Dữ liệu và điều khiển Pipe được xây dựng đảm bảo sự đọc lập từ sự
tương tác giữa một vài chức năng va thiết bị khác nhau
1.3.10. Các trạng thái của device
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
14
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Các trạng thái của device USB
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
15
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
CHƯƠNG 2
HỆ ĐIỀU HÀNH LINUX & LINUX KERNEL
2.1. LỊCH SỬ RA ĐỜI HỆ ĐIỀU HÀNH LINUX
Linux bắt nguồn từ một hệ điều hành lớn hơn có tên là UNIX . Hệ điều
hành UNIX được phát triển tại phòng thí nghiệm Bell của công ty AT&T vào
khong năm 1969. Vào thời điểm đó, các máy tính thường hoạt động theo chế
độ đn nhiệm phục vụ một người dùng, người lập trình vào dữ liệu cho mày
tính theo một dạng nào đó (chẳng hạn bìa đục lỗ) sau đó cho máy tính chạy
và in ra kết qu ra. Trong một môi trường làm việc như vậy người sử dụng
không tận dụng hết kh năng của bộ vi xử lý, không chia sẻ được tài nguyên
của máy và rất khó khăn trong việc liên hệ giữa các thành viên của một dự án
phát triển lớn.
Hệ điều hành UNIX ra đời trong bối cảnh đó, các tác giả đầu tiên của
UNIX là những người có nhu cầu được hỗ trợ lẫn nhau trong việc phát triển
Shell : là chương trình nằm giữa người sử dụng và kernel, thông
thường nó là một bộ biên dịch dòng lệnh từ người sử dụng ở các thiết bị cuối
(cũng có thể từ tệp) và thực hiện chúng. Không những thế, trong UNIX shell
còn là một ngôn ngữ lập trình thực sự với đầy đủ các cú pháp cần thiết như
câu lệnh điều kiện, vòng lặp, các chương trình con, thủ tục
Utilities : UNIX có hàng trăm các chương trình tiện ích được xem như
các câu lệnh của hệ điều hành để phục vụ cho người sử dụng. Các tiện ích
này bao gồm các chương trình soạn tho, xử lý văn bản, các chương trình biên
dịch, các tiện ích thông tin trên mạng
2.2. CÁC ĐẶC ĐIỂM CƠ BẢN
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
17
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Hệ điều hành LINUX có một số đặc điểm sau:
— Nhiều người sử dụng
— Đa chương
— Bảo mật
— Độc lập phần cứng
— Kết nối mở
— Dùng chung thiết bị
— Tổ chức tập tin phân cấp
Nhiều người sử dụng:
Nhiều người sử dụng có thể sử dụng máy tính có cài LINUX tại một
thời điểm. Ví dụ:
LINUX Server:
— User A: dùng Oracle
— User B: chương trình biên dịch
— User C: gửi thư
Hệ điều hành LINUX quản lý những người sử dụng theo cấu trúc phân cấp,
người sử dụng có thể giao tiếp với nhau theo các nhóm. Người sử dụng cao
Đối với Linux toàn bộ hệ thống tập tin chỉ có một root. Có thể sử dụng lệnh
mount để kết nối các ổ đĩa trong một hệ thống tập tin duy nhất.
Ổ 1 : / LIB
BIN
USR
Ổ 2: /- ETC
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
19
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
ORACLE
mount => /- LIB
BIN
USR- ETC
- ORACLE
Độc lập phần cứng
Vì hệ điều hành LINUX được viết bằng ngôn ngữ cấp cao cho nên nó
rất dễ cài đặt trên các cấu hình phần cứng khác. Hơn nữa với cách tổ chức các
thiết bị là các tập tin đặc biệt nên việc thêm vào hay loại bỏ các thiết bị rất dễ
dàng.
Dùng chung thiết bị
Vì Linux là môi trường nhiều người sử dụng do đó các thiết bị ngoại vi
như máy in,v.v có thể được dùng chung bởi nhiều người sử dụng.
Bảo mật
Linux cung cấp rất nhiều cơ chế bảo mật khác. Trong đó mỗi người sử
dụng có một số quyền trên các tập tin nhất định và chỉ được phép chạy một số
chương trình nhất định. Ngoài ra cơ chế mã hoá và giải mã cũng là một phần
của hệ điều hành.
Kết nối mở
Linux cung cấp các thiết bị mạng qua Ethernet, Modem, X25. Với
nhiều thủ tục truyền thông khác nhau UUCP (Linux-to-Linux Copy), TCP/IP,
file thuộc về một người dùng khác hay ít nhất ở một vị trí nào có trong cây
thư mục (file tree ) . Ví dụ 2 người được chia sẻ một file , file này có thể nằm
trong một thư mục thuộc về một người nào đó vì vậy mà người kia phải sử
dụng đường dẫn tuyệt đối để tham kho đến nó . Nếu đường dẫn đến file quá
dài có thể gây bực tức với người dùng vì vậy LINUX cung cấp một giải pháp
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
21
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
cho vấn đề này bằng cách cho phép tạo một thư mục vào mới chỉ đến một file
đang tồn tại . Mỗi điểm vào được gọi là một kết nối .
Một ví dụ được mô tả như hình trên . Fred và Lisa cùng làm việc trong một
nhóm và mỗi người đều thường xuyên truy nhập đến các file của người kia .
Nếu Fred có /usr/fred như là thư mục làm việc anh ta có thể tham kho tới file
x trong thư mục của Lisa là /usr/lisa/x . Fred có thể tạo một điểm vào mới
trong thư mục của mình như hình dưới sau đó anh ta có thể sử dụng x như là
phưng tiện /usr/lisa/x .
Trong ví dụ trên ta thấy trước khi liên kết thì cách duy nhất cho Fred tham
kho đến file x của Lisa là sử dụng đường dẫn tuyệt đối .
Nhiều máy tính có hai hay nhiều ổ đĩa . Ngay c các máy tính các nhân cũng
có hai ổ đĩa : một ổ đĩa cứng và một ổ đĩa mềm . Khi có nhiều ổ đĩa thì một
câu hỏi ny sinh là làm cách nào để điều khiển chúng .
Một giải pháp là dặt một file hệ thống bao gồm các thông tin về bản thân lên
mỗi đĩa và giữ chúng riêng biệt . Ví dụ được mô t bởi hình sau
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
22
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Ta thấy một đĩa cứng gọi là H và một đĩa mềm gọi là gọi là D . Mỗi đĩa đều
có thư mục gốc và các file của mình . Với giải pháp này người dùng phải xác
định c thiết bị và file khi làm việc gì đó khác với ngầm định . Ví dụ để copy
một file x sang thư mục d ( ổ H là ngầm định ) người dùng có thể gõ
kì lên bất bì phần nào của nó sẽ thất bạI cho đến khi khoá được giải phóng .
Để đặt khoá thành công thì mọi byte trong vùng được khoá phải khả dụng .
Khi đặt một khoá một quá trình phải xác định xem nó có muốn ngăn cản hay
không việc không thể đặt được khoá đặt khoá . Nếu nó chọn ngăn cản thì
khoá đang tồn tại sẽ được rời đi , quá trình sẽ không ngăn cản và khoá sẽ
được đặt . Nếu quá trình chọn không khi nó không đặt được khoá thì hệ thống
sẽ trả lại ngay mã trạng thái xem khoá có thành công hay không .
Các vùng được khoá có thể đè lên nhau . Như hình dưới (a) ta thấy process A
đặt một khoá chia sẻ lên các byte từ 4 đến 7 của file . Sau đó process B đặt
một khoá chia sẻ lên các byte từ 6 đến 9 . Cuối cùng process C khoá các byte
từ 2 đến 9 . Vì các khoá là được chia sẻ lên chúng có thể cùng tồn tại .
Phạm Tuấn Minh – CNPM – K44 – CNTT – DHBKHN
24
Đồ án tốt nghiệp USB driver trên hệ điều hành Linux Red Hat
Bây giờ hãy xem điều gì sẽ xảy ra nếu một quá trình cố gắng đặt một khoá
loại trừ vào byte 9 của file vời yêu cầu ngăn cản nếu khoá thất bại . Ngay khi
hai khoá trớc đó bao phủ vùng này thì lời gọi sẽ bị ngăn cản và sẽ tiếp tục bị
ngăn cản cho đến khi cả hai quá trình B và C giải phóng khoá của chúng .
2.4. QUẢN LÝ TIẾN TRÌNH
Chỉ có các thực thể hoạt động trong một hệ thống LINUX mới là các
quá trình . LINUX xử lí rất giống với các quá trình xử lí tuần tự mà chúng ta
được nghiên cứu ở phần trước . Mỗi quá trình chạy một chương trình đơn lẻ
và có một dòng điều khiển riêng . Ngoài ra có một chương trình khác gọi là
chương trình đếm (counter) là chương trình sẽ lưu dữ dấu vết hay địa chỉ của
chỉ thị tiếp theo sẽ được thi hành .
LINUX là một hệ thống đa chương trình vì vậy sẽ có nhiều quá trình
độc lập cùng chạy ở cùng một thời điểm . Mỗi người dùng có thể có một vài
quá trình hoạt động ở cùng một thời điểm vì vậy với một hệ thống lớn có thể
có hàng trăm thậm chí hàng nghìn quá trình cùng chạy . Trong thực tế đối với
phần lớn những nhóm người dùng đơn lẻ thì ngay cả khi người dùng vắng