第二個驅動

2021-09-08 07:16:19 字數 2693 閱讀 7225

上次編譯成功hello world,興奮了好一會,呵呵。之前一直嘗試都沒成功。。。緣分未到,各種各樣的原因會讓嘗試失敗。

用hello.ko練習了一把insmod,lsmod,rmmod,modinfo等命令,這些是使用module的基本命令吧。

然後就開始著手開展下一步學習了,有個guide上面說,編譯完hello world之後,可以動手做乙個比較完整的字元裝置驅動了,當然,我還是想找些例子再模仿下,所以有了這個hello world 的公升級版。

廢話少說,上modulev.c**:

#include 

<

linux

/module.h

>

#include 

<

linux

/init.h

>

#include 

<

linux

/fs.h

>

#include 

<

linux

/cdev.h

>

//當使用者空間**呼叫了open()函式時會呼叫my_cdev_open()

//int

my_cdev_open(

struct

inode 

*inod,

struct

file 

*fp)

//當使用者空間的**呼叫了close()系統呼叫時會呼叫my_cdev_release()

intmy_cdev_release(

struct

inode 

*inod,

struct

file 

*fp)

struct

cdev my_cdev;

struct

file_operations my_fops;

//初始化時註冊裝置號,初始化字元裝置

intmy_cdev_init(

void

)my_fops.open 

=my_cdev_open;

my_fops.release 

=my_cdev_release;

cdev_init(

&my_cdev,

&my_fops);

cdev_add(

&my_cdev,mkdev(33,

0),1);

return0;

}//解除安裝模組時刪除裝置並釋放掉占用的裝置號

void

my_cdev_exit(

void

)module_init(my_cdev_init);

module_exit(my_cdev_exit);

module_license(

"gpl");

還有makefile,補充下,這個是我改的,原來那個不知道為啥用不了,先不管。

#makefile2.6

pwd :=$

(shell pwd)

#kver ?= $(shell uname -r)

kver 

?=2.6.19

kdir :=/

home

/jessen

/global

/atmel

/linux

-2.6.19

all:

$(make) -c 

$(kdir) m

=$(pwd)

clean:

rm -

rf .

*.cmd 

*.o 

*.mod.c 

*.ko .tmp_versions

kdir是我核心放置的地方,搗鼓hello.ko的時候知道,核心必須要make過的,這樣才能用來編譯模組。

so。。。參照編譯hello.ko的過程檢查完,一切ok,編譯通過!

把modulev拷貝到我的板子上~~~~

先用下面的命令建立乙個字元裝置檔案:

mknod my_cdev c 330

然後:insmod modulev.ko

這裡看不到效果啦,呵呵,有乙個測試程式open.c

#include 

<

stdio.h

>

#include 

<

sys/

types.h

>

#include 

<

sys/

stat.h

>

#include 

<

unistd.h

>

#include 

<

fcntl.h

>

intmain (

intargc, 

char

**ar**)

close (fd);

return0;

} [root@vl

-ems

-ii 

/home]

#./open my_cdev

opening device...

major device no: 

33closing device...

[root@vl

-ems

-ii 

/home]#

everything is ok~~~接下來是仿寫,修改,呵呵

第二個作業!

作業要求 從鍵盤輸入乙個四位正整數。首先分離出該正整數中的每一位數字,並按逆序顯示輸出各位數字 然後用分離出的每位數字組成乙個最大數和乙個最小數,並顯示輸出。例如,若輸入的四位正整數為3175。按逆序顯示輸出分離出的各位數字為5713 組成的最大數為7531,組成的最小數為1357。具體要求 1 輸...

第二個系統

在進入工作後,參與的第二系統,也剛好是乙個失敗的專案重新再設計的乙個專案。全程參與了設計討論和相關功能模組的實現。到最後證明,這個系統依舊是失敗的。事隔了1年多了,回頭看問題,希望能看明白它。首先,整個團隊太年輕了。不是剛畢業沒多久,就是工作了才一年。其次,需求的失控,不懂得拒絕 因為是進入工作不久...

第二個衝刺

1.開始乙個新的衝刺 起止 2016.6.1 2016.6.14 按照以下過程進行 sprint演示 sprint 回顧 團隊部落格要求 每天一篇,顯示專案進展,簡潔地將站立會議的結果 看板 燃盡圖等更新上去。此次衝刺的評分依據 每天的部落格更新,sprint演示,github 執行。product...