实验四设备驱动.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验四设备驱动

实验三 基于ARM9 2440linux系统设备驱动 一、实验内容 在ARM9系列s3c2440开发版平台上基于linux实现LED流水灯驱动的编写与实现。首先确定所使用的Linux的内核版本以及gcc版本,然后配置交叉编译环境,最后编写实现驱动。 实验目的 1、了解Linux设备驱动的编写环境; 2、熟悉编写Linux设备驱动的完整流程; 3、完成Led灯驱动的编写,是基于Linux编写其他驱动程序的基础。 实验原理 linux系统将设备分为3类:字符设备、块设备、网络设备。字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和SD卡等。 每种类型的驱动程序,不管是字符设备还是块设备都为内核提供相同的调用接口,因此内核能以相同的方式处理不同的设备。Linux 为每种不同类型的设备驱动程序维护相应的数据结构,以便定义统一的接口并实现驱动程序的可装载性和动态性。Linux 设备驱动程序与外界的接口可以分为如下三个部分。 1.驱动程序与操作系统内核的接口:通过数据结构file_operations来完成的。 2.驱动程序与系统引导的接口:这部分利用驱动程序对设备进行初始化。 3.驱动程序与设备的接口:这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关。它们之间的相互关系如下图所示。 当一个模块设备驱动加载到内核,将执行一些初始的工作,如重新设置设备,reservingRAM, reserving interrupts, reserving input/output ports, etc.这些工作得以在内核空间执行,必须要有两个函数存在:module_init 和module_exit;它们对应于用户空间的insmod和rmmod命令。总之,用户命令insmod和rmmod使用了内核空间的函数module_init和module_exit. 要实现GPIO控制LED的驱动,先看看电路图,实验箱使用引脚GPJ4控制LED1(D501),GPJ1控制LED2(D502),GPJ2控制LED3(D503),GPJ11控制LED4(D504)如图所示,LED分别通过两个SN74LVC245A和S3C2440引脚连接,点灯具体设置如下:①设置245芯片方向,设置为0即可控制LED灯;②设置LED控制引脚为输出状态;③由LED电路图设置,点亮LED时令引脚输出1,熄灭LED时令引脚输出0。 图三 LED模块电路图 四、实验步骤 1.准备工作:使用串口连接把ARM9 S3C2440实验箱和PC端连接起来。然后开启虚拟机并使用命令cat /proc/version进入串口查看实验箱Linux的内核版本和内核镜像编译采用的gcc版本。如下图所示: 从上图可以看出试验箱采用的Linux内核版本为2.6.30.4,gcc版本为4.3.3,则交叉编译环境应改为4.3.3版本。 2.使用命令解压EABI-4.3.3_EmbedSkytar.bz2,在home目录下使用tar xvfj EABI-4.3.3_EmbedSkytar.bz2,如图所示: 解压之后虚拟机home下面解压之后多了opt,usr两个文件夹。进入home目录后,可以看出opt目录权限不足,使用命令chmod对其权限进行修改。 3.将解压后产生的opt/EmbedSky/4.3.3拷贝到opt/EmbedSky下,拷贝之后/opt/EmbedSky目录内容如下所示: 建立交叉编译环境:在虚拟机中输入命令 gedit /etc/bash.bashrc,在该文件下添加如下信息export PATH=/opt/EmbedSky/4.3.3/bin:$PATH,并用”#”注释掉之前配置的3.4.1的环境变量。 在虚拟机中输入source /etc/bash.bashrc 命令,然后再输入命令arm-linux-gcc –v,如果出现信息gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176),表示环境变量配置为4.3.3成功。 6.将Linux-2.6.30.4的源代码,复制到工作目录下并解压。在根目录下用mkdir work/EmbedSky新建路径,并进入home/opt/EmbeySky使用cp 命令将内核源代码压缩包linux-2.6.30.4.tar.gz复制到新建的work/EmbedSky文件夹中,

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档