字符设备驱动

来源:互联网 发布:windows五笔输入法 编辑:程序博客网 时间:2024/06/16 22:37
mknod 创建设备文件命令
例如:mknod -m 666 /dev/myuart c 210 0(210:主设备号 0:次设备号)

开发板上执行cat /proc/devices    查看主设备号
从大到小查找未使用的主设备号(一般推荐使用210~254之间的主设备号)
内核优先使用小的主设备号

//字符设备驱动的注册
#define MYMAJOR 210
//1.参数一次是主设备号,设备名的注释,注册函数,返回值0表示成功,负数表示失败
//2.第一个参数是0,表示让操作系统分配一个主设备号
rc = register_chrdev(MYMAJOR, "uart0", &myuart_ops);    

//字符设备驱动的注销
unregister_chrdev(MYMAJOR, "uart0");


=================================================================================================
字符设备驱动--uart_char执行步骤:
两根串口线,一根接uart0,另一根接uart3,接uart0的是主设备,执行以下命令:
sudo minicom
rx myuart.ko
rx app
chmod a+x app
mknod -m 666 /dev/myuart c 210 0
mount
insmod myuart.ko
cat /proc/devices
./app
任意按下键盘按键,通常会在接uart3的设备回显,按下Ctrl+C,在接uart3的设备上按下任意键就会退出.




-------------------------------------------
自动创建设备文件:
rx myuart.ko
rx mymknod.sh
chmod 777 mymknod.sh
./mymknod.sh
ls -l /dev/myuart
insmod myuart.ko
cd /etc/init.d
ls rcS
vi rcS

将以下两行代码插入rcS文件中
insmod /myuart.ko    插入export下边
/mymknod.sh    插入文件最后

reboot重启
lsmod
ls -l /dev/myuart
vi /etc/init.d/rcS
将插入的两行代码注掉
insmod /myuart.ko
/mymknod.sh
--------------------------------------------

sudo apt-get install ctags
进入内核源码包执行:ctags -R .
ls tags -l
vi tags
vi -t register_chrdev
光标放在宏上
Ctrl +],返回用Ctrl +O

--------------------------------------------
vi hello.c
#define MYMAJOR = 210
make clean.make
sudo minicom
rx myuart.ko
insmod myuart.ko
cat /proc/devices

vi Makefile
模块名改为myuart2.ko
vi hello.c
#define MYMAJOR = 465
make clean,make
sudo minicom
rx myuart2.ko
insmod myuart2.ko
cat /proc/devices
--------------------------------------------
cd ../../linux-2.6.35.7/include/linux/
vi cdev.h
vi list.h




====================================================================================================
make menuconfig
Device Drivers
Character devices
< > LED Support for FriendlyARM Mini210 GPIO LEDs
保存退出

rm ../linux-2.6.35.7/drivers/char/mini210_leds.o
重新编译内核:make
将linux-2.6.35.7/arch/arm/boot/目录下的zImage替换SD卡的linux目录下的zImage
以SD卡的方式重启开发板重新安装系统

sudo minicom
rx mini210_leds.ko
rx app
chmod 777 app
insmod mini210_leds.ko
ls /dev/leds -l
./app 0 1(0:表示led_1 1:表示低电平,亮)

0 0
原创粉丝点击