ARM11 6410--Linux驱动程序开发演示

更新时间:2023-09-02 01:03:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

嵌入式Linux驱动程序开发演示

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

课程安排什么是Linux驱动程序 Linux驱动程序开发流程 Linux驱动程序开发示例

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

嵌入式软件嵌入式软件层次结构

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

操作系统通常嵌入式系统都配置OS层,用于实现对硬件资源的统一管理--保护操作:避免程序错误操作硬件,破坏系统 --互斥操作:系统上存在多个程序需要同时访问同一个硬件设备的情况 --同步操作:系统上有多个程序对硬件设备访问必须保证先后顺序的情况

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

驱动程序操作系统需要控制硬件设备,就需要用到设备驱动程序 --驱动程序通常作为操作系统的一部分(OS=Kernel+ DeviceDriver) --驱动负责将操作系统的操作请求,转化为特定物理设备控制器能够理解的命令

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

Linux驱动Linux驱动程序的功能 --向上为Linux系统提供访问硬件的调用接口 --向下用于控制硬件:与Arm裸机程序一样,通过读写硬件寄存器达到控制硬件的目的

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

课程安排什么是Linux驱动程序 Linux驱动程序开发流程 Linux驱动程序开发示例

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

交叉开发模型在嵌入式开发过程中有宿主机和目标机的角色之分 宿主机是编译嵌入式软件的计算机 目标机是运行嵌入式软件的硬件平台

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

内核扩展功能内核是为上层应用程序服务的,其本质其实是函数的集合 --要实现2部分功能:基本功能和扩展功能 --基本功能:进程管理、线程管理、内存管理、文件系统等 --扩展功能:根据用户需求自行添加,通常是添加设备驱动所以设备驱动功能函数写好后,必须和Linux源代码一起编译,生成zImage内核映像文件 --这种方式叫做静态添加 --每次修改或者新增驱动,都需要重新编译一次内核

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

内核模块为了便于驱动的开发,引进内核模块的概念 --修改或者增加驱动,不需要重新编译内核 --只需要加载或者卸载模块,就可以动态增加或者删除内核的功能 --内核模块开发调试完成后,有需要才将代码融入内核一起编译,成为内核的一部份 Linux驱动程序都是以模块的形式存在的,通常成为驱动模块

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

课程安排什么是Linux驱动程序 Linux驱动程序开发流程 Linux驱动程序开发示例

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

Linux驱动模块示例在PC上演示模块加载、运行、卸载源码位置:2_Linux驱动程序/1_模块示例 --dev.c:驱动模块 --Makefile:模块编译工程文件,编译出X86格式目标文件 --编译模块: make clean && make  --加载模块: insmod demo.ko --查看已加载模块: lsmod| more --卸载模块: rmmod demo.ko --查看模块打印信息: dmesg

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

LED驱动示例在开发板上演示控制LED灯源码位置:实验代码/2_Linux驱动程序/2_LED控制示例 --dev.c:Linux驱动模块 --led_port.c:LED端口驱动 --Makefile:模块编译工程文件,编译出ARM格式

目标文件将编译得到的驱动模块led.ko拷贝到开发板 --关闭已有的流水灯服务:killall led-player --加载模块led.ko,led被初始化成全灭 --创建LED设备文件: mknod devleds c 240 32下一步需要在上层应用程序通过控制/dev/led_dev设备文件控制LED灯

新南方3G嵌入式培训教学讲义:基于ARM11 S3C6410开发板下实现Linux驱动模块、LED灯字符设备驱动

每日实验<<嵌入式Linux开发环境实验手册>>实验2-2 Linux模块开发实验2-3 Linux字符驱动开发

本文来源:https://www.bwwdw.com/article/m5bi.html

Top