会员中心     
首页 > 资料专栏 > HRM > 人力资源 > 面试甄选 > 嵌入式面试资料-linux驱动开发DOCX

嵌入式面试资料-linux驱动开发DOCX

hnghf
V 实名认证
内容提供者
热门搜索
面试
资料大小:1926KB(压缩后)
文档格式:DOCX(16页)
资料语言:中文版/英文版/日文版
解压密码:m448
更新时间:2025/4/26(发布于河南)

类型:积分资料
积分:10分 (VIP无积分限制)
推荐:免费申请

   点此下载 ==>> 点击下载文档


“嵌入式面试资料-linux驱动开发DOCX”第1页图片 图片预览结束,如需查阅完整内容,请下载文档!
文本描述
Linux驱动
前言:
字符设备:字节读取
块设备:存储设备
网络设备:USB WIFI/SDIO WIFI
驱动:获取外设或传感器数据、控制外设
编写一个驱动、写一个简单测试应用程序APP(驱动和应用是完全分开的)
数据段、代码段、BSS段、堆、栈
用户态进入内核态:系统调用、异常和陷入
应用程序调用库API再调用系统调用
应用层:写open、write、read、close
驱动对应也写open、write、read、close
框架
Linux 内核文件 include/linux/fs.h 中有个叫做 file_operations 的结构体,里面有open、read等函数
驱动模块的加载和卸载
module_init(xxx_init); //注册模块加载函数
module_exit(xxx_exit); //注册模块卸载函数
加载模块:insmod和 modprobe drv.ko
字符设备注册和注销
static inline int register_chrdev(unsigned int major, const char *name,const struct file_operations *fops)
static inline void unregister_chrdev(unsigned int major, const char *name)
major:主设备号,Linux 下每个设备都有一个设备号,设备号分为主设备号和次设号两部分,关于设备号后面会详细讲解。
name:设备名字,指向一串字符串。
fops:结构体 file_operations 类型指针,指向设备的操作函数集合变量。
“cat /proc/devices”可以查看当前已经被使用掉的设备号
实现设备的具体操作函数
/* 打开设备 */
static int chrtest_open(struct inode *inode, struct file *filp)
{/* 用户实现具体功能 */return 0;
}
/* 从设备读取 */
static ssize_t chrtest_read(struct file *filp, char __user *buf,
size_t cnt, loff_t *offt)
{/* 用户实现具体功能 */return 0;
}
/* 向设备写数据 */
static ssize_t chrtest_write(struct file *filp,const char __user *buf,
size_t cnt, loff_t *offt)
{/* 用户实现具体功能 */return 0;
}
/* 关闭/释放设备 */
static int chrtest_release(struct inode *inode, struct file *filp)
{/* 用户实现具体功能 */return 0;
}
static struct file_operations test_fops = {.owner = THIS_MODULE,.open = chrtest_open,.read = chrtest_read,.write = chrtest_write,.release = chrtest_release,
};
/* 驱动入口函数 */
static int __init xxx_init(void)
{/* 入口函数具体内容 */int retvalue = 0;/* 注册字符设备驱动 */retvalue = register_chrdev(200, "chrtest",