Sürücü yazmaya nasıl başlanır?


21

Bir Thinkpad SL 500 ile dolaşmak istediğim ucuz bir dizüstü bilgisayarım var.

Beni rahatsız eden iki led, biri kablosuz bağlantı için, biri de kış uykusu için, hiç yanmıyor, işlevsel olsalar da, pencerelerde denedim.

Bu yüzden onlar için bir çekirdek sürücüsü yazmak istiyorum, büyük bir şey değil, sadece çekirdekle oynamak iyi bir fikir gibi görünüyor.

Sorum şu ; bu ledlerden hangi cihazların sorumlu olduğunu bulmak için hangi metodolojiyi takip etmeliyim (genel olarak, donanımım için kesin olarak gerekli değildir) ve çalışan diğer iki led, bluetooth ve pil göstergesi için hangi sürücüleri sorumludur?

Ve ben metodoloji dediğimde, gerçekten, adım adım, her adımın nedenleriyle birlikte, buradaki bir başkasına verdiğim cevapta olduğu gibi, gerçekten demek istiyorum: & void * p = && abc;

Statik kod analizörleri ve co kullanarak, büyük kod depoları aracılığıyla fgrepping konusunda yetkin değilim, ancak donanım bilgisi eksikliğinin beni bu konuda engellediğini düşünüyorum.

Not: ArchLinux kullanıyorum, bu yüzden neredeyse en son çekirdek sürümü.


CONFIG_IDEAPAD_LAPTOP'u çekirdekte etkinleştirmeyi denediniz mi?
Paweł Rumian

@gorkypl: hayır, neden yapayım? Sorun, sorunu çözmekle ilgili değil, sorunu kendim (bir programcı olarak) çözmek için kullanılan stratejiyle ilgilidir .
Flavius

3
Tamam, seni yanlış anladım. Her neyse, IDEAPAD_LAPTOP çekirdek modülü SL serisi Thinkpad'lerde bu gibi şeylerden sorumlu olduğu için kaynak koduna bakmakla başlayabilirsiniz. : Ayrıca, Kernelyenileri üzerinde örneğin, bazı okuma ilginizi çekebilir kernelnewbies.org/KernelHacking veya LKH tarafından yazılmış büyük bir kitaba: kroah.com/lkn benim akla gelen olan iki diğer iyi kaynaklar: lwn.net/Kernel/ LDD3 ve amazon.com/dp/0596005652/?tag=stackoverfl08-20
Paweł Rumian 21:12

Yanıtlar:


5

Bu LED'lerden hangi cihazların sorumlu olduğunu bulmak için hangi metodolojiyi sistematik olarak izlemeliyim?

İdeal olarak, dizüstü bilgisayarınızın LED'lerinin çalıştığı çekirdek işletim sistemi kaynağını (açık) bulmanız gerekir, ardından LED'lerden sorumlu olan kodu bulana kadar çekirdeğin bir kısmını yorumlayabilirsiniz (ve bunu yaparken birkaç sistemin donması, ama bu eğlenceli kısmı).

LED'ler Linux üzerinde çalışmıyorsa ve hangi donanımın diğer işletim sistemlerinde kullanıldığını bilmiyorsanız, bir sürücü nasıl yazacağınızı düşünüyorsunuz?

Bu, herhangi birinin verebileceği en iyi cevap, korkarım ve bu sizi (neredeyse) hiçbir şeyden daha zekice yapan bir şey yapmaz. Sadece size daha fazla bir şey yapabilmek için hangi donanıma sahip olduğunuzu bulmanız gerektiğini gösterir.

Daha fazla yardım için iki işaretçi:

  1. Sık kullanılan IDE veya SATA yongalarından biri, Intel'in ICHX veya ICHXr serisidir (ICH5, ICH6, ICH7 ... veya ICH6R, ICH7R, ...).

  2. Çok sayıda LED'i kontrol etmek için kaynak kodun bulunduğu Linux çekirdeği dizini

Ayrıca size üçüncü göstericiyi verirdim, ama bu gorkypy yukarıda zaten yazdığı gibi, sadece şunu tekrar edebilirim: Linux aygıt sürücüleri, 3. baskı , PDF'de ücretsiz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.