以下都是在ubuntu 14.04 lts下操作
cat /proc/devices
查看當前系統有哪些主設備和主設備號
ls -l /dev
查看dev下的主設備和次設備情況,包括設備號等
ls -a /dev
查看dev下的主設備和次設備
insmod led.ko
安裝led設備
lsmod | grep led
顯示如下
led 24576 0
rmmod led.ko
刪除led設備
先刪除才能安裝
dmesg |grep led |tail -n 1
[11433.182389] led_init_success
查詢驅動led是否ok
modinfo led.ko
顯示如下
filename: /home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.ko
license: GPL
alias: led module
description: statistics of led
author: bn
srcversion: B48377DA6CF7285E7900805
depends:
vermagic: 4.2.0-41-generic SMP mod_unload modversions
還有什麼
depmod/modprobe
編譯驅動程序是:
make -C /usr/src/linux-headers-4.2.0-41-generic M=/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led
編譯測試程序是:
gcc test_led.c -o test_led
此程序中帶有main函數
Makefile文件中
all:
make -C /usr/src/linux-headers-4.2.0-41-generic M=$(PWD) modules
clean:
-rm -f *.o *.ko
make和-rm前面不能用空格,要用至少要有一個tab,否則前面會有個紅叉叉,奇怪的就是-rm和make前面都沒有tab的時候,只有-rm前面有紅叉叉,make前沒有,搞了好久,。。。。。。。加了tab後,make和-rm前面的圖標變成了綠色的朝右邊的實心箭頭
用eclipse運行ledtest程序時,console老是提示Cann't open file ,查led模塊已經在跑了,實在不知道怎麼搞,想到前面用命令執行的可以,於是還是轉回到命令窗口,直接執行./ledtest,竟然也是報Cann't open file ,靠,這不是權限不夠嗎?用sudo ./ledtest竟然可以了,這下傻了,eclipse裡面怎麼設置呢? 直接用sudo ./eclipse不行,只能切換到root模式,
執行sudo -i
然後進入ecllipse目錄
執行./eclipse
右鍵Run as local c/c++ application,不再報Cann't open file,
但是新問題又來了,我是led on為開燈,led off為關燈,如何輸入on/off呢?測試發現運行後的狀態與命令行窗口最後一次運行的狀態一致,比如在命令行窗口輸入led on開燈,然後在eclipse裡面運行,還是開燈,
解決如下:在eclipse窗口項目名字上點右鍵,在彈出的Run As選Run Configurations,然後在彈出的窗口中單擊Arguments選項卡,在program arguments中輸入參數,一個單詞為一個參數,比如on算一個,但分開寫o n就算兩個,如果要帶空格,則可以加雙引號,比如"o n "也算一個