- 4
- 0
- 约1.05万字
- 约 48页
- 2017-06-03 发布于湖北
- 举报
教学内容 第一章 嵌入式系统概述 第二章 学习板硬件及开发环境的建立 第三章 构建嵌入式Linux系统 第四章 嵌入式Linux设备驱动 第五章 嵌入式Linux串口和网络编程 第六章 嵌入式Linux图形编程 第四章 嵌入式Linux驱动程序 4.1 嵌入式Linux设备驱动简介 4.2 设备的分类及特点 4.3 构造和运行驱动程序模块 驱动程序的作用 内核态和用户态 大多数OS(包括Linux)把内核和运行在其上的应用程序分为两个层次管理,即用户态和内核态 内核态有较高的权限,可以控制处理器内存的映射和分配方式等等————对应于ARM的svc模式 用户态:只能运行系统上的应用程序————对应于ARM的usr模式 内核态与用户态切换:可通过软件中断实现 内核态和用户态 驱动程序作为系统内核的一部分,其工作在内核态,而应用程序工作在用户态,即不能直接通过指针,把用户空间的数据地址传递给内核(MMU映射地址不一样)。 需要经过转换,把用户态“看到的空间”转换成内核态可访问的地址。Linux系统提供了一系列方便的函数实现这种转换,如:__get_user、__put_user、 __copy_from_user、__copy_to_user Linux内核结构 Linux内核结构 应用程序、库、内核、驱动程序的关系 4层软件关系说明 (1)应用程序使用库函数提供的open函数打开设备文件 (2)库根据open函数传入的参数执行“swi”指令,引起CPU异常,进入内核 (3)内核的异常处理函数根据这些参数找到相应的驱动程序,返回一个文件描述符给库,进而返回给应用程序 (4)应用程序得到文件描述符后,使用库提供的write或ioclt函数发出控制命令 (5)库根据write或ioclt函数传入的参数执行“swi”指令,这条指令会引起CPU异常,再次进入内核 (6)内核的异常处理函数根据参数调用驱动程序的相关函数,控制硬件 打印调试printk 指示日志级别的宏 KERN_EMERG 用于紧急事件消息,一般是系统崩溃前提示0 KERN_ALERT 用于需要立即采取动作1 KERN_CRIT 临界状态,通常涉及到严重的硬件或软件操作失败2 KERN_ERR 用于报告错误状态,设备驱动程序会经常使用其来报告来自硬件的问题3 KERN_WARNING 用于对可能出现的问题进行警告4 KERN_NOTICE 用于有必要进行提示的正常情况5 KERN_INFO 提示性信息6 KERN_DEBUG 用于调试信息7 打印调试printk 每个宏表示一个 中的整数(0~7),数值越小,优先级越高 未指定优先级在内核2.6版本中就是KENR_WARNING 简单的内核模块编译(内核2.4) 编译内核模块 #gcc –O -DMODULE -D__KERNEL__ -c hello.c -I /usr/src/linux/include (x86 or ARM ? ) 生成hello.o 加载内核模块:insmod 模块文件名 #insmod hello.o #dmesg Hello,world 查看内核中使用的模块 #lsmod | grep hello 卸载内核模块:rmmod 模块名称 #rmmod hello.o #dmesg Goodbye world 简单的内核模块编译(内核2.6) obj-m := led_drv.o KDIR:=/home/at9200/kernel/linux-2.6.38/ PWD :=$(shell pwd) all: make -C $(KDIR) M=$(PWD) modules clean: make -C $(KDIR) M=$(PWD) clean 简单的内核模块编译(内核2.6) obj-m := led_drv.o表示编译后生成led_drv.ko模块 $(KDIR) 指定了target内核源码的路径,“M=”表示这是个外部模块,M=$(PWD) 指定了该模块文件所在的路径。 简单的内核模块编译(内核2.6) 如果是多个源文件编译出一个模块,假设模块名是test.ko,那么源文件名不能有test.c obj-m := test.o test-objs := file1.o file2.o file3.o KDIR := /home/at9200/kernel/linux-2.6.38/ PWD
您可能关注的文档
- 第四节 Windows XP操作系统.ppt
- 第四节 表格处理.doc
- 第四节 操作系统基础 第五版——讲.ppt
- 第四节 窗体练习.doc
- 第四节 工程合同订立阶段的合同管理.ppt
- 第四节 古生物的主要门类.ppt
- 第四节 合同法律制度-技术合同.pdf
- 第四节 汇编语言.ppt
- 第四节 汇编语言程序设计2.ppt
- 第四节 基于ARM的嵌入式程序设计.ppt
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- 《婴幼儿回应性照料》教案 项目五 19~36月龄幼儿教育活动的设计与指导.pdf VIP
- S7-1200PLC应用技术项目教程 项目一 认识S7-1200PLC.pptx VIP
- 三国志袁绍传2022国庆节3版攻略.pdf VIP
- 2022《蒙氏教育理念下的幼儿园教室环境创设》研究报告14000字.doc VIP
- 《婴幼儿回应性照料》教案 第二讲 婴幼儿营养与喂养的回应性照料.pdf VIP
- 《2025年陕西省事业单位招聘考试综合类职业能力倾向测验真题试卷》.docx VIP
- 《2025年陕西省事业单位招聘考试综合类职业能力倾向测验真题试卷》.docx VIP
- 《婴幼儿回应性照料》教案 第五讲 婴幼儿心理发展的回应性照料.pdf VIP
- 《婴幼儿回应性照料》教案 第八讲 婴幼儿回应性照料评估.pdf VIP
- 事业单位招聘考试综合类职业能力倾向测验强化训练试卷》.docx VIP
原创力文档

文档评论(0)