Làm thế nào để bắt đầu viết trình điều khiển?


21

Tôi có một máy tính xách tay giá rẻ vứt đi mà tôi muốn xoay quanh, Thinkpad SL 500.

Điều làm phiền tôi là hai đèn led, một cho kết nối không dây và một cho ngủ đông, không sáng lên chút nào, mặc dù chúng hoạt động, tôi đã thử nó trên windows.

Vì vậy, tôi muốn viết một trình điều khiển kernel cho họ, không có gì to tát, nó chỉ giống như một ý tưởng tốt để chơi xung quanh với kernel.

Câu hỏi của tôi là tôi nên theo phương pháp nào một cách có hệ thống để tìm ra thiết bị nào chịu trách nhiệm cho các đèn led đó (nói chung, không nhất thiết phải cụ thể đối với phần cứng của tôi) và trình điều khiển nào chịu trách nhiệm cho hai đèn led khác hoạt động, bluetooth và chỉ báo pin?

Và khi tôi nói phương pháp luận, tôi thực sự có nghĩa là phương pháp, từng bước, với lý do cho từng bước, như trong câu trả lời tôi đã đưa ra cho người khác ở đây: && nghĩa là gì trong void * p = && abc;

Tôi thành thạo trong việc fgrepping thông qua các kho mã lớn, sử dụng máy phân tích mã tĩnh & co, nhưng tôi nghĩ rằng sự thiếu hiểu biết về phần cứng của tôi cản trở tôi trong vấn đề này.

PS: Tôi đang sử dụng ArchLinux, vì vậy gần như là phiên bản kernel mới nhất.


Bạn đã thử bật CONFIG_IDEAPAD_LAPTOP trong kernel chưa?
Paweł Rumian

@gorkypl: không, tại sao? Câu hỏi đặt ra không phải là về giải quyết vấn đề, đó là về chiến lược dùng để giải quyết vấn đề bản thân mình (như là một lập trình viên).
Flavius

3
OK, tôi đã hiểu lầm bạn. Dù sao, vì mô-đun hạt nhân IDEAPAD_LAPTOP chịu trách nhiệm cho những thứ như vậy trong chuỗi Thinkpad SL, bạn có thể bắt đầu từ việc xem mã nguồn của nó. Ngoài ra, bạn có thể quan tâm đến một số bài đọc, ví dụ như về kernelnew sở thích: kernelnewbies.org/KernelHacking hoặc một cuốn sách tuyệt vời được viết bởi LKH: kroah.com/lkn Hai nguồn tốt khác xuất hiện trong tâm trí của tôi là: lwn.net/Kernel/ LDD3amazon.com/dp/0596005652/?tag=stackoverfl08-20
Paweł Rumian

Câu trả lời:


5

Phương pháp nào tôi nên tuân theo một cách có hệ thống để tìm ra thiết bị nào chịu trách nhiệm cho các đèn LED đó?

Tốt nhất, bạn nên tìm (mở) nguồn hệ điều hành kernel mà đèn LED máy tính xách tay của bạn đang hoạt động, sau đó bạn có thể nhận xét từng phần của hạt nhân cho đến khi bạn xác định được mã chịu trách nhiệm cho đèn LED (và có một vài hệ thống đóng băng làm việc đó, nhưng đó là phần thú vị).

Nếu đèn LED không hoạt động trên Linux và bạn không biết phần cứng nào đang điều khiển chúng trên các hệ điều hành khác, bạn nghĩ bạn sẽ viết trình điều khiển như thế nào?

Đó là câu trả lời tốt nhất mà bất cứ ai cũng có thể đưa ra, tôi sợ, và điều đó khiến bạn (gần như) không có gì thông minh hơn trước. Chỉ cần cho bạn biết rằng bạn cần tìm ra chính xác phần cứng bạn có, để có thể làm gì đó nhiều hơn.

Để được giúp đỡ nhiều hơn, hai con trỏ:

  1. Một trong những chip IDE hoặc SATA thường được sử dụng là dòng ICHX hoặc ICHXr của Intel (ICH5, ICH6, ICH7 ... hoặc ICH6R, ICH7R, ...).

  2. Thư mục nhân Linux nơi đặt mã nguồn để điều khiển nhiều đèn LED

Tôi cũng sẽ cung cấp cho bạn con trỏ thứ 3, nhưng vì gorkypy này đã viết ở trên, tôi chỉ có thể lặp lại: Trình điều khiển thiết bị Linux, phiên bản thứ 3 , dưới dạng PDF, miễn phí.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.