泰山派4--编写驱动中的申请字符类设备号

准备工作:
材料:

- 一台装有Linux虚拟机的PC
- 一个泰山派开发板
- 一个串口烧录器CH341
设备号的操作轮廓

在Linux中操作设备号需要两个头文件:
#include <linux/cdev.h>
#include <linux/fs.h>
设备号是分为主设备号和副设备号两部分,主设备号是用来区分不同类别的设备,次设备号是区分同类设备中的不同设备个体,设备号的数据类型是 dev_t, 也就是一个32位的无符号整型(unsigned int),它高12位表示主设备号,低20位表示次设备号。
在Linux内核中提供了操作设备号的3个宏:
1.MAJOR(设备号):通过设备号获取主设备号。
2.MINOR(设备号):通过设备号获取次设备号。
3.MKDEV(设备号):通过主设备号和副设备号合成设备号。
使用函数 alloc_chrdev_region 向系统动态申请设备号,差不多就是自动申请的意思:
int alloc_chrdev_region(dev_t * , unsigned, unsigned, const char *) ;
这个函数一共四个参数:1. dev_t * :表示获取到设备号后需要存放的位置指针。
2. unsigned :次设备号的开始号,就是从几开始,一般默写0。
3. unsigned :你需要的设备号的个数,就是你想申请几个设备。
4. const char *:你申请的这些设备号的名字。
注销设备号用的函数是:unregister_chrdev_region(dev_t, unsigned); 第一个参数就是你想注销的设备号,第二个参数是注销的设备个数。
编写驱动.c文件

这次在上几篇驱动中的框架基础上进行编写:
编写Makefile文件

这次在上几篇驱动中的框架基础上进行编写:
编译

还按之前的套路。
在泰山派上测试




用insmod 命令加载模块,然后用命令cat查看 /proc/devices 下新建的设备号和名字。











