没有合适的资源?快使用搜索试试~ 我知道了~
嵌入式Linux驱动开发基础知识
5星 · 超过95%的资源 需积分: 48 47 下载量 85 浏览量
2020-03-30
00:35:33
上传
评论 5
收藏 6.98MB PDF 举报
温馨提示
试读
68页
百问网出品,嵌入式Linux驱动开发基础知识,非常基础的知识点,值得学习,十分适合嵌入式Linux初学者!!
资源推荐
资源详情
资源评论
淘宝:
100ask.taobao.com
- 2 -
电话:
0755-86200561
官网:
www.100ask.net
邮箱:
support@100ask.net
1.2 需要做什么准备工作
驱动程序依赖于 Linux 内核,你为开发板 A 开发驱动,那就先在 Ubuntu 中得到、配
置、编译开发板 A 所使用的 Linux 内核。
请使用 git 下载本教程的文档、源码,查看如下目录中你所用开发板的高级用户使用
手册(有些开发板的手册我们还没编写完,持续更新):
根据手册完成下面操作:
硬件部分:
① 开发板接线:串口线、电源线、网线
② 开发板烧写系统
软件部分:
① 下载 Linux 内核,Windows 和 Ubuntu 下各放一份
② Windows 下:使用 Source Insight 创建内核源码的工程,这是用来浏览内核、编辑驱动
③ Ubuntu 下:安装工具链,配置、编译 Linux 内核
注意:git 的使用方法请参考 http://wiki.100ask.net 中的“初学者学习路线”:
淘宝:
100ask.taobao.com
- 3 -
电话:
0755-86200561
官网:
www.100ask.net
邮箱:
support@100ask.net
2. Hello 驱动(不涉及硬件操作)
我们选用的内核都是 4.x 版本,操作都是类似的:
rk3399 linux 4.4.154
rk3288 linux 4.4.154
imx6ul linux 4.9.88
am3358 linux 4.9.168
2.1 APP 打开的文件在内核中如何表示
APP 打开文件时,可以得到一个整数,这个整数被称为文件句柄。对于 APP 的每一个
文件句柄,在内核里面都有一个“struct file”与之对应。
可以猜测,我们使用 open 打开文件时,传入的 flags、mode 等参数会被记录在内核
中对应的 struct file 结构体里(f_flags、f_mode):
int open(const char *pathname, int flags, mode_t mode);
去读写文件时,文件的当前偏移地址也会保存在 struct file 结构体的 f_pos 成员里。
淘宝:
100ask.taobao.com
- 5 -
电话:
0755-86200561
官网:
www.100ask.net
邮箱:
support@100ask.net
2.3 请猜猜:
怎么编写驱动程序?
①
确定主设备号,也可以让内核分配
②
定义自己的
file_operations
结构体
③
实现对应的
drv_open/drv_read/drv_write
等函数,填入
file_operations
结构体
④
把
file_operations
结构体告诉内核:
register_chrdev
⑤
谁来注册驱动程序啊?得有一个入口函数:安装驱动程序时,就会去调用这个入口函数
⑥
有入口函数就应该有出口函数:卸载驱动程序时,出口函数调用
unregister_chrdev
⑦
其他完善:提供设备信息,自动创建设备节点:
class_create, device_create
2.4 请不要啰嗦,表演你的代码吧
①
写驱动程序
参考 driver/char 中的程序,包含头文件,写框架,传输数据:
A. 驱动中实现 open, read, write, release,APP 调用这些函数时,都打印内核信息
B. APP 调用 write 函数时,传入的数据保存在驱动中
C. APP 调用 read 函数时,把驱动中保存的数据返回给 APP
②
写测试程序
测试程序要实现写、读功能:
A. ./hello_drv_test -w wiki.100ask.net // 把字符串“wiki.100ask.net”发给驱动程序
B. ./hello_drv_test -r // 把驱动中保存的字符串读回来
剩余67页未读,继续阅读
资源评论
- 忧伤的石一2023-07-26实际应用情景,该文件对常见问题给予了解答,实用性较强。
- whph2023-07-26个别地方稍显晦涩,但整体而言,这份文件仍然具有很高的参考价值。
- 呆呆美要暴富2023-07-26循序渐进地介绍了嵌入式Linux驱动开发的要点,易于理解。
- 玛卡库克2023-07-26实、逻辑清晰,对初学者非常友好。
- 焦虑肇事者2023-07-26件提供了嵌入式Linux驱动开发的基础知识。
hero0619
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功