一、选择题

  1. Linux使用mknod命令创建设备节点
    Linux使用mkdir命令创建目录文件
    Linux使用mkfifo命令创建管道文件
  2. Linux设备驱动主要分为:字符设备、块设备、网络设备
  3. Linux驱动模块的后缀名为: .ko
  4. Linux下常用系统调用名,系统调用实际也是VFS层提供的功能
    1. read: 读取
    2. open:打开设备
    3. close:关闭设备
    4. lseek:偏移设备
    注意:fopen\fread 为标准 IO ,不是系统调用
  5. platform_driverplatform_device在总线中匹配成功后,执行probe接口
  6. Linux通过ioremap函数实现物理地址和虚拟地址的映射
  7. 设备树被内核识别后,会在/sys目录下为用户提供可视化操作接口
  8. linuxmiscdevice的主设备号是10

二、填空题

  1. printk打印内核信息时,以信息级打印应设置KERN_INFO前缀
  2. 设备树定义节点时,定义资源的属性名是reg
  3. 实现内核空间拷贝到用户空间的接口名:copy_to_user
  4. 内核提供了cdev结构体描述字符设备,cdev_add是向内核添加,cdev_del是从内核中移除

三、判断题

  1. 内核模块源码可以配置为编译进内核和以模块编译的方式
  2. 内核模块的入口需要通过module_init进行注册到内核里
  3. Linux字符设备和块设备独占主设备号
  4. Linux设备号中主设备号为12位
  5. 内核模块通过insmod命令实现用户空间向内核空间加载
  6. 使用kmalloc函数在内核空间申请内存,使用malloc函数从用户空间申请内存
  7. 内核platform总线设备是一种虚拟的设备驱动
  8. 内核通过sysfs文件系统导出内核设备模型
  9. linux内核的虚拟内存是 3 G − 4 G 3G-4G 3G−4G 空间
  10. 使用wait_event接口将当前访问进程设置为等待状态

四、简答&程序题

4.1 编写驱动的Makefile

BASE_KERNEL ?= 内核的源码目录
obj-m += 驱动源文件名.o
all:make -C $(BASE_KERNEL) M=$(PWD) modules
clean:make -C $(BASE_KERNEL) M=$(PWD) clean

4.2 驱动模块

  • ①模块加载函数,通过insmod命令加载内核,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作。
  • ②模块卸载函数,通过rmmod命令卸载某模块,被调用执行。
  • ③模块许可证声明,使用MODULE_LICENSE配置GPL的声明。
  • ④可选模块参数、模块导出符号表、模块作者等信息声明。

4.3 Global_memory文件打开

static int mem_open(struct inode *node, struct file *fp) {struct mem_dev *dev;dev = container_of(node->i_cdev, struct mem_dev, cdev);fp->private_data = dev;return 0;
}

4.4 简单的驱动程序

#include <linux/init.h>
#include <linux/module.h>static __init int hello_init(void) {printk("Hello world!\n");return 0;
}
static __exit void hello_exit(void) {printk("Goodbye!\n");
}module_init(hello_init)
module_exit(hello_exit)
MODULE_LICENSE("GPL");

嵌入式Linux驱动编程复习资料相关推荐

  1. 嵌入式Linux驱动开发笔记(未完待续。。。)

    零.嵌入式Linux驱动编程思想 1.面向对象(把一个事件抽象成一个结构体) 2.分层 3.分离 一.Git仓库用法 1.linu终端输入下面命令安装 git clone https://e.codi ...

  2. 嵌入式Linux驱动大全问世,十年磨一剑,视频!服务!新老客户都有大折扣!

    对于学习嵌入式Linux,韦东山老师整理了三条学习路线,适合与不同阶段的学员. 三条嵌入式学习路线 路线一:单片机路线 使用KEL.HAL库来快速的掌握单片机开发 路线二:深入学习单片机/RTOS/U ...

  3. 嵌入式 Linux 驱动开发你想知道的都在这

    最近看到公众号上写的一篇文章,关于嵌入式 Linux 驱动开发的方方面面,感觉提供不错,此处特意贴出来供大家参考借鉴. 1.嵌入式驱动开发到底学什么 嵌入式大体分为以下四个方向: 嵌入式硬件开发:熟悉 ...

  4. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之按键驱动框架

    文章目录 前言 1.APP怎么读取按键值 1.1.查询方式 1.2.休眠-唤醒方式 1.3.poll方式 1.3.异步通知方式 1.5. 驱动程序提供能力,不提供策略 2.按键驱动程序框架--查询方式 ...

  5. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之LED模板驱动程序的改造:设备树

    文章目录 前言 1.驱动的三种编写方法 2.怎么使用设备树写驱动程序 2.1.设备树节点要与platform_driver能匹配 2.2.修改platform_driver的源码 3.实验和调试技巧 ...

  6. Linux驱动编程 step-by-step

    第三次看了LDD3了(虽然现在已经是kernel3.0但从这本书商还是能学到很多) 每次都有一些收获 现在终于能够写一写代码了 驱动程序的作用: 简单来说 驱动程序就是使计算机与设备通信的特殊的代码, ...

  7. I.MX6U嵌入式Linux应用编程学习

    I.MX6U嵌入式Linux应用编程学习 目录 I.MX6U嵌入式Linux应用编程学习 〇.备忘 0.0 本文大写字母缩写说明 0.1 C编译 0.2 NFS与文件夹挂载 一.应用编程概念 1.1 ...

  8. 嵌入式Linux驱动笔记(十六)------设备驱动模型(kobject、kset、ktype)

    ###你好!这里是风筝的博客, ###欢迎和我一起交流. 前几天去面试,被问到Linux设备驱动模型这个问题,没答好,回来后恶补知识,找了些资料,希望下次能答出个满意答案. Linux早期时候,一个驱 ...

  9. 嵌入式linux驱动开发实战教程,嵌入式Linux驱动开发实战视频教程

    嵌入式Linux驱动开发实战教程(内核驱动.看门狗技术.触摸屏.视频采集系统) 适合人群:高级 课时数量:109课时 用到技术:嵌入式 Linux 涉及项目:驱动开发.看门狗技术.触摸屏.视频采集 咨 ...

最新文章

  1. Linux下双网卡绑定(bonding技术)
  2. java地铁线路规划_地铁线路规划——简单分析
  3. 【以太坊】web3.js的1.0版本和0.2.0版本的安装及区别
  4. 阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证
  5. 【推荐】JS面象对象编程视频教程
  6. P3577-[POI2014]TUR-Tourism【状压dp】
  7. 软工总结暨团队成员自评(胡骏)
  8. 220v转5v阻容降压电路
  9. Qt QComboBox 下拉框样式修改
  10. adb 连接某个wifi_Android中如何使用WIFI来连接ADB
  11. 2018年小学计算机面试,2018上半年小学信息技术教师资格证面试试题(精选)第一批...
  12. KeyStore(示例,出错代码)
  13. Android自定义控件(状态提示图表,我先收藏为敬
  14. 北大计算机考研复试线,北京大学计算机考研分数线及报录比
  15. chrome+链接android手机,为什么android手机限制chrome浏览器数据连接还可以上网
  16. 服务器hdmi如何连接显示器,容易被忽略的HDMI连接显示器的一个重要设置
  17. java计算机毕业设计数字家谱管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署
  18. 自动化办公神器!用Python批量识别发票并录入到Excel表格!可以讨财务女神开心了!
  19. 《人月神话》作者去世,我们都曾读过他的书
  20. JavaScript语句

热门文章

  1. ggplot 绘制热图
  2. 关于BIOS升级的方法
  3. 我也来读jquery
  4. 2018华为暑假实习面试
  5. %d %ld %lld
  6. DPlayer – H5视频播放器使用方法介绍
  7. 如何使用 iif 来判断日期是否为空
  8. 【论文笔记】SlowFast Networks for Video Recognition
  9. excel单元格内容拆分_EXCEL单元格里提取、删除或替换部分内容
  10. 使用webgl绘制一个点