上次編譯成功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...