mini2440 核心原始碼驅動閱讀

2021-09-07 09:14:56 字數 1389 閱讀 1677

mini2440所有驅動都有共同的地方(linux-2.6.32.2\arch\arm\mach-s3c2440\mach-mini2440.c)。

a.使用 dm9000.

**路徑:

linux-2.6.32.2\drivers\net\dm9000.c 網絡卡的全部操作硬體的驅動。

linux-2.6.32.2\arch\arm\mach-s3c2440\mach-mini2440.c 主要功能是把網絡卡新增到匯流排。

b.網絡卡驅動如何與tcp/ip協議進行聯絡。

是通過 net/core/dev.c 來實現的, 它是linux抽象出的乙個核心網路裝置, 用來連線網路協議棧和網絡卡驅動, 這個core-dev 提供了乙個net_device_ops資料結構, 由具體的網絡卡驅動來填充這個介面, 比如上面提到的 static const struct net_device_ops dm9000_netdev_ops = { .ndo_open = dm9000_open, 這個動作就是實現core-dev的ndo_open動作。 你可以研究下loopback裝置, 這個有助於你理解linux協議棧與網絡卡驅動間的關係, 以及ifconfig這些命令的實現原理。

\linux-2.6.32.2\drivers\video\s3c2410fb.c

參考:linux-4.9.2核心在mini2440上的移植(九)——lcd驅動移植

程式基本結構

1.模組初始化-->向platform核心註冊自己

2.實現linux裝置模型必須的probe函式-->向frambuffer核心註冊自己(最重要)

resume函式-->系統在由掛起恢復的時候呼叫

suspand-->系統在掛起的時候呼叫 

remove--> 驅動程式登出自己的時候呼叫                  

3.frambuffer驅動模型fb_ops各函式的實現-->實現fb驅動的ioctl命令需要的函式

mini2440lcd驅動分別涉及到了platform和frambuffer核心,利用這兩個核心實現其功能。

路徑:linux-2.6.32.2\drivers\char\mini2440_leds.c

linux-2.6.32.2\drivers\char\mini2440_pwm.c

linux-2.6.32.2\drivers\char\mini2440_buttons.c

linux-2.6.32.2\arch\arm\plat-s3c24xx\gpio.c

參考:linux-2.6.32.2核心在mini2440上的移植(十五)---移植led驅動

參考:基於linux-2.6.32.2在mini2440驅動分析一:串列埠驅動

路徑: linux-2.6.32.2/drivers/serial/s3c2440.c

(end)

mini2440之ADC驅動分析

一,adc原理 adc,模數轉換器,將模擬量轉換成數字量,取樣,保持電路與ad轉換器整合在一起。ad轉換器模擬輸入訊號是直流電壓訊號,0 3.3v之間。s3c2440有8路模擬輸入訊號,ad轉換器內部有乙個模擬多路選擇器,某一時刻只能將一路模擬輸入訊號,通過模擬多路選擇器接通進行ad轉換,而其他路模...

mini2440 解除安裝模組

我的mini2440買回來這麼久了,一直有個問題很奇怪,就是執行insmod ko一切正行,lsmod也可以看到你插入的模組,但是用rmmod就會出現no such file,一直對這個問題就感覺很奇怪,也google了很多,網上五花八門的答案都有。最後還是仔細看了手冊才找到答案,原來是要把板子上的...

mini2440儲存空間

s3c2440把低1g的空間分成了8塊,由圖可知,第0至6這七塊的起始位址是不變的。而第七段的位址是可變的 它的位址有第六塊需要用到多少來決定,反正就是第六第七是連在一起的 前6塊可以是rom sram 最後兩塊不但可以是rom,sram外,還可以是sdram.其實啊,簡單點的說,就是只有最後兩塊才...