Thiết bị cắm và chơi có cần trình điều khiển không?
Thông tin chung về hỗ trợ cho các thiết bị plug & play
Khi BIOS đã xác định được ổ cứng, thẻ video và bàn phím, nó đã sẵn sàng để bắt đầu khởi động (tải hệ điều hành vào bộ nhớ từ đĩa cứng). Nếu bạn đã nói với BIOS rằng bạn có hệ điều hành PNP (HĐH PNP), nó sẽ bắt đầu khởi động PC như trên và để hệ điều hành hoàn thành cấu hình PNP. Mặt khác, PNP-Bios sẽ (trước khi khởi động) có thể cố gắng thực hiện phần còn lại của cấu hình PNP của thiết bị (nhưng không thông báo cho các trình điều khiển thiết bị về những gì nó đã làm). Nhưng các trình điều khiển vẫn có thể tìm ra điều này bằng cách sử dụng các chức năng có sẵn trong nhân Linux.
Thiết bị cắm và chơi có cần trình điều khiển không?
Nếu bạn không hiểu phần này, hãy đọc phần thiết bị phần cứng tiếp theo và liên lạc với chúng
Đơn giản hóa, phích cắm và chơi cho biết phần mềm (trình điều khiển thiết bị) nơi tìm các phần phần cứng (thiết bị) khác nhau như modem, card mạng, card âm thanh, v.v. Nhiệm vụ của Plug-and-Play là khớp với các thiết bị vật lý với phần mềm (trình điều khiển thiết bị) vận hành chúng và thiết lập các kênh liên lạc giữa từng thiết bị vật lý và trình điều khiển của nó. Để đạt được điều này, PNP phân bổ và đặt các “nguồn gốc xe buýt” sau đây trong phần cứng: địa chỉ I/O, vùng bộ nhớ, IRQS, Kênh DMA (chỉ dành cho Buses LPC)). 4 điều này đôi khi được gọi là “Tài nguyên thứ tự đầu tiên” hoặc chỉ là “tài nguyên”. PNP duy trì một bản ghi về những gì nó đã làm và cho phép trình điều khiển thiết bị có được thông tin này. Nếu bạn không hiểu 4 bộ phận tài chính xe buýt này là gì, hãy đọc các phần phụ sau đây của Howto: I/O Địa chỉ, IRQS, Kênh DMA, vùng bộ nhớ. Một bài viết trên Công báo Linux liên quan đến 3 trong số các tài nguyên xe buýt này là giới thiệu về IRQS, DMA và địa chỉ cơ sở. Khi các nguồn tài nguyên xe buýt này đã được chỉ định (và nếu trình điều khiển chính xác được cài đặt), trình điều khiển thực tế và “tệp” cho nó trong thư mục /dev đã sẵn sàng để sử dụng.
Việc gán PNP này của nguồn lực xe buýt đôi khi được gọi là “cấu hình” nhưng nó chỉ là một loại cấu hình cấp thấp. Thư mục /etc có nhiều tệp cấu hình nhưng hầu hết chúng không dành cho cấu hình PNP. Vì vậy, hầu hết các cấu hình của các thiết bị phần cứng không liên quan gì đến PNP hoặc nguồn lực xe buýt. Đối với, ví dụ, việc khởi tạo modem bằng “chuỗi init” hoặc đặt tốc độ của nó không phải là PNP. Do đó, khi nói về PNP, “Cấu hình” chỉ có nghĩa là một loại cấu hình nhất định. Mặc dù các tài liệu khác (chẳng hạn như cho MS Windows) chỉ đơn giản gọi là “tài nguyên” tài nguyên xe buýt, nhưng đôi khi tôi sử dụng thuật ngữ “tài nguyên xe buýt” thay vì chỉ là “tài nguyên” để phân biệt với vô số loại tài nguyên khác.
PNP là một quy trình được thực hiện bởi các phần mềm và phần cứng khác nhau. Nếu chỉ có một chương trình xử lý PNP trong Linux, thì nó sẽ đơn giản. Nhưng với Linux, mỗi trình điều khiển thiết bị thực hiện PNP của riêng mình, sử dụng phần mềm do hạt nhân cung cấp. Phần cứng BIOS của PC thực hiện PNP khi PC được cấp nguồn lần đầu tiên. Và có nhiều thứ hơn thế này.
Máy tính bao gồm CPU/bộ xử lý để thực hiện bộ nhớ điện toán và RAM để lưu trữ các chương trình và dữ liệu (để truy cập nhanh). Ngoài ra, có một số thiết bị như các loại ổ đĩa, thẻ video, bàn phím, thiết bị mạng, thẻ modem, thiết bị âm thanh, xe buýt USB, cổng nối tiếp và song song, v.v. Vào thời xa xưa, hầu hết các thiết bị đều được đặt vào các thẻ vào các khe cắm trong PC. Ngày nay, nhiều thiết bị trước đây là thẻ. Ngoài ra còn có một nguồn cung cấp năng lượng để cung cấp năng lượng điện, các xe buýt khác nhau trên bo mạch chủ để kết nối các thiết bị với CPU và một trường hợp để đưa tất cả những thứ này vào.
Thẻ cắm vào bo mạch chủ có thể chứa nhiều hơn một thiết bị. Chip bộ nhớ đôi khi cũng được coi là thiết bị nhưng không cắm và chơi theo nghĩa được sử dụng trong howto này.
Để hệ thống máy tính hoạt động đúng, mỗi thiết bị phải nằm dưới sự kiểm soát của “trình điều khiển thiết bị” của nó. Đây là phần mềm là một phần của hệ điều hành (có thể được tải dưới dạng mô -đun) và chạy trên CPU. Trình điều khiển thiết bị được liên kết với “tệp đặc biệt” trong thư mục /dev mặc dù chúng không thực sự là tệp. Họ có các tên như HDA3 (phân vùng thứ ba trên ổ cứng A), TTYS1 (cổng nối tiếp thứ hai), ETH0 (thẻ Ethernet đầu tiên), v.v.
Thiết bị ETH0 dành cho thẻ Ethernet (thẻ NIC). Trước đây nó là /dev /eth0 nhưng giờ đây nó chỉ là một thiết bị ảo trong kernel. Những gì eth0 đề cập đến phụ thuộc vào loại thẻ Ethernet bạn có. Nếu trình điều khiển là một mô -đun, nhiệm vụ này có khả năng trong bảng nhân bên trong nhưng có thể được tìm thấy trong /etc /mô -đun.Conf (được gọi là “bí danh”). Ví dụ: nếu bạn có thẻ Ethernet sử dụng chip “tulip”, bạn có thể đặt “bí danh eth0 tulip” vào /etc /mô -đun.Conf để khi máy tính của bạn yêu cầu eth0, nó tìm thấy trình điều khiển tulip. Tuy nhiên, các hạt nhân hiện đại thường có thể tìm thấy mô -đun trình điều khiển phù hợp để bạn hiếm khi cần chỉ định nó.
Để điều khiển một thiết bị, CPU (dưới điều khiển trình điều khiển thiết bị) sẽ gửi các lệnh và dữ liệu đến, và đọc trạng thái và dữ liệu từ các thiết bị khác nhau. Để làm điều này, mỗi trình điều khiển thiết bị phải biết địa chỉ của thiết bị mà nó điều khiển. Biết một địa chỉ như vậy tương đương với việc thiết lập một kênh truyền thông, mặc dù “kênh” thực sự là bus dữ liệu bên trong PC được chia sẻ với nhiều thiết bị khác.
Kênh truyền thông này thực sự phức tạp hơn một chút so với mô tả ở trên. Một “địa chỉ” thực sự là một loạt các địa chỉ, vì vậy đôi khi từ “phạm vi” được sử dụng thay vì “địa chỉ”. Thậm chí có thể có nhiều hơn một phạm vi (không có sự chồng chéo) cho một thiết bị. Ngoài ra, có một phần ngược của kênh (được gọi là ngắt) cho phép các thiết bị gửi yêu cầu “trợ giúp” khẩn cấp đến trình điều khiển thiết bị của họ.
Bus PCI có 3 không gian địa chỉ: I/O, bộ nhớ chính (bộ nhớ IO) và cấu hình.
Thông tin chung về hỗ trợ cho các thiết bị plug & play
Khi BIOS đã xác định được ổ cứng, thẻ video và bàn phím, nó đã sẵn sàng để bắt đầu khởi động (tải hệ điều hành vào bộ nhớ từ đĩa cứng). Nếu bạn đã nói với BIOS rằng bạn có hệ điều hành PNP (HĐH PNP), nó sẽ bắt đầu khởi động PC như trên và để hệ điều hành hoàn thành cấu hình PNP. Mặt khác, PNP-Bios sẽ (trước khi khởi động) có thể cố gắng thực hiện phần còn lại của cấu hình PNP của thiết bị (nhưng không thông báo cho các trình điều khiển thiết bị về những gì nó đã làm). Nhưng các trình điều khiển vẫn có thể tìm ra điều này bằng cách sử dụng các chức năng có sẵn trong nhân Linux.
Thiết bị cắm và chơi có cần trình điều khiển không?
Nếu bạn không hiểu phần này, hãy đọc phần thiết bị phần cứng tiếp theo và liên lạc với chúng
Đơn giản hóa, phích cắm và chơi cho biết phần mềm (trình điều khiển thiết bị) nơi tìm các phần phần cứng (thiết bị) khác nhau như modem, card mạng, card âm thanh, v.v. Nhiệm vụ của Plug-and-Play là khớp với các thiết bị vật lý với phần mềm (trình điều khiển thiết bị) vận hành chúng và thiết lập các kênh liên lạc giữa từng thiết bị vật lý và trình điều khiển của nó. Để đạt được điều này, PNP phân bổ và đặt các “nguồn gốc xe buýt” sau đây trong phần cứng: địa chỉ I/O, vùng bộ nhớ, IRQS, Kênh DMA (chỉ dành cho Buses LPC)). 4 điều này đôi khi được gọi là “Tài nguyên thứ tự đầu tiên” hoặc chỉ là “tài nguyên”. PNP duy trì một bản ghi về những gì nó đã làm và cho phép trình điều khiển thiết bị có được thông tin này. Nếu bạn không hiểu 4 bộ phận tài chính xe buýt này là gì, hãy đọc các phần phụ sau đây của Howto: I/O Địa chỉ, IRQS, Kênh DMA, vùng bộ nhớ. Một bài viết trên Công báo Linux liên quan đến 3 trong số các tài nguyên xe buýt này là giới thiệu về IRQS, DMA và địa chỉ cơ sở. Khi các nguồn tài nguyên xe buýt này đã được chỉ định (và nếu trình điều khiển chính xác được cài đặt), trình điều khiển thực tế và “tệp” cho nó trong thư mục /dev đã sẵn sàng để sử dụng.
Việc gán PNP này của nguồn lực xe buýt đôi khi được gọi là “cấu hình” nhưng nó chỉ là một loại cấu hình cấp thấp. Thư mục /etc có nhiều tệp cấu hình nhưng hầu hết chúng không dành cho cấu hình PNP. Vì vậy, hầu hết các cấu hình của các thiết bị phần cứng không liên quan gì đến PNP hoặc nguồn lực xe buýt. Đối với, ví dụ, việc khởi tạo một modem bằng “chuỗi init” hoặc đặt tốc độ của nó không phải là PNP. Do đó, khi nói về PNP, “Cấu hình” chỉ có nghĩa là một loại cấu hình nhất định. Mặc dù các tài liệu khác (chẳng hạn như cho MS Windows) chỉ đơn giản gọi là “tài nguyên” tài nguyên xe buýt, nhưng đôi khi tôi sử dụng thuật ngữ “tài nguyên xe buýt” thay vì chỉ là “tài nguyên” để phân biệt với vô số loại tài nguyên khác.
PNP là một quy trình được thực hiện bởi các phần mềm và phần cứng khác nhau. Nếu chỉ có một chương trình xử lý PNP trong Linux, thì nó sẽ đơn giản. Nhưng với Linux, mỗi trình điều khiển thiết bị thực hiện PNP của riêng mình, sử dụng phần mềm do hạt nhân cung cấp. Phần cứng BIOS của PC thực hiện PNP khi PC được cấp nguồn lần đầu tiên. Và có nhiều thứ hơn thế này.
Máy tính bao gồm CPU/bộ xử lý để thực hiện bộ nhớ điện toán và RAM để lưu trữ các chương trình và dữ liệu (để truy cập nhanh). Ngoài ra, có một số thiết bị như các loại ổ đĩa, thẻ video, bàn phím, thiết bị mạng, thẻ modem, thiết bị âm thanh, xe buýt USB, cổng nối tiếp và song song, v.v. Vào thời xa xưa, hầu hết các thiết bị đều được đặt vào các thẻ vào các khe cắm trong PC. Ngày nay, nhiều thiết bị trước đây là thẻ, hiện đang ở trên tàu vì chúng được chứa trong chip trên bo mạch chủ. Ngoài ra còn có một nguồn cung cấp năng lượng để cung cấp năng lượng điện, các xe buýt khác nhau trên bo mạch chủ để kết nối các thiết bị với CPU và một trường hợp để đưa tất cả những thứ này vào.
Thẻ cắm vào bo mạch chủ có thể chứa nhiều hơn một thiết bị. Chip bộ nhớ đôi khi cũng được coi là thiết bị nhưng không cắm và chơi theo nghĩa được sử dụng trong howto này.
Để hệ thống máy tính hoạt động đúng, mỗi thiết bị phải nằm dưới sự kiểm soát của “trình điều khiển thiết bị” của nó. Đây là phần mềm là một phần của hệ điều hành (có thể được tải dưới dạng mô -đun) và chạy trên CPU. Trình điều khiển thiết bị được liên kết với “tệp đặc biệt” trong thư mục /dev mặc dù chúng không thực sự là tệp. Họ có các tên như HDA3 (phân vùng thứ ba trên ổ cứng A), TTYS1 (cổng nối tiếp thứ hai), ETH0 (thẻ Ethernet đầu tiên), v.v.
Thiết bị ETH0 dành cho thẻ Ethernet (thẻ NIC). Trước đây nó là /dev /eth0 nhưng giờ đây nó chỉ là một thiết bị ảo trong kernel. Những gì eth0 đề cập đến phụ thuộc vào loại thẻ Ethernet bạn có. Nếu trình điều khiển là một mô -đun, nhiệm vụ này có khả năng trong bảng nhân bên trong nhưng có thể được tìm thấy trong /etc /mô -đun.Conf (được gọi là “bí danh”). Ví dụ: nếu bạn có thẻ Ethernet sử dụng chip “tulip”, bạn có thể đặt “bí danh eth0 tulip” vào /etc /mô -đun.Conf để khi máy tính của bạn yêu cầu eth0, nó tìm thấy trình điều khiển tulip. Tuy nhiên, các hạt nhân hiện đại thường có thể tìm thấy mô -đun trình điều khiển phù hợp để bạn hiếm khi cần chỉ định nó.
Để điều khiển một thiết bị, CPU (dưới điều khiển trình điều khiển thiết bị) sẽ gửi các lệnh và dữ liệu đến, và đọc trạng thái và dữ liệu từ các thiết bị khác nhau. Để thực hiện điều này, mỗi trình điều khiển thiết bị phải biết địa chỉ của thiết bị, nó điều khiển. Biết một địa chỉ như vậy tương đương với việc thiết lập một kênh truyền thông, mặc dù “kênh” thực sự là bus dữ liệu bên trong PC được chia sẻ với nhiều thiết bị khác.
Kênh truyền thông này thực sự phức tạp hơn một chút so với mô tả ở trên. Một “địa chỉ” thực sự là một loạt các địa chỉ để đôi khi từ “phạm vi” được sử dụng thay vì “địa chỉ”. Thậm chí có thể có nhiều hơn một phạm vi (không có sự chồng chéo) cho một thiết bị. Ngoài ra, có một phần ngược của kênh (được gọi là ngắt) cho phép các thiết bị gửi yêu cầu “trợ giúp” khẩn cấp đến trình điều khiển thiết bị của họ.
Bus PCI có 3 không gian địa chỉ: I/O, bộ nhớ chính (bộ nhớ IO) và cấu hình. Xe buýt ISA cũ thiếu không gian địa chỉ “cấu hình” chính hãng. Chỉ các không gian bộ nhớ I/0 và IO được sử dụng cho thiết bị IO. Địa chỉ cấu hình được cố định và không thể thay đổi nên chúng không cần phải được phân bổ. Để biết thêm chi tiết, xem không gian địa chỉ cấu hình PCI
Khi CPU muốn truy cập một thiết bị, nó sẽ đặt địa chỉ của thiết bị trên xe buýt chính của máy tính (cho PCI: địa chỉ/bus dữ liệu). Tất cả các loại địa chỉ (như cả I/O và bộ nhớ chính) đều chia sẻ cùng một bus bên trong PC. Nhưng sự hiện diện hoặc vắng mặt của điện áp trên một số dây chuyên dụng nhất định trong xe buýt của PC cho biết “không gian” một địa chỉ nằm trong: I/O, bộ nhớ chính, (xem phạm vi bộ nhớ) hoặc cấu hình (chỉ PCI). Điều này có một chút quá đơn giản vì nói với một thiết bị PCI rằng đó là truy cập không gian cấu hình thực sự phức tạp hơn so với mô tả ở trên. Xem không gian địa chỉ cấu hình PCI để biết chi tiết. Xem chi tiết địa chỉ để biết thêm chi tiết về địa chỉ nói chung.
Địa chỉ của thiết bị được lưu trữ trong các thanh ghi của nó trong thiết bị vật lý. Chúng có thể được thay đổi bằng phần mềm và chúng có thể bị vô hiệu hóa để thiết bị không có địa chỉ nào. Ngoại trừ địa chỉ cấu hình PCI không thể thay đổi hoặc tắt.
Các thiết bị ban đầu được đặt trong không gian địa chỉ I/O nhưng ngày nay chúng có thể sử dụng không gian trong bộ nhớ chính. Một địa chỉ I/0 đôi khi chỉ được gọi là “I/O”, “IO”, “I/O” hoặc “IO”. Các thuật ngữ “cổng I/O” hoặc “phạm vi I/O” cũng được sử dụng. Đừng nhầm lẫn các cổng IO này với “bộ nhớ IO” nằm trong bộ nhớ chính. Có hai bước chính để phân bổ các địa chỉ I/O (hoặc một số nguồn tài nguyên xe buýt khác như ngắt trên xe buýt ISA):
- Đặt địa chỉ I/O, v.v. trong phần cứng (trong một trong các thanh ghi của nó)
- Cho trình điều khiển thiết bị của nó biết địa chỉ I/O này là gì, v.v. là
Thông thường, trình điều khiển thiết bị thực hiện cả hai (loại). Trình điều khiển thiết bị không thực sự cần đặt địa chỉ I/O nếu phát hiện ra rằng địa chỉ đã được đặt trước đó (có lẽ bởi BIOS) và sẵn sàng chấp nhận địa chỉ đó. Khi trình điều khiển đã tìm ra địa chỉ nào đã được đặt trước hoặc đặt địa chỉ, thì rõ ràng nó biết địa chỉ là gì để không cần phải cho người lái biết địa chỉ -nó đã biết nó.
Quá trình hai bước ở trên (1. Đặt địa chỉ trong phần cứng. 2. Cho người lái xe biết điều đó.) là một cái gì đó giống như vấn đề hai phần là tìm số nhà của ai đó trên đường phố. Ai đó phải cài đặt một số ở mặt trước của ngôi nhà để có thể tìm thấy nó và sau đó những người có thể muốn đến địa chỉ này phải lấy (và viết ra) số nhà này để họ có thể tìm thấy ngôi nhà. Đối với máy tính, phần cứng của thiết bị trước tiên phải lấy địa chỉ vào một thanh ghi đặc biệt trong phần cứng của nó (đặt số nhà) và sau đó trình điều khiển thiết bị phải lấy địa chỉ này (viết số nhà vào sổ địa chỉ của nó). Cả hai đều phải được thực hiện, tự động bằng phần mềm hoặc bằng cách nhập dữ liệu theo cách thủ công vào các tệp cấu hình. Vấn đề có thể xảy ra khi chỉ có một trong số chúng được thực hiện đúng.
Đối với cấu hình PNP thủ công, một số người mắc lỗi chỉ làm một trong hai bước này và sau đó tự hỏi tại sao máy tính không thể tìm thấy thiết bị. Ví dụ: họ có thể sử dụng “setserial” để gán một địa chỉ cho một cổng nối tiếp mà không nhận ra rằng điều này chỉ cho người lái một địa chỉ. Nó không đặt địa chỉ trong phần cứng cổng nối tiếp. Nếu bạn nói với người lái xe sai thì bạn đang gặp rắc rối. Một cách khác để nói với trình điều khiển là cung cấp địa chỉ như một tùy chọn cho mô -đun kernel (trình điều khiển thiết bị). Nếu những gì bạn nói là sai, có thể có vấn đề. Trình điều khiển thông minh có thể phát hiện cách thức phần cứng thực sự được đặt và từ chối thông tin không chính xác do tùy chọn cung cấp (hoặc ít nhất là phát hành thông báo lỗi).
Một yêu cầu rõ ràng là trước khi trình điều khiển thiết bị có thể sử dụng địa chỉ, nó phải được đặt đầu tiên trong thiết bị vật lý (như thẻ). Vì trình điều khiển thiết bị thường khởi động ngay sau khi bạn khởi động máy tính, đôi khi chúng cố gắng truy cập thẻ (để xem nó có ở đó không, v.v.) trước khi địa chỉ được đặt trong thẻ bởi chương trình cấu hình PNP. Sau đó, bạn thấy một thông báo lỗi rằng họ không thể tìm thấy thẻ mặc dù nó ở đó (nhưng chưa có địa chỉ).
Những gì đã được nói trong một vài đoạn cuối liên quan đến địa chỉ I/O được áp dụng với lực bằng nhau cho hầu hết các nguồn tài chính xe buýt khác: phạm vi bộ nhớ, IRQS –OVERVIEW và các kênh DMA. Những điều này sẽ được giải thích trong 3 phần tiếp theo. Ngoại lệ là các ngắt trên bus PCI không được đặt bởi các thanh ghi thẻ mà thay vào đó được định tuyến (ánh xạ) đến IRQS bằng chip trên bo mạch chủ. Sau đó, thẻ PCI IRQ được chuyển đến được ghi vào thanh ghi của thẻ cho mục đích thông tin.
Để xem địa chỉ IO được sử dụng trên PC của bạn, hãy xem tệp /Proc /Ioports.
Nhiều thiết bị được gán không gian địa chỉ trong bộ nhớ chính. Đôi khi nó được gọi là “bộ nhớ chia sẻ” hoặc “IO được ánh xạ bộ nhớ” hoặc “bộ nhớ IO”. Bộ nhớ này nằm ở bên trong thiết bị vật lý nhưng máy tính truy cập nó giống như nó sẽ truy cập bộ nhớ trên chip bộ nhớ. Khi thảo luận về nguồn lực xe buýt, nó thường được gọi là “bộ nhớ”, “mem” hoặc “iomem”. Ngoài việc sử dụng “bộ nhớ” như vậy, một thiết bị như vậy cũng có thể sử dụng không gian địa chỉ IO thông thường. Để xem Mem đang sử dụng gì trên máy tính của bạn, hãy xem /Proc /Iomem. “Tệp” này bao gồm bộ nhớ được sử dụng bởi các chip bộ nhớ RAM thông thường của bạn để nó hiển thị phân bổ bộ nhớ nói chung và không chỉ phân bổ IOMEM. Nếu bạn thấy một số lạ thay vì tên, có khả năng số lượng thiết bị PCI mà bạn có thể xác minh bằng cách nhập “LSPCI”.
Khi bạn chèn một thẻ sử dụng IOMEM, bạn cũng có hiệu lực chèn mô -đun bộ nhớ cho bộ nhớ chính. Một địa chỉ cao được chọn cho nó bởi PNP để nó không mâu thuẫn với các mô -đun bộ nhớ chính (chip). Bộ nhớ này có thể là ROM (chỉ đọc bộ nhớ) hoặc bộ nhớ được chia sẻ. Bộ nhớ chia sẻ được chia sẻ giữa thiết bị và CPU (chạy trình điều khiển thiết bị) giống như không gian địa chỉ IO được chia sẻ giữa thiết bị và CPU. Bộ nhớ được chia sẻ này đóng vai trò là phương tiện của dữ liệu “chuyển” giữa thiết bị và bộ nhớ chính. Đó là đầu vào-đầu ra (IO) nhưng nó không được thực hiện trong không gian IO. Cả thẻ và trình điều khiển thiết bị đều cần biết phạm vi bộ nhớ.
ROM (chỉ đọc bộ nhớ) trên thẻ là một loại IOMEM khác. Nó có thể là một chương trình (có thể là một trình điều khiển thiết bị) sẽ được sử dụng với thiết bị. Nó có thể là mã khởi tạo để người điều khiển thiết bị vẫn được yêu cầu. Hy vọng rằng nó sẽ hoạt động với Linux và không chỉ MS Windows. Nó có thể cần phải được che mờ, điều đó có nghĩa là nó được sao chép vào chip bộ nhớ chính của bạn để chạy nhanh hơn. Một khi nó bị che mờ, nó không còn “chỉ đọc”.
Sau khi đọc điều này, bạn có thể muốn đọc các ngắt -chi tiết để biết thêm chi tiết. Sau đây được cố ý quá mức: Bên cạnh địa chỉ, còn có một số ngắt để giải quyết (như IRQ 5). Nó được gọi là số IRQ (yêu cầu ngắt) hoặc chỉ là “irq”. Chúng tôi đã đề cập ở trên rằng trình điều khiển thiết bị phải biết địa chỉ của thẻ để có thể giao tiếp với nó.
Nhưng những gì về giao tiếp theo hướng ngược lại? Giả sử thiết bị cần cho biết trình điều khiển thiết bị của nó ngay lập tức. Ví dụ: thiết bị có thể nhận được rất nhiều byte dành cho bộ nhớ chính và bộ đệm của nó được sử dụng để lưu trữ các byte này gần như đầy. Do đó, thiết bị cần thông báo cho trình điều khiển của nó để tìm nạp các byte này cùng một lúc trước khi bộ đệm tràn ra từ luồng byte đến. Một ví dụ khác là báo hiệu cho người lái rằng thiết bị đã gửi xong một loạt byte và hiện đang chờ thêm một số byte từ trình điều khiển để nó cũng có thể gửi chúng.
Thiết bị nên nhanh chóng báo hiệu trình điều khiển của nó như thế nào? Nó có thể không thể sử dụng bus dữ liệu chính vì nó có thể đã được sử dụng. Thay vào đó, nó đặt một điện áp lên một dây ngắt chuyên dụng (còn được gọi là đường dây hoặc dấu vết) thường được dành riêng cho thiết bị đó. Tín hiệu điện áp này được gọi là yêu cầu ngắt (IRQ) hoặc chỉ là “ngắt”. Có tương đương 16 (hoặc 24, v.v.) Các dây như vậy trong PC và mỗi dây dẫn (gián tiếp) đến một trình điều khiển thiết bị nhất định. Mỗi dây có số IRQ (yêu cầu ngắt) duy nhất. Thiết bị phải đặt ngắt của nó lên đúng dây và trình điều khiển thiết bị phải lắng nghe ngắt trên dây chính xác. Đoạn nào thiết bị gửi “yêu cầu trợ giúp” như vậy được xác định bởi số IRQ được lưu trữ trong thiết bị. Cùng một số IRQ này phải được trình điều khiển thiết bị biết để trình điều khiển thiết bị biết nên nghe dòng IRQ nào.
Khi trình điều khiển thiết bị bị ngắt từ thiết bị, nó phải tìm hiểu lý do tại sao ngắt được ban hành và có hành động thích hợp để phục vụ ngắt. Trên xe buýt ISA, mỗi thiết bị thường cần số IRQ duy nhất của riêng mình. Đối với xe buýt PCI và các trường hợp đặc biệt khác, việc chia sẻ IRQS được cho phép (hai hoặc nhiều thiết bị PCI có thể có cùng số IRQ). Ngoài ra, đối với PCI, mỗi thiết bị PCI có dây “ngắt PCI” cố định. Nhưng một con chip định tuyến có thể lập trình ánh xạ các dây PCI thành các ngắt kiểu isa. Xem các ngắt -chi tiết để biết chi tiết về cách tất cả các hoạt động trên.
- Đọc một đoạn byte từ không gian bộ nhớ I/O của thiết bị và đặt các byte này vào chính CPU
- Viết những byte này từ CPU sang bộ nhớ chính
Với DMA, đó là một quá trình gửi các byte trực tiếp từ thiết bị đến bộ nhớ. Thiết bị phải có khả năng DMA được tích hợp vào phần cứng của nó và do đó không phải tất cả các thiết bị đều có thể làm DMA. Trong khi DMA đang diễn ra, CPU không thể làm quá nhiều vì xe buýt chính đang được sử dụng bởi việc chuyển DMA.
Xe buýt ISA cũ có thể làm chậm DMA trong khi xe buýt PCI không “DMA” bằng cách làm chủ xe buýt. Xe buýt LPC có cả DMA cũ và DMA mới (làm chủ xe buýt). Trên xe buýt PCI, điều chính xác hơn nên được gọi là “Làm chủ xe buýt” thường được gọi là “Ultra DMA”, “BM-DNA”, “UDMA”, hoặc chỉ là “DMA”. Nó không sử dụng bất kỳ số kênh nào vì tổ chức của xe buýt PCI là phần cứng PCI biết thiết bị nào hiện là chủ xe và thiết bị nào đang yêu cầu trở thành bậc thầy xe buýt. Do đó, không có phân bổ tài nguyên của các kênh DMA cho xe buýt PCI và không có tài nguyên kênh DMA nào cho xe buýt này. Xe buýt LPC (số pin thấp) được cho là được cấu hình bởi BIOS để người dùng không cần phải quan tâm đến các kênh DMA của mình.
Điều này chỉ dành cho xe buýt LPC và xe buýt cũ của ISA. Khi một thiết bị muốn thực hiện DMA, nó sẽ đưa ra một yêu cầu DMA bằng cách sử dụng dây yêu cầu DMA chuyên dụng giống như một yêu cầu ngắt. DMA thực sự có thể đã được xử lý bằng cách sử dụng các ngắt nhưng điều này sẽ giới thiệu một số sự chậm trễ để thực hiện nó nhanh hơn bằng cách có một loại ngắt đặc biệt được gọi là DMA-RQUEST. Giống như các ngắt, các yêu cầu DMA được đánh số để xác định thiết bị nào đang thực hiện yêu cầu. Con số này được gọi là kênh DMA. Vì DMA chuyển tất cả sử dụng bus chính (và chỉ có một người có thể chạy cùng một lúc), tất cả họ thực sự sử dụng cùng một kênh cho luồng dữ liệu nhưng số “kênh DMA” phục vụ để xác định ai đang sử dụng “kênh”. Các thanh ghi phần cứng tồn tại trên bo mạch chủ lưu trữ trạng thái hiện tại của từng “kênh”. Do đó, để phát hành một yêu cầu DMA, thiết bị phải biết số kênh DMA của nó phải được lưu trữ trong một thanh ghi đặc biệt trên thiết bị vật lý.
Do đó, trình điều khiển thiết bị phải được “gắn” theo một cách nào đó với phần cứng mà họ điều khiển. Điều này được thực hiện bằng cách phân bổ nguồn gốc xe buýt (I/O, bộ nhớ, IRQ, DMA) cho cả thiết bị vật lý và cho phép trình điều khiển thiết bị tìm hiểu về nó. Ví dụ: một cổng nối tiếp chỉ sử dụng 2 tài nguyên: IRQ và địa chỉ I/O. Cả hai giá trị này phải được cung cấp cho trình điều khiển thiết bị và thiết bị vật lý. Trình điều khiển (và thiết bị của nó) cũng được đặt tên trong thư mục /dev (như TTYS1). Địa chỉ và số IRQ được lưu trữ bởi thiết bị vật lý trong các thanh ghi cấu hình trên thẻ của nó (hoặc trong chip trên bo mạch chủ). Phần cứng cũ (vào giữa những năm 1990) đã sử dụng các công tắc (hoặc người nhảy) để đặt IRQ và địa chỉ vật lý trong phần cứng. Cài đặt này vẫn được cố định cho đến khi ai đó tháo nắp của máy tính và di chuyển bộ nhảy.
Nhưng đối với trường hợp PNP (không có máy nhảy), dữ liệu thanh ghi cấu hình thường bị mất khi PC được bật nguồn (tắt) để dữ liệu tài nguyên bus phải được cung cấp cho mỗi thiết bị mỗi khi PC được bật.
Máy tính lý tưởng
Kiến trúc của PC chỉ cung cấp một số lượng tài nguyên hạn chế: các kênh của IRQ, DMA, địa chỉ I/O và bộ nhớ. Nếu chỉ có một thiết bị số hạn chế và tất cả chúng đều được sử dụng các giá trị nguồn tài nguyên bus được tiêu chuẩn hóa (chẳng hạn như địa chỉ I/O duy nhất và số IRQ) sẽ không có vấn đề gì khi gắn trình điều khiển thiết bị vào thiết bị. Mỗi thiết bị sẽ có một tài nguyên cố định không xung đột với bất kỳ thiết bị nào khác trên máy tính của bạn. Không có hai thiết bị nào có cùng địa chỉ, sẽ không có xung đột IRQ trên xe buýt ISA, v.v. Mỗi trình điều khiển sẽ được lập trình với các địa chỉ duy nhất, IRQ, v.v. được mã hóa cứng vào chương trình. Cuộc sống sẽ đơn giản.
Một cách khác để ngăn chặn xung đột địa chỉ sẽ là có số khe của mỗi thẻ như một phần của địa chỉ. Do đó, không thể có xung đột địa chỉ giữa hai thẻ khác nhau (vì chúng ở các vị trí khác nhau). Thiết kế thẻ sẽ không cho phép xung đột địa chỉ giữa các chức năng khác nhau của thẻ. Nó chỉ ra rằng không gian địa chỉ cấu hình (được sử dụng cho yêu cầu tài nguyên và phân công) thực sự. Nhưng nó không được thực hiện cho các địa chỉ I/O cũng như các vùng bộ nhớ. Chia sẻ IRQS như trên xe buýt PCI cũng tránh được xung đột nhưng có thể gây ra các vấn đề khác.
Máy tính thực sự
Nhưng kiến trúc PC có vấn đề xung đột. Sự gia tăng số lượng thiết bị (bao gồm nhiều thiết bị cùng loại) có xu hướng tăng xung đột tiềm tàng. Đồng thời, việc giới thiệu xe buýt PCI, trong đó hai hoặc nhiều thiết bị có thể chia sẻ cùng một ngắt và giới thiệu nhiều ngắt nhiều hơn, có xu hướng giảm xung đột. Kết quả tổng thể, do đến PCI, đã giảm xung đột vì tài nguyên khan hiếm là IRQS. Tuy nhiên, ngay cả trên xe buýt PCI cũng hiệu quả hơn để tránh chia sẻ IRQ. Trong một số trường hợp các ngắt xảy ra liên tiếp và phải được hành động nhanh (như chia sẻ âm thanh) có thể gây ra sự suy giảm hiệu suất. Vì vậy, thật không tốt khi gán tất cả các thiết bị PCI giống nhau, nhiệm vụ cần được cân bằng. Tuy nhiên, một số người thấy rằng tất cả các thiết bị PCI của họ đều ở trên cùng một IRQ.
Vì vậy, các thiết bị cần có một số linh hoạt để chúng có thể được đặt thành bất kỳ địa chỉ nào, IRQ, v.v. là cần thiết để tránh mọi xung đột và đạt được sự cân bằng. Nhưng một số IRQ và địa chỉ là khá chuẩn, chẳng hạn như các địa chỉ cho đồng hồ và bàn phím. Những điều này không cần sự linh hoạt như vậy.
Bên cạnh vấn đề phân bổ mâu thuẫn của nguồn lực xe buýt, có một vấn đề mắc sai lầm khi nói với người lái thiết bị về nguồn lực xe buýt là gì. Điều này có nhiều khả năng xảy ra đối với trường hợp cấu hình thủ công lỗi thời trong đó người dùng nhập vào tài nguyên được sử dụng vào tệp cấu hình được lưu trữ trên HardDrive. Điều này thường hoạt động tốt khi các tài nguyên được đặt bởi các máy nhảy trên thẻ (với điều kiện người dùng biết cách chúng được đặt và không phạm sai lầm khi gõ dữ liệu này vào các tệp cấu hình). Nhưng với các tài nguyên được đặt bởi phần mềm PNP, chúng có thể không phải lúc nào cũng được đặt giống nhau và điều này có thể có nghĩa là rắc rối cho bất kỳ cấu hình thủ công nào trong đó người dùng gõ vào các giá trị của tài chính xe buýt được đặt bởi PNP.
Việc phân bổ các nguồn gốc xe buýt, nếu được thực hiện chính xác, thiết lập các kênh giao tiếp không xung đột giữa phần cứng vật lý và trình điều khiển thiết bị của họ. Ví dụ: nếu một phạm vi địa chỉ I/O nhất định (tài nguyên) được phân bổ cho cả trình điều khiển thiết bị và một phần cứng, thì điều này đã thiết lập một kênh liên lạc một chiều giữa chúng. Trình điều khiển có thể gửi các lệnh và thông tin khác cho thiết bị. Nó thực sự là nhiều hơn giao tiếp một chiều vì trình điều khiển có thể nhận thông tin từ thiết bị bằng cách đọc các thanh ghi của nó. Nhưng thiết bị không thể bắt đầu bất kỳ giao tiếp nào theo cách này. Để bắt đầu giao tiếp, thiết bị cần IRQ để nó có thể gửi ngắt cho trình điều khiển của nó. Điều này tạo ra một kênh giao tiếp hai chiều trong đó cả trình điều khiển và thiết bị vật lý có thể bắt đầu giao tiếp.
Thuật ngữ cắm và chơi (PNP) có ý nghĩa khác nhau. Theo nghĩa rộng, nó chỉ là cấu hình tự động trong đó người ta chỉ cắm vào một thiết bị và nó tự cấu hình. Theo nghĩa được sử dụng trong howto này, PNP có nghĩa là cấu hình nguồn gốc bus PNP (đặt chúng trong các thiết bị vật lý) và cho các trình điều khiển thiết bị biết về nó. Đối với trường hợp của Linux, nó thường chỉ là một trình điều khiển xác định cách thức BIOS đã thiết lập nguồn gốc xe buýt và nếu cần, người lái đưa ra lệnh để thay đổi (đặt lại). “PNP” thường chỉ có nghĩa là PNP trên xe buýt ISA để thông báo từ ISAPNP: “Không tìm thấy thiết bị cắm và chơi”. Các thông số kỹ thuật PCI tiêu chuẩn (được phát minh trước khi đặt thuật ngữ “PNP”) cung cấp tương đương PNP cho xe buýt PCI.
PNP khớp với các thiết bị với trình điều khiển thiết bị của họ và chỉ định các kênh liên lạc của họ (bằng cách phân bổ nguồn lực xe buýt). Nó giao tiếp điện tử với các thanh ghi cấu hình nằm bên trong các thiết bị vật lý bằng cách sử dụng giao thức được tiêu chuẩn hóa. Trên xe buýt ISA trước khi cắm và chơi, các nguồn lực xe buýt trước đây được đặt trong các thiết bị phần cứng bởi máy nhảy hoặc công tắc. Đôi khi, bộ phận tài nguyên xe buýt có thể được đặt vào phần cứng bằng điện tử bởi một trình điều khiển (thường chỉ được viết cho hệ điều hành MS nhưng trong những trường hợp hiếm hoi được hỗ trợ bởi trình điều khiển Linux). Đây là một cái gì đó giống như PNP nhưng không có giao thức được tiêu chuẩn hóa được sử dụng để nó không thực sự PNP. Một số thẻ có cài đặt nhảy có thể bị ghi đè bởi phần mềm như vậy. Đối với Linux trước PNP, hầu hết các trình điều khiển phần mềm đã được chỉ định nguồn lực bus bằng các tệp cấu hình (hoặc tương tự) hoặc bằng cách thăm dò thiết bị tại các địa chỉ nơi nó dự kiến sẽ cư trú. Nhưng các phương pháp này vẫn còn được sử dụng ngày nay để cho phép Linux sử dụng phần cứng không PNP cũ. Và đôi khi các phương pháp cũ này vẫn được sử dụng ngày nay trên phần cứng PNP (sau khi BIOS đã gán tài nguyên cho phần cứng bằng các phương thức PNP).
Bus PCI giống như PNP ngay từ đầu, nhưng nó thường không được gọi là PNP hoặc “cắm và chơi” với kết quả là PNP thường có nghĩa là PNP trên xe buýt ISA. Nhưng PNP trong tài liệu này thường có nghĩa là PNP trên xe buýt ISA hoặc PCI.
Đây là cách PNP nên hoạt động trong lý thuyết. Chương trình cấu hình PNP giả thuyết tìm thấy tất cả các thiết bị PNP và hỏi mỗi thiết bị có nguồn lực xe buýt nào. Sau đó, nó kiểm tra những tài chính của xe buýt (IRQS, v.v.) nó phải cho đi. Tất nhiên, nếu nó đã dành riêng các nguồn lực xe buýt được sử dụng bởi các thiết bị không PNP (Legacy) (nếu nó biết về chúng). Sau đó, nó sử dụng một số tiêu chí (không được chỉ định bởi các thông số kỹ thuật PNP) để đưa ra các nguồn lực xe buýt để không có xung đột và để tất cả các thiết bị có được những gì họ cần (nếu có thể). Sau đó, nó gián tiếp cho mỗi thiết bị vật lý biết nguồn lực bus được gán cho nó và các thiết bị tự thiết lập để chỉ sử dụng. Sau đó, thiết bị trình điều khiển bằng cách nào đó tìm ra tài nguyên xe buýt mà thiết bị của họ sử dụng và do đó có thể giao tiếp hiệu quả với các thiết bị họ điều khiển.
Ví dụ: giả sử thẻ cần một ngắt (số IRQ) và 1 MB bộ nhớ chia sẻ. Chương trình PNP đọc yêu cầu này từ các thanh ghi cấu hình trên thẻ. Sau đó, nó gán thẻ IRQ5 và 1 MB không gian địa chỉ bộ nhớ, bắt đầu tại địa chỉ 0xe9000000. Chương trình PNP cũng đọc thông tin xác định từ thẻ cho biết đó là loại thiết bị nào, số ID của nó, v.v. Sau đó nó trực tiếp hoặc gián tiếp cho người lái thiết bị thích hợp những gì nó đã làm. Nếu chính trình điều khiển đang thực hiện PNP, thì không cần phải tìm trình điều khiển cho thiết bị (vì trình điều khiển của nó đã chạy). Nếu không thì một trình điều khiển thiết bị phù hợp cần được tìm thấy và sớm hay muộn được nói về cách cấu hình thiết bị của nó.
Không phải lúc nào cũng đơn giản vì thẻ (hoặc bảng định tuyến cho PCI) có thể chỉ định rằng nó chỉ có thể sử dụng một số số IRQ hoặc 1 MB bộ nhớ phải nằm trong một phạm vi địa chỉ nhất định. Các chi tiết khác nhau đối với xe buýt PCI và ISA có độ phức tạp hơn trên xe buýt ISA.
Một cách thường được sử dụng để phân bổ tài nguyên là bắt đầu với một thiết bị và phân bổ nó. Sau đó làm tương tự cho thiết bị tiếp theo, v.v. Sau đó, nếu cuối cùng tất cả các thiết bị đều có được tài nguyên được phân bổ mà không có xung đột, thì tất cả đều ổn. Nhưng nếu phân bổ một tài nguyên cần thiết sẽ tạo ra một cuộc xung đột, thì cần phải quay lại và cố gắng thực hiện một số thay đổi trong phân bổ trước để có được tài nguyên xe buýt cần thiết. Cái này được gọi là tái cân bằng. Linux không cân bằng lại nhưng trong một số trường hợp, Windows MS. Đối với Linux, tất cả điều này được thực hiện bởi BIOS và/hoặc Kernel và/hoặc Trình điều khiển thiết bị. Trong Linux, trình điều khiển thiết bị không nhận được phân bổ tài nguyên cuối cùng cho đến khi người lái khởi động, vì vậy một cách để tránh xung đột chỉ là không bắt đầu bất kỳ thiết bị nào có thể gây ra xung đột. Tuy nhiên, BIOS thường phân bổ tài nguyên cho thiết bị vật lý trước khi Linux thậm chí được khởi động và kernel kiểm tra các thiết bị PCI để giải quyết xung đột trong thời gian khởi động.
Có một số phím tắt mà phần mềm PNP có thể sử dụng. Một là theo dõi cách nó được chỉ định nguồn lực bus ở cấu hình cuối cùng (khi máy tính được sử dụng lần cuối) và sử dụng lại điều này. Bioss làm điều này cũng như MS Windows và điều này nhưng Linux tiêu chuẩn không. Nhưng theo một cách nào đó, nó thường sử dụng những gì BIOS đã làm. Windows lưu trữ thông tin này trong “Đăng ký” trên đĩa cứng và BIOS PNP/PCI lưu trữ nó trong bộ nhớ không bay hơi trong PC của bạn (được gọi là ESCD; xem cơ sở dữ liệu ESCD của BIOS). Một số người nói rằng không có sổ đăng ký (như Linux) tốt hơn vì với Windows, sổ đăng ký có thể bị hỏng và rất khó để chỉnh sửa. Nhưng PNP trong Linux cũng có vấn đề.
Trong khi MS Windows (ngoại trừ Windows 3.X và NT4) là PNP, Linux ban đầu không phải là HĐH PNP nhưng đã dần trở thành HĐH PNP. PNP ban đầu làm việc cho Linux vì PNP BIOS sẽ định cấu hình nguồn lực xe buýt và trình điều khiển thiết bị sẽ tìm hiểu (sử dụng các chương trình do nhân Linux cung cấp) những gì BIOS đã làm. Ngày nay, hầu hết các tài xế có thể phát hành các lệnh để thực hiện cấu hình tài nguyên xe buýt của riêng họ và không cần phải luôn luôn dựa vào BIOS. Thật không may, một tài xế có thể lấy một nguồn lực xe buýt mà một thiết bị khác sẽ cần sau này. Một số trình điều khiển thiết bị có thể lưu trữ cấu hình cuối cùng mà họ đã sử dụng trong tệp cấu hình và sử dụng nó vào lần tiếp theo máy tính được bật.
Nếu phần cứng thiết bị ghi nhớ cấu hình trước đó, thì sẽ không có bất kỳ phần cứng nào để định cấu hình PNP tại thời gian khởi động tiếp theo. Nhưng phần cứng dường như quên cấu hình của nó khi tắt nguồn. Một số thiết bị chứa cấu hình mặc định (nhưng không nhất thiết là thiết bị được sử dụng cuối cùng). Do đó, một thiết bị PNP cần được cấu hình lại mỗi khi PC được bật. Ngoài ra, nếu một thiết bị mới đã được thêm vào, thì nó cũng cần phải được cấu hình. Phân bổ nguồn gốc xe buýt cho thiết bị mới này có thể liên quan đến việc lấy một số nguồn lực xe buýt ra khỏi thiết bị hiện có và chỉ định các nguồn tài nguyên xe buýt thay thế thiết bị hiện có mà nó có thể sử dụng thay thế. Hiện tại, Linux không thể phân bổ cho sự tinh tế này (và MS Windows XP cũng có thể không thể làm điều đó).
Khi PC lần đầu tiên bật chip BIOS sẽ chạy chương trình của mình để bắt đầu máy tính (bước đầu tiên là kiểm tra phần cứng bo mạch chủ). Nếu hệ điều hành được lưu trữ trên ổ cứng (như bình thường) thì BIOS phải biết về ổ cứng. Nếu ổ cứng là PNP thì BIOS có thể sử dụng các phương thức PNP để tìm nó. Ngoài ra, để cho phép người dùng định cấu hình thủ công các CMO của BIOS và trả lời các thông báo lỗi khi máy tính khởi động, màn hình (thẻ video) và bàn phím cũng được yêu cầu. Do đó, BIOS phải luôn luôn là các thiết bị cấu hình PNP cần thiết để tải hệ điều hành từ ổ cứng.
Khi BIOS đã xác định được ổ cứng, thẻ video và bàn phím, nó đã sẵn sàng để bắt đầu khởi động (tải hệ điều hành vào bộ nhớ từ đĩa cứng). Nếu bạn đã nói với BIOS rằng bạn có hệ điều hành PNP (HĐH PNP), nó sẽ bắt đầu khởi động PC như trên và để hệ điều hành hoàn thành cấu hình PNP. Mặt khác, PNP-Bios sẽ (trước khi khởi động) có thể cố gắng thực hiện phần còn lại của cấu hình PNP của thiết bị (nhưng không thông báo cho các trình điều khiển thiết bị về những gì nó đã làm). Nhưng các trình điều khiển vẫn có thể tìm ra điều này bằng cách sử dụng các chức năng có sẵn trong nhân Linux.
Để xem những gì trên loại xe buýt PCI LSPCI hoặc LSPCI -VV . Hoặc gõ scanpci -v cho cùng một thông tin trong định dạng mã số trong đó thiết bị được hiển thị theo số (chẳng hạn như: “Thiết bị 0x122d” thay vì theo tên, v.v. Trong những trường hợp hiếm hoi, Scanpci sẽ tìm thấy một thiết bị mà LSPCI không thể tìm thấy.
Các tin nhắn thời gian khởi động trên các thiết bị hiển thị hiển thị của bạn đã được tìm thấy trên các xe buýt khác nhau (sử dụng ca làm việc để sao lưu thông qua chúng). Xem tin nhắn thời gian khởi động
ISA là xe buýt cũ của các PC tương thích IBM cũ trong khi PCI là một chiếc xe buýt mới hơn và nhanh hơn từ Intel. Xe buýt PCI được thiết kế cho cái ngày nay được gọi là PNP. Điều này giúp bạn dễ dàng (so với xe buýt ISA) để tìm hiểu cách thức tài nguyên xe buýt PNP đã được gán cho các thiết bị phần cứng.
Đối với xe buýt ISA, có một vấn đề thực sự với việc triển khai PNP vì không ai có PNP khi xe buýt được thiết kế và hầu như không có địa chỉ I/O nào có sẵn để PNP sử dụng để gửi thông tin cấu hình đến thiết bị vật lý. Kết quả là, cách PNP được đưa lên xe buýt ISA rất phức tạp. Toàn bộ sách đã được viết về nó. Xem Sách PNP. Trong số những thứ khác, nó yêu cầu mỗi thiết bị PNP được chỉ định một “tay cầm” tạm thời bởi chương trình PNP để người ta có thể giải quyết nó để định cấu hình PNP. Gán các “tay cầm” này là cuộc gọi “cô lập”. Xem sự cô lập của Isa để biết các chi tiết phức tạp.
Khi xe buýt ISA bị tuyệt chủng, PNP sẽ dễ dàng hơn một chút. Sau đó, nó sẽ không chỉ dễ dàng tìm hiểu cách BIOS đã cấu hình phần cứng, mà sẽ có ít xung đột hơn vì PCI có thể chia sẻ các ngắt. Vẫn sẽ có nhu cầu phù hợp với trình điều khiển thiết bị với các thiết bị và cũng cần phải định cấu hình các thiết bị được thêm vào khi PC hoạt động và chạy. Vấn đề nghiêm trọng của một số thiết bị không được Linux hỗ trợ sẽ vẫn còn.
Linux đã gặp vấn đề nghiêm trọng trong quá khứ trong việc đối phó với PNP nhưng hầu hết những vấn đề đó đã được giải quyết (vào giữa năm 2004). Linux đã đi từ một hệ thống không PNP ban đầu, đến một hệ thống có thể là PNP nếu một số tùy chọn nhất định được chọn khi biên dịch hạt nhân. BIOS có thể gán IRQ nhưng Linux cũng có thể gán một số trong số chúng hoặc thậm chí chỉ định lại những gì BIOS đã làm. Phần cấu hình của ACPI (cấu hình trước và giao diện nguồn) được thiết kế để giúp các hệ điều hành dễ dàng thực hiện cấu hình của riêng họ. Linux có thể sử dụng ACPI nếu nó được chọn khi hạt nhân được biên dịch.
Trong Linux, đó là truyền thống để mỗi trình điều khiển thiết bị thực hiện cấu hình cấp thấp của riêng nó. Điều này thật khó khăn cho đến khi Linux cung cấp phần mềm trong hạt nhân mà các trình điều khiển có thể sử dụng để giúp chúng dễ dàng hơn. Hôm nay (2005), nó đã đạt đến điểm mà trình điều khiển chỉ cần gọi hàm kernel: pci_enable_device () và thiết bị được cấu hình bằng cách được bật và có cả IRQ (nếu cần) và địa chỉ được gán cho thiết bị. Nhiệm vụ này có thể là những gì trước đây được chỉ định bởi BIOS hoặc những gì hạt nhân đã dành cho nó trước đây khi thiết bị PCI hoặc ISAPNP được phát hiện bởi hạt nhân. Thậm chí còn có một tùy chọn ACPI để Linux gán tất cả các thiết bị IRQ trong thời gian khởi động.
Vì vậy, ngày nay, theo một nghĩa nào đó, các trình điều khiển vẫn đang thực hiện cấu hình nhưng họ có thể làm điều đó bằng cách chỉ nói với Linux để làm điều đó (và Linux có thể không cần phải làm nhiều vì đôi khi nó có thể sử dụng những gì đã được thiết lập bởi BIOS hoặc Linux). Vì vậy, nó thực sự là phần không có thiết bị của hạt nhân Linux đang thực hiện hầu hết các cấu hình. Do đó, có thể đúng khi gọi Linux là hệ điều hành PNP, ít nhất là đối với các kiến trúc máy tính phổ biến.
Sau đó, khi một trình điều khiển thiết bị tìm thấy thiết bị của nó, nó yêu cầu xem địa chỉ nào và IRQ đã được chỉ định (bởi BIOS và/hoặc Linux) và thông thường chỉ chấp nhận chúng. Nhưng nếu người lái muốn làm như vậy, nó có thể cố gắng thay đổi địa chỉ, sử dụng các chức năng do hạt nhân cung cấp. Nhưng kernel sẽ không chấp nhận giải quyết xung đột với các thiết bị khác hoặc các thiết bị mà phần cứng không thể hỗ trợ. Khi PC khởi động, bạn có thể lưu ý các tin nhắn trên màn hình cho thấy một số trình điều khiển thiết bị Linux đã tìm thấy thiết bị phần cứng của họ và phạm vi IRQ và địa chỉ là gì.
Do đó, kernel cung cấp cho các trình điều khiển các chức năng (mã chương trình) mà các trình điều khiển có thể sử dụng để tìm hiểu xem thiết bị của họ có tồn tại như thế nào không, nó được cấu hình và các chức năng để sửa đổi cấu hình nếu cần. Kernel 2.2 chỉ có thể làm điều này cho xe buýt PCI nhưng kernel 2.4 Có tính năng này cho cả xe buýt ISA và PCI (với điều kiện là các tùy chọn PNP và PCI thích hợp đã được chọn khi biên dịch hạt nhân). Kernel 2.6 ra mắt với việc sử dụng ACPI tốt hơn. Điều này không có nghĩa là đảm bảo rằng tất cả các trình điều khiển sẽ sử dụng đầy đủ và chính xác. Và các thiết bị di sản mà BIOS không biết, có thể không được cấu hình cho đến khi bạn (hoặc một số tiện ích cấu hình) đặt địa chỉ của nó, IRQ, v.v. thành một tệp cấu hình.
Ngoài ra, kernel giúp tránh xung đột tài nguyên bằng cách không cho phép hai thiết bị mà nó biết về việc sử dụng cùng một nguồn lực xe buýt cùng một lúc. Ban đầu điều này chỉ dành cho IRQ và DMA nhưng bây giờ nó cũng dành cho các tài nguyên địa chỉ.
Nếu bạn có xe buýt ISA cũ, chương trình ISAPNP sẽ chạy tại Boottime để tìm và định cấu hình các thiết bị PNP trên xe buýt ISA. Nhìn vào các tin nhắn với “DMESG”.
Để xem những gì giúp hạt nhân có thể cung cấp cho các trình điều khiển thiết bị, hãy xem thư mục /usr /. /. /Tài liệu trong đó một trong những . chứa từ “kernel-doc” hoặc tương tự. Cảnh báo: Tài liệu ở đây có xu hướng lỗi thời vì vậy để có được thông tin mới nhất bạn cần đọc tin nhắn trên danh sách gửi thư được gửi bởi các nhà phát triển kernel và có thể là mã máy tính mà họ viết bao gồm cả bình luận. Trong thư mục tài liệu kernel này, xem PCI.TXT (“Cách viết trình điều khiển Linux PCI”) và tệp:/usr/bao gồm/linux/pci.h. Trừ khi bạn là một chuyên gia trình điều khiển và biết lập trình C, các tệp này được viết thật khó khăn đến nỗi chúng sẽ không thực sự cho phép bạn viết trình điều khiển. Nhưng nó sẽ cho bạn một số ý tưởng về những chức năng loại PNP có sẵn cho trình điều khiển sử dụng.
Cho hạt nhân 2.4 Xem isapnp.TXT. Cho hạt nhân 2.6, isapnp.TXT được thay thế bởi PNP.TXT hoàn toàn khác với isapnp.TXT và cũng giao dịch với xe buýt PCI. Cũng xem cuốn sách O’Reilly: Trình điều khiển thiết bị Linux, tái bản lần thứ 3., 2005. Toàn văn có trên internet.
Nhưng có một số điều mà một hệ điều hành PNP thực sự có thể xử lý tốt hơn:
- Phân bổ nguồn lực xe buýt khi chúng bị thiếu hụt bằng cách phân bổ lại các nguồn lực nếu cần thiết
- Đối phó với việc chọn trình điều khiển khi có nhiều hơn một trình điều khiển cho một thiết bị vật lý
Vì đó là mỗi người lái xe, một tài xế có thể lấy nguồn lực xe buýt cần thiết cho các thiết bị khác (nhưng chưa được phân bổ cho họ bởi hạt nhân). Do đó, một hạt nhân PNP linux tinh vi hơn sẽ tốt hơn, trong đó kernel đã thực hiện phân bổ sau khi tất cả các yêu cầu được đưa vào. Một giải pháp khác sẽ là cố gắng phân bổ lại các tài nguyên đã được chỉ định nếu một thiết bị không thể lấy tài nguyên mà nó yêu cầu.
Vấn đề “Thiếu tài trợ xe buýt” đang trở thành vấn đề ít hơn vì hai lý do: một lý do là xe buýt PCI đang thay thế xe buýt ISA. Theo PCI, không thiếu IRQ vì IRQ có thể được chia sẻ (mặc dù chia sẻ là kém hiệu quả hơn một chút). Ngoài ra, PCI không sử dụng tài nguyên DMA (mặc dù nó tương đương với DMA mà không cần các tài nguyên đó).
Lý do thứ hai là có nhiều không gian địa chỉ có sẵn cho thiết bị I/0. Trong khi không gian địa chỉ I/O thông thường của xe buýt ISA bị giới hạn ở mức 64kB, thì xe buýt PCI có 4GB trong số đó. Vì nhiều thiết bị vật lý đang sử dụng địa chỉ bộ nhớ chính thay vì không gian địa chỉ IO, vẫn còn nhiều không gian hơn, ngay cả trên xe buýt ISA. Trên PC 32 bit có 4GB không gian địa chỉ bộ nhớ chính và phần lớn tài nguyên xe buýt này có sẵn cho thiết bị IO (trừ khi bạn đã cài đặt 4GB bộ nhớ chính).
Thông tin chung về hỗ trợ cho các thiết bị plug & play
Các thiết bị Plug & Play có thể được sử dụng ngay lập tức, mà không cần cài đặt. Chúng được phát hiện và cấu hình tự động ngay khi chúng được kết nối với máy tính. Trình điều khiển thiết bị thích hợp được cài đặt tự động. Người dùng không bắt buộc phải thực hiện bất kỳ đầu vào nào.
Tuy nhiên, cài đặt tự động của hệ điều hành chỉ hoạt động trong một số điều kiện nhất định, e.g. (Xem thêm về điều này trong trợ giúp Windows):
- Trình điều khiển thiết bị có “Được phát triển cho Windows” logo hoặc chữ ký kỹ thuật số.
- Trình điều khiển thiết bị đã có mặt trên máy tính.
Nếu các điều kiện này không được đáp ứng, hệ điều hành sẽ khởi chạy Trình hướng dẫn phần cứng. Nếu người dùng không có quyền quản trị viên địa phương, anh ta không thể hoàn thành việc cài đặt với trình hướng dẫn này.
Trong những tình huống này, DSM ’S Hỗ trợ các thiết bị Plug & Play cho phép các thiết bị được cài đặt mà không có người dùng có quyền quản trị viên địa phương.
- Trình điều khiển Wan Miniport
- Bộ điều hợp mạng ảo
Bài viết này có hữu ích không?
Thiết bị phát plug-n-play để sử dụng một số trình điều khiển nhất định
Thiết bị: Micrô Revelator Presonus Mục đích: Tôi muốn sử dụng micrô của mình xa hơn thông qua tiện ích mở rộng USB-to-RJ45. Về cơ bản gửi USB qua dây Ethernet. Vấn đề: Khi micrô được cắm trực tiếp vào máy tính xách tay, nó hoạt động tốt. Nhưng khi tôi cắm nó qua bộ mở rộng, tôi không thể ghi lại bất cứ thứ gì và máy tính hoàn toàn không đăng ký thiết bị. Micrô đang nhận được nguồn và máy tính tạo ra tiếng ồn “kết nối”, nhưng không có gì ngoài. Quản lý thiết bị: Tôi đã kiểm tra trình quản lý thiết bị trong cả hai kịch bản. Khi được cắm trực tiếp, tôi thấy “micrô (tiết lộ)” trong “đầu vào âm thanh và đầu ra”. Khi được kết nối qua RJ45, tôi chỉ thấy “Người mặc khải” dưới “thiết bị không xác định” cũng như tam giác cảnh báo màu vàng cho biết rằng không có trình điều khiển nào được tải. Thông tin về trình điều khiển: Tôi đã sử dụng chương trình USBDeview để thu thập một số thông tin chuyên sâu trên thiết bị khi được cắm vào sử dụng các kết nối khác nhau. Dưới đây là so sánh cạnh nhau.
Cắm trực tiếp | Được kết nối thông qua RJ45 | |
---|---|---|
Tên thiết bị | Mặc khải | Mặc khải |
Sự miêu tả | Thiết bị tổng hợp USB | Mặc khải |
Loại thiết bị | không xác định | Nhà cung cấp cụ thể |
Kết nối | Đúng | Đúng |
An toàn để rút phích cắm | Đúng | KHÔNG |
Tàn tật | KHÔNG | KHÔNG |
Trung tâm USB | KHÔNG | KHÔNG |
Số seri | JM1C20431589 | JM1C20431589 |
Nhà cung cấp dữ liệu thông tin | 194f | 194f |
ID sản phẩm | 0d01 | 0d01 |
Sửa đổi phần sụn | 1.02 | 1.02 |
Lớp USB | 0 | ff |
Lớp con USB | 0 | 0 |
Giao thức USB | 0 | 0 |
Tiền tố ParentID | 6 & 1EA95F5F & 0 | 6 & 1EA95F5F & 0 |
Tên dịch vụ | USBCCGP | |
Dịch vụ Mô tả | @USB.inf,%chung chung.Svcdesc%; Microsoft USB EDARE | |
Tên tệp tài xế | USBCCGP.sys | |
Thiết bị MFG | (Bộ điều khiển máy chủ USB tiêu chuẩn) | |
Quyền lực | 200 Ma | 200 Ma |
Phiên bản USB | 2 | 2 |
Mô tả trình điều khiển | Thiết bị tổng hợp USB | |
Phiên bản trình điều khiển | 10.0.19041.1949 | |
Trình điều khiển | Tổng hợp.Dev.Nt | |
Người lái xe | USB.inf | |
ID ví dụ | USB \ VID_194F & PID_0D01 \ JM1C20431589 | USB \ VID_194F & PID_0D01 \ JM1C20431589 |
Khả năng | “Có thể tháo rời, độc đáo, Auraliseremovalok” | “Có thể tháo rời, độc đáo” |
Sự khác biệt chính là khi được cắm trực tiếp, micrô được nhận dạng là thiết bị tổng hợp (USBDeview cũng hiển thị một số thiết bị USB khác được tải cùng một lúc). Khi được cắm qua RJ45, nó không được nhận ra như vậy và không có tải trình điều khiển. Các thiết bị khác có thể kết nối không?: Tôi đã thử đầu nối RJ45 với ổ USB và một nhãn hiệu micrô khác (Audio-Technica AT2020). Trong cả hai trường hợp, họ làm việc tốt và tải các trình điều khiển giống nhau. Micrô đặc biệt thú vị vì nó cũng là một thiết bị tổng hợp nhưng không có vấn đề gì. Câu hỏi: Có thể buộc máy tính của tôi sử dụng cùng một trình điều khiển trong cả hai tình huống không? Tôi đã làm một số googling nhưng tất cả những gì tôi có thể tìm thấy là những thứ liên quan đến việc tải xuống trình điều khiển từ trang web của công ty (không có gì tôi có thể tìm thấy). Tôi đã thử chọn thủ công các tệp sys và inf thông qua trình quản lý thiết bị, nhưng điều này dường như không hoạt động. Có thể tôi đang làm sai bước này mặc dù.
Trình điều khiển thiết bị là gì? Định nghĩa, loại và ứng dụng
Trình điều khiển thiết bị là một chương trình không có UI quản lý phần cứng được gắn vào máy tính và hỗ trợ chức năng của nó.
Nhà văn kỹ thuật Chiradeep Basumallick
Ngày 12 tháng 10 năm 2022
Trình điều khiển thiết bị được định nghĩa là chương trình phần mềm mà không có giao diện người dùng (UI) quản lý các thành phần phần cứng hoặc thiết bị ngoại vi được gắn vào máy tính và cho phép chúng hoạt động với máy tính một cách trơn tru. Bài viết này giải thích hoạt động của trình điều khiển thiết bị, các loại khác nhau và năm ứng dụng quan trọng.
Mục lục
-
- Trình điều khiển thiết bị là gì?
- 9 loại trình điều khiển thiết bị
- Ứng dụng trình điều khiển thiết bị
Trình điều khiển thiết bị là gì?
Trình điều khiển thiết bị là một chương trình phần mềm không có giao diện người dùng (UI) quản lý các thành phần phần cứng hoặc thiết bị ngoại vi được gắn vào máy tính và cho phép chúng hoạt động với máy tính một cách trơn tru.
Trình điều khiển thiết bị là một phần mềm chuyên dụng vận hành một thiết bị kết nối máy tính cụ thể, việc cung cấp giao diện phần mềm cho phần cứng cho phép các hệ điều hành và các ứng dụng máy tính khác truy cập các chức năng phần cứng.
Phần cứng được liên kết với hệ thống con/hệ thống giao tiếp máy tính thông qua đó trình điều khiển thiết bị tương tác với thiết bị. Chúng phụ thuộc vào phần cứng và dành riêng cho hệ điều hành (OS). Họ cung cấp xử lý ngắt cần thiết cho bất kỳ giao diện phần cứng không đồng bộ phụ thuộc vào thời gian nào.
Một trình điều khiển thiết bị’Mục tiêu chính của S là cho phép các thành phần phần cứng của máy tính và mạng giao diện và tương tác với các thiết bị cụ thể. Họ xử lý các yêu cầu do hạt nhân thực hiện liên quan đến một loại thiết bị cụ thể. Trình điều khiển thiết bị xác định các thông điệp và cơ chế thông qua đó máy tính’S Hệ điều hành và Ứng dụng có thể truy cập thiết bị hoặc đưa ra yêu cầu cho thiết bị. Họ cũng xử lý các phản hồi của thiết bị và tin nhắn để gửi đến máy tính.
Trình điều khiển thiết bị hoạt động như thế nào
Trình điều khiển thiết bị hoạt động bên trong lớp Kernel OS. Họ hoạt động trong một môi trường rất đặc quyền vì họ cần truy cập cấp thấp vào các hoạt động phần cứng để hoạt động. Chúng cho phép máy tính’Hệ điều hành (OS) để giao diện với phần cứng mà chúng được phát triển. Và thông qua xe buýt máy tính liên kết thiết bị với máy tính, trình điều khiển và thiết bị giao tiếp.
Trình điều khiển thiết bị phải nhận lời khuyên từ hệ điều hành để truy cập và thực hiện các hướng dẫn của thiết bị. Sau khi hoàn thành công việc, họ truyền thiết bị phần cứng’S đầu ra hoặc thông báo cho hệ điều hành. Các thiết bị như modem, bộ định tuyến, loa, bàn phím và máy in yêu cầu trình điều khiển thiết bị hoạt động.
Hiểu về phát triển trình điều khiển thiết bị
Trình điều khiển thiết bị cho phép các thiết bị ngoại vi, chẳng hạn như máy in hoặc bàn phím, tương tác với máy tính. Sau đây phác thảo các bước phát triển hoặc lập trình viên có thể thực hiện trong khi phát triển trình điều khiển thiết bị cho các hệ điều hành như Windows, Linux hoặc MacOS.
1. Biết thiết bị
Khi thiết kế trình điều khiển thiết bị, các lập trình viên phải nắm bắt được nền tảng chuyên sâu’s Phần cứng. Họ nên biết giao diện xe buýt mà phần cứng sử dụng để liên lạc với máy chủ và vị trí của phần mềm trình điều khiển thiết bị. Họ nên đọc biểu dữ liệu thiết bị để hiểu các thuật ngữ và định nghĩa có liên quan. Họ cũng nên biết phương thức mà việc truyền dữ liệu diễn ra.
Nếu thiết bị chính là một hệ thống trên chip, các nhà phát triển nên biết cách trình điều khiển tương tác với các giao thức phần sụn và lệnh của nó. Ngoài ra, các nhà phát triển nên được chuẩn bị để tài liệu thiếu khi xử lý một loại phần cứng mới. Vì vậy, họ nên sẵn sàng thực hiện nhiều bài kiểm tra hơn bình thường.
2. Viết mã trình điều khiển
Trong bước này, các nhà phát triển nên có được một nguyên mẫu hoạt động về phần cứng ưa thích của họ. Sau đó, họ nên bắt đầu viết trình điều khiển chế độ kernel.
Nếu một thiết bị được thiết kế không chính xác, trình điều khiển chạy ở chế độ người dùng có thể gây ra sự cố hệ thống. Tương tự, nếu có bất cứ điều gì sai khi trình điều khiển đang hoạt động trong các cài đặt có đặc quyền cao, các mối quan tâm hoạt động có thể xảy ra. Do đó, các nhà phát triển nên tận dụng thông tin trong tài liệu phát triển trình điều khiển có sẵn cho hệ điều hành đã chọn, có thể là Windows hoặc Linux.
Các chức năng trình điều khiển thiết bị đầu tiên được phát triển là các chức năng tải và dỡ tải. Khi hệ điều hành bắt đầu và dừng lại, các chức năng này được gọi. Một trong những trách nhiệm chính của các chức năng tải/dỡ hàng là phát hiện xem phần cứng có được cắm vào hệ thống hay không. Người dùng có thể phát hiện phần cứng bằng cách sử dụng ID thiết bị được chỉ định bởi xe buýt cụ thể. Nếu phần cứng được cắm vào, thì chức năng tải thành công. Nếu không, hãy gọi chức năng dỡ tải.
3. Khởi tạo phần cứng
Khi thiết bị có thể phát hiện phần cứng, bước tiếp theo là khởi tạo nó. Loại khởi tạo cần thiết có thể khác nhau tùy thuộc vào loại phần cứng. Khởi tạo có thể bao gồm từ ghi vào thanh ghi thiết bị để tải mã vi mô vào thiết bị và giao tiếp trên cơ sở dài hạn bằng cách sử dụng các giao thức lệnh độc quyền.
4. Kiểm soát phần cứng
Kiểm soát phần cứng chỉ có thể nếu các nhà phát triển có thể khởi tạo và giao tiếp với phần cứng. Quá trình điều khiển phụ thuộc vào thiết bị. Các nhà phát triển nên xem xét liệu thiết bị có chỉ cần chuyển tiếp dữ liệu từ thiết bị này sang thiết bị khác không.
Chẳng hạn, khi chuyển tiếp nhạc từ điện thoại thông minh đến loa. Họ cũng nên xem xét liệu thiết bị sẽ liên tục gửi dữ liệu và hướng dẫn đến các thiết bị khác. Chẳng hạn, nói với một máy in in màu đen và trắng ở một bên giấy, sau đó là một bản in hai mặt có màu.
Trình điều khiển thiết bị bật cài đặt dữ liệu như tốc độ phát và đầu vào chuyển tiếp nhanh qua máy tính thành các lệnh cho thiết bị. Không giống như ba bước trước, điều này có thể mất nhiều thời gian hơn. Ba bước đầu tiên có thể là hoạt động một lần khi hệ điều hành tải. Tuy nhiên, các nhà phát triển có thể cần thực hiện bước 4 nhiều lần sau khi hệ điều hành được thiết lập và chạy. Người dùng đôi khi có thể hợp nhất các bước thứ 3 và thứ 4 thành một bước duy nhất.
5. Bắt đầu giao tiếp dữ liệu với phần cứng
Một số thiết bị liên quan đến một số dạng dữ liệu, có thể là âm thanh hoặc video. Khi thiết bị được khởi tạo, các nhà phát triển có thể gửi một luồng dữ liệu ổn định theo yêu cầu. Trình điều khiển thiết bị hoạt động như một đường ống giữa ứng dụng cấp cao hơn và phần cứng hoặc phần mềm cấp thấp hơn để truyền dữ liệu.
Như đã lưu ý trong bước đầu tiên, các nhà phát triển nên biết các giao thức được thiết kế để giao tiếp dữ liệu. Chuyển dữ liệu có thể bị gián đoạn hoặc bỏ phiếu. HĐH cung cấp các cơ sở như nhắn tin hoặc các thói quen dịch vụ ngắt được sử dụng trong quá trình truyền dữ liệu. Các nhà phát triển nên bắt đầu bằng cách chuyển một gói dữ liệu duy nhất và đảm bảo rằng toàn bộ quá trình từ các bước 1 đến 3 hoạt động tốt.
6. Kiểm soát giao tiếp dữ liệu
Trong bước này, các nhà phát triển cần kiểm soát việc truyền dữ liệu và quản lý giao tiếp trong một số tình huống. Khi sự cố phát sinh, người dùng nên ngăn các thiết bị ngoại vi gửi cùng một thông báo lỗi. Trong luồng âm thanh, khi có một bộ đệm tràn hoặc một vấn đề quan trọng với chất lượng âm thanh, họ sẽ gửi lệnh dừng.
7. Kiểm tra trình điều khiển và gỡ lỗi nó
Kiểm tra là một khía cạnh quan trọng. Các nhà phát triển nên kiểm tra thiết bị để đảm bảo nó được công nhận và khởi tạo. Họ cũng nên chạy các thử nghiệm chức năng để đảm bảo trình điều khiển thiết bị hoạt động như mong đợi. Họ cũng nên sẵn sàng thay đổi phần cứng để đảm bảo hoạt động trơn tru. Ngoài ra, các nhà phát triển nên kiểm tra trình điều khiển thiết bị trên các phiên bản hệ điều hành khác nhau để xác minh rằng chúng tương thích về phía trước và lùi. Khi trình điều khiển thiết bị hoạt động, các nhà phát triển có thể đăng ký nó.
9 loại trình điều khiển thiết bị
Các nhà phát triển có thể phân biệt các loại trình điều khiển thiết bị sau:
1. Trình điều khiển thiết bị kernel
Trình điều khiển thiết bị kernel bao gồm một số phần cứng chung được tải với hệ điều hành (HĐH) như một phần của HĐH. Chúng bao gồm bo mạch chủ, bộ xử lý và BIOS. Chúng được gọi và tải vào bộ nhớ truy cập ngẫu nhiên (RAM) khi được yêu cầu. Khi một số trong số họ đang hoạt động cùng một lúc, máy có thể làm chậm. Do đó, có một yêu cầu tối thiểu cho mỗi hệ điều hành.
Trình điều khiển thiết bị kernel được xếp lớp. Trình điều khiển cấp cao hơn, chẳng hạn như trình điều khiển hệ thống tệp, nhận dữ liệu từ các ứng dụng, lọc nó và chuyển nó cho trình điều khiển cấp thấp hơn, hỗ trợ chức năng ổ đĩa. Trình điều khiển thiết bị kernel được triển khai dưới dạng các thành phần riêng biệt và mô-đun có một bộ chức năng cần thiết được xác định rõ.
2. Trình điều khiển thiết bị người dùng
Trình điều khiển thiết bị chế độ người dùng thực thi ở chế độ người dùng. Họ đề cập đến trình điều khiển thiết bị mà người dùng có thể kích hoạt trong một phiên. Khi sử dụng hệ thống, người dùng có thể có các thiết bị bên ngoài mà họ mang lại để sử dụng, chẳng hạn như các thiết bị cắm và chơi bên ngoài. Các thiết bị này cũng yêu cầu trình điều khiển hoạt động. Trong Windows Systems, trình điều khiển thiết bị người dùng cung cấp giao diện giữa ứng dụng Win32 và trình điều khiển chế độ hạt nhân hoặc các hệ điều hành khác. Người dùng có thể viết các trình điều khiển này vào đĩa để giảm căng thẳng cho tài nguyên máy tính.
3. Trình điều khiển nhân vật
Trình điều khiển thiết bị ký tự cung cấp quyền truy cập không có cấu trúc vào phần cứng. Họ chuyển dữ liệu đến và từ các thiết bị mà không cần sử dụng một địa chỉ thiết bị cụ thể. Họ cho phép đọc hoặc viết một byte tại một thời điểm như một luồng dữ liệu tuần tự. Trình điều khiển ký tự không xử lý đầu vào/đầu ra (I/O) thông qua bộ đệm bộ đệm, vì vậy chúng linh hoạt hơn trong việc xử lý I/O. Chúng được ghép nối với các thiết bị khối để phá vỡ bộ đệm bộ đệm để cung cấp các hoạt động I/O thô thẳng vào không gian địa chỉ chương trình của người dùng.
Ngoài ra, chúng cung cấp các giao diện bổ sung như lệnh điều khiển I/O, bỏ phiếu thiết bị và ánh xạ bộ nhớ. Ví dụ là modem và bộ điều khiển xe buýt.
4. Trình điều khiển chặn
Trình điều khiển thiết bị chặn cung cấp quyền truy cập có cấu trúc vào phần cứng. Họ sử dụng bộ đệm có kích thước khối hệ thống tệp từ bộ đệm bộ đệm do kernel cung cấp để thực hiện I/O. Bộ đệm bộ đệm là nhóm bộ nhớ được thiết lập bởi kernel để lưu trữ các khối được truy cập thường xuyên thông qua các thiết bị khối. Bộ đệm bộ đệm làm giảm lượng truy vấn I/O cần hoạt động I/O từ thiết bị.
Ngoài ra, trình điều khiển thiết bị khối cung cấp I/O định hướng khối có thể truy cập và chứng minh độ bền của dữ liệu. Họ thực hiện yêu cầu hệ thống tệp và cấp các quy trình I/O vào đĩa để chuyển khối được yêu cầu. Ví dụ là các phím bộ nhớ USB và ổ đĩa.
5. Trình điều khiển nhà sản xuất thiết bị gốc (OEM)
Trình điều khiển thiết bị có thể được phân loại là chung hoặc liên quan đến OEM. Trình điều khiển chung đề cập đến trình điều khiển thiết bị với phần mềm hoạt động của họ được gói vào phần cứng OEM. Người ta có thể sử dụng trình điều khiển chung với các thương hiệu khác nhau thuộc loại thiết bị cụ thể. Chẳng hạn, Linux hoạt động với một số trình điều khiển chung hoạt động mà không cần phải cài đặt bất kỳ phần mềm nào khác.
OEM có thể tạo trình điều khiển thiết bị độc quyền của họ, cần được cài đặt riêng sau khi cài đặt OS. Trình điều khiển OEM cho phép phần cứng như bàn phím giao tiếp với hệ điều hành máy chủ. Chẳng hạn, trình điều khiển OEM cho phép các chức năng như tích hợp hệ thống điều khiển ánh sáng với phần cứng OEM trong Google Assistant và Alexa.
6. Trình điều khiển thiết bị ảo
Trình điều khiển thiết bị ảo rất cần thiết trong việc điều khiển máy ảo hoặc VMS . Họ hoạt động trong cả môi trường ảo hóa và không giới thiệu. Trong môi trường ảo hóa, các trình điều khiển này được sử dụng để mô phỏng phần cứng của thiết bị máy chủ. Họ điều khiển hoặc quản lý phần cứng tài nguyên của thiết bị máy chủ để đảm bảo rằng cả thiết bị khách và thiết bị máy chủ đều chạy như mong đợi.
Ví dụ: khi hệ điều hành khách hoạt động trên máy chủ, nó sẽ gọi chức năng gọi đến trình điều khiển thiết bị ảo để truy cập phần cứng. Ngoài ra, họ bắt chước các cấp độ của bộ xử lý như các ngắt và truyền chúng vào máy ảo.
7. BIOS
Hệ thống đầu ra đầu vào cơ bản (BIOS) là trình điều khiển cơ bản nhất trên máy tính. Nó nằm trong chip bộ nhớ chỉ đọc (ROM), đảm bảo rằng BIOS sẽ có sẵn ngay cả khi đĩa cứng được định dạng. Nó chịu trách nhiệm khởi động máy tính và cung cấp cho nó một bộ hướng dẫn trong quá trình này. Nó cũng thực hiện các bài kiểm tra tự bật (bài) được yêu cầu trong khi khởi động. BIOS cũng cung cấp trình điều khiển cho phần cứng cơ bản, chẳng hạn như bàn phím và màn hình, để đảm bảo rằng chúng giao tiếp với hệ điều hành để hoạt động như dự định.
số 8. Trình điều khiển bo mạch chủ
Trình điều khiển bo mạch chủ là các ứng dụng đơn giản mà cả Windows và Linux có thể sử dụng. Chúng tồn tại trong hệ điều hành và cho phép các hoạt động máy tính cơ bản. Các trình điều khiển này bao gồm các ứng dụng cho phép bàn phím và chuột’S thiết bị USB và các cổng I/O để hoạt động. Một số bo mạch chủ có trình điều khiển hỗ trợ video và âm thanh.
Trình điều khiển bo mạch chủ dành riêng cho mô hình chipset, chẳng hạn như B460 cho máy tính Intel. Để nhận ra bo mạch chủ’S đầy đủ tiềm năng và cho phép các thành phần được kết nối với nó hoạt động chính xác, người dùng có thể cần cài đặt trình điều khiển bổ sung.
9. Trình điều khiển nguồn mở
Trình điều khiển nguồn mở Tham khảo các trình điều khiển được phát hành theo giấy phép miễn phí và nguồn mở. Chẳng hạn, trình điều khiển đồ họa nguồn mở điều khiển đầu ra vào màn hình nếu màn hình là một phần của phần cứng đồ họa. Mã nguồn cho trình điều khiển nguồn mở có sẵn cho mọi người, giúp hợp tác phần mềm dễ dàng hơn. Họ đáng tin cậy hơn vì mọi người có thể kiểm tra chúng cho bất kỳ mã độc hại nào.
Trình điều khiển nguồn mở cung cấp nhiều quyền riêng tư hơn. Nếu họ theo dõi người dùng, mọi người có thể phân phối lại một bản sao của phần mềm với việc theo dõi bị xóa. Trình điều khiển nguồn mở tồn tại lâu hơn khi nhiều người tiếp tục cải thiện, do đó đảm bảo rằng ngay cả khi công ty ngừng phân phối chúng, một bản sao vẫn còn.
Ứng dụng trình điều khiển thiết bị
Các khối xây dựng thiết yếu của điện toán cá nhân và doanh nghiệp được sử dụng theo những cách sau:
1. Trình điều khiển thiết bị để truy cập hệ thống lưu trữ
Hệ thống lưu trữ máy tính cho phép người dùng lưu trữ dữ liệu và cung cấp nó theo yêu cầu. Chúng bao gồm các thiết bị bên ngoài và bên trong như ổ đĩa flash USB, ổ cứng và lưu trữ được gắn mạng. Trình điều khiển trong hệ thống lưu trữ cho phép họ tương tác với máy tính. Điều này đảm bảo rằng máy tính có thể truy cập các hệ thống lưu trữ bên trong hoặc bên ngoài, truy vấn thông tin của họ và cho phép truyền dữ liệu.
Kết nối các thiết bị lưu trữ với máy tính mà không có trình điều khiển trở nên khó khăn vì hệ điều hành không phát hiện chúng. Thông thường, các đĩa cứng và CD-ROM được HĐH công nhận và không yêu cầu trình điều khiển được cài đặt thủ công. Người dùng phải cài đặt trình điều khiển từ nhà sản xuất’trang web nếu chúng không được phát hiện tự động.
2. Trình điều khiển thiết bị cho các thiết bị đầu vào và đầu ra
Máy tính’S OS tương tác với trình điều khiển thiết bị để đảm bảo các chức năng phần cứng của nó như mong đợi. Các thiết bị đầu vào bao gồm chuột và bàn phím, trong khi các thiết bị đầu ra bao gồm các thiết bị hiển thị như màn hình. Bàn phím, chuột và màn hình được phân loại thành các thiết bị cắm và chơi.
Thông thường, trình điều khiển cho các thiết bị cắm và chơi là chung và không yêu cầu cài đặt thủ công, vì máy tính’S OS nhận ra chúng và tự động cài đặt chúng. Tuy nhiên, nếu một thiết bị bên ngoài không phải là thiết bị cắm và chơi, người dùng có thể cần cài đặt thủ công trình điều khiển từ đĩa cài đặt hoặc tải xuống. Điều này sẽ cho phép HĐH nhận ra các thiết bị này.
3. Trình điều khiển thiết bị cho máy ảnh kỹ thuật số
Trình điều khiển máy ảnh kỹ thuật số là một chương trình cho phép liên lạc giữa nó và các thiết bị khác, chẳng hạn như máy tính. Không có trình điều khiển, HĐH sẽ không phát hiện thiết bị này. Hầu hết các máy ảnh kỹ thuật số chỉ tương thích với hệ điều hành Windows, vì các hệ thống Linux bị trễ.
Trình điều khiển máy ảnh kỹ thuật số cho phép chuyển ảnh từ máy ảnh sang máy tính. Chúng cho phép máy ảnh kỹ thuật số in ảnh bằng tiêu chuẩn Pictbridge trực tiếp vào máy in có khả năng Pictbridge mà không cần máy tính. Trình điều khiển trong cổng đầu ra video cho phép người dùng hiển thị hình ảnh trên tivi bằng cách chọn một video hoặc ảnh tại một thời điểm.
4. Trình điều khiển cho các hệ điều hành di động như Android
Điện thoại di động có trình điều khiển để cho phép họ giao tiếp với máy tính. Trình điều khiển đi kèm với phần sụn trên hầu hết các điện thoại, cho phép máy tính tải chúng lên để hỗ trợ phần cứng vì HĐH không được chỉ định. Tuy nhiên, đôi khi người dùng có thể cần cài đặt phần mềm OEM PC trước để trình điều khiển được cài đặt và cho phép truyền dữ liệu.
Trình điều khiển cho phép tích hợp các thiết bị ngoại vi như bộ điều khiển trò chơi hoặc bàn phím dựa trên các hệ điều hành như Android Things và Android. Trình điều khiển cho phép truy cập và điều khiển phần cứng. Ngoài ra, chúng cho phép các thiết bị thông minh hoạt động với các ứng dụng tùy chỉnh.
5. Trình điều khiển thiết bị cho hiệu suất video vượt trội
Thẻ đồ họa là các thành phần cốt lõi của hệ thống máy tính và chịu trách nhiệm về hiệu suất video vượt trội trong máy tính, trò chơi hoặc các tác vụ chuyên sâu đồ họa khác. Trình điều khiển đồ họa cho phép card đồ họa tương tác với máy tính’S hệ điều hành và do đó rất cần thiết để có được hiệu suất hàng đầu từ card đồ họa.
Cập nhật trình điều khiển đồ họa và trình điều khiển Windows 11 (hoặc cũ hơn) khác có thể giúp người dùng tăng tốc độ, khắc phục sự cố và đôi khi thậm chí cung cấp cho người dùng các tính năng mới. Chẳng hạn, cập nhật trình điều khiển trò chơi có thể tăng khung hình mỗi giây, giảm độ trễ.
Mua mang về
Khi người tiêu dùng và doanh nghiệp ngày càng sử dụng các thiết bị và thiết bị ngoại vi, trình điều khiển thiết bị rất cần thiết cho cơ sở hạ tầng CNTT . Công nghệ lái xe hiện đại có thể cải thiện chức năng của máy tính bằng cách giảm mức tiêu thụ tài nguyên và tốc độ tăng cường. Đó là lý do tại sao cần phải biết trình điều khiển hoạt động như thế nào và có lịch trình điều khiển và cập nhật thường xuyên để toàn bộ hệ sinh thái thiết bị hoạt động trơn tru.
Bạn có thấy bài viết này hữu ích khi tìm hiểu về trình điều khiển thiết bị không? Hãy cho chúng tôi biết Facebook Mở một cửa sổ mới , Twitter Mở một cửa sổ mới , Và LinkedIn Mở một cửa sổ mới . Chúng tôi’D thích nghe từ bạn!
Thêm về DevOps
- Top 10 chứng chỉ Azure DevOps vào năm 2022
- Vòng đời DevOps là gì? Định nghĩa, các thành phần chính và thực tiễn tốt nhất quản lý
- Top 10 chứng chỉ chính của Scrum vào năm 2022
- Top 18 câu hỏi phỏng vấn Azure DevOps vào năm 2022
- 10 chứng chỉ và khóa học hàng đầu của DevOps vào năm 2022