以下都是在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 "也算一个