UART子系统(七)字符设备驱动程序的另一种注册方法

简介: UART子系统(七)字符设备驱动程序的另一种注册方法

字符设备驱动程序的另一种注册方法


参考资料


参考代码:drivers\char\pc8736x_gpio.c


本节课程源码在GIT仓库里


驱动大全:

doc_and_source_for_drivers\IMX6ULL\source\09_UART\
  03_char_dev_driver\
  01b_hello_drv
doc_and_source_for_drivers\STM32MP157\source\A7\09_UART\
  03_char_dev_driver\
  01b_hello_drv
快速入门:
01_all_series_quickstart\05_嵌入式Linux驱动开发基础知识\source\
  01b_hello_drv


1. 字符设备驱动程序框架


1670938359176.jpg

编写驱动程序的套路:


确定主设备号,也可以让内核分配

定义自己的file_operations结构体

实现对应的drv_open/drv_read/drv_write等函数,填入file_operations结构体

file_operations结构体告诉内核:register_chrdev

谁来注册驱动程序啊?得有一个入口函数:安装驱动程序时,就会去调用这个入口函数

有入口函数就应该有出口函数:卸载驱动程序时,出口函数调用unregister_chrdev

其他完善:提供设备信息,自动创建设备节点:class_create, device_create


2. 新的注册方法


参考代码:drivers\char\pc8736x_gpio.c


注册字符设备区域

有主设备号:register_chrdev_region

无主设备号:alloc_chrdev_region

分配/设置/注册cdev

cdev_alloc

cdev_init

cdev_add


3. 上机实验


3.1 IMX6ULL


先设置工具链:

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin


编译、执行程序:

Ubuntu:
cd 01_hello_drv\
make
开发板:
insmod hello_drv.ko
./hello_drv_test  -w abcd
./hello_drv_test  -r


3.2 STM32MP157


先设置工具链:

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin


编译、执行程序:

Ubuntu:
cd 01_hello_drv\
make
开发板:
insmod hello_drv.ko
./hello_drv_test  -w abcd
./hello_drv_test  -r
相关文章
|
4月前
|
Linux 程序员 芯片
【Linux驱动】普通字符设备驱动程序框架
【Linux驱动】普通字符设备驱动程序框架
|
4月前
|
Linux
【Linux驱动学习(1)】USB与input子系统,linux统一设备模型,枚举,USB描述符深入剖析
【Linux驱动学习(1)】USB与input子系统,linux统一设备模型,枚举,USB描述符深入剖析
|
Linux C语言
Linux驱动 | 在驱动中创建sysfs接口
Linux驱动 | 在驱动中创建sysfs接口
LED模板驱动程序的改造:总线设备驱动模型
LED模板驱动程序的改造:总线设备驱动模型
105 0
|
移动开发 Unix Linux
UART子系统(四) TTY驱动程序框架
UART子系统(四) TTY驱动程序框架
227 1
UART子系统(四) TTY驱动程序框架
UART子系统(八)UART驱动情景分析_注册
UART子系统(八)UART驱动情景分析_注册
74 1
UART子系统(八)UART驱动情景分析_注册
|
存储 Ubuntu Linux
UART子系统(五) 串口应用编程之回环(下)
UART子系统(五) 串口应用编程之回环
534 1
UART子系统(五) 串口应用编程之回环(下)
UART子系统(十二)UART驱动调试方法
UART子系统(十二)UART驱动调试方法
184 0
UART子系统(十二)UART驱动调试方法
|
Ubuntu 开发工具 虚拟化
UART子系统(十六)编写虚拟UART驱动程序_调试
UART子系统(十六)编写虚拟UART驱动程序_调试
274 0
UART子系统(十六)编写虚拟UART驱动程序_调试
UART子系统(一)初识
UART子系统(一)初识
145 0
UART子系统(一)初识