- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
电子科技大学微机实验报告 实验5
实验五基于 ARM 的模块方式驱动程序实验【实验目的】1.掌握 Linux 系统下设备驱动程序的作用与编写技巧2.掌握 Linux 驱动程序模块加载和卸载的方法3.了解 Linux 内核中的 makefile 和 kconfig 文件【实验内容】1.基于 s3c2440 开发板编写 led 驱动程序。2.将编写好的 led 驱动加入 linux 内核中,修改 makefile 和 kconfig 文件,配置和编译内核。3.编写关于 led 的测试程序,交叉编译后运行,控制 led 灯的亮灭。【预备知识】1.了解 ARM9 处理器结构和 Linux 系统结构2.熟练掌握 C 语言。【实验设备和工具】?硬件:ARM 嵌入式开发平台,PC 机 Pentium100 以上。?软件:PC 机 Linux 操作系统+MINICOM + AMRLINUX 开发环境【实验原理】?linux 设备驱动程序?驱动的模块式加载和卸载?编译模块?装载和卸载模块?led 驱动的原理在本开发板上有八个 led 指示灯,从下往上分别为 LED0-LED7。这八个 led 灯都是 接的芯片上的 gpio 口(通用功能输入输出口)。在本实验的开发板硬件设计中,当 led 灯对 应的 gpio 的电平为低时,led 灯被点亮;当 led 灯对应的 gpio 的电平为高时,led 灯灭。本 驱动的作用就是通过设置对应 gpio 口的电平来控制 led 的亮灭。因为 ARM 芯片内的 GPIO 口都是复用的,即它可以被配置为多种不同的功能,本 实验是使用它的普通的 I/O 口的输出功能,故需要对每个 GPIO 口进行配置。在内核中已经 定义了对 GPIO 口进行配置的函数,我们只需要调用这些函数就可以完成对 GPIO 口的配置。【实验步骤】 实验程序运行效果:程序会提示:“please enter the led status”输入与希望显示的 led 状态对应的 ledstatus 值(输入十进制值即可),观察 led 的显示情况。 例如:?输入数字“3”,对应的二进制数字为点亮 LED2~LED7?输入数字“4”,对应的二进制数字为点亮 LED0,LED1,LED3~LED7【实验结果和程序】C 语言程序:#includelinux/config.h#includelinux/module.h#includelinux/kernel.h#includelinux/devfs_fs_kernel.h#includelinux/fs.h#includelinux/init.h#includelinux/device.h#includelinux/cdev.h#includeasm/hardware.h#includeasm/delay.h#includeasm/uaccess.h#includeasm/arch/regs-gpio.h#includeasm/arch/hardware.h#define DEVICE_NAME s3c2440-led static int LedMajor=231;static int LedMinor=0;static char ledstatus=0xff;static struct class *s3c2440_class;static struct cdev * s3c2440_led_cdev;/********************************************************************************************************** Function name: Update_led()** Descriptions: update the led status** Input : NONE** Output: NONE********************************************************************************************************/static void Update_led(void){if(ledstatus0x01)s3c2410_gpio_setpin(S3C2410_GPC7,1); //LED0 灭elses3c2410_gpio_setpin(S3C2410_GPC7,0); //LED0 亮if(ledstatus0x02)s3c2410_gpio_setpin(S3C2410_GPC5,1); //LED1 灭elses3c2410_gpio_setpin(S3C2410_GPC5,0); //L
文档评论(0)