嵌入式LED实验(共18页).doc
《嵌入式LED实验(共18页).doc》由会员分享,可在线阅读,更多相关《嵌入式LED实验(共18页).doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上石家庄铁道大学嵌入式系统实验报告-实验四 LED 驱动及控制实验实验者姓名:崔乐乐实验者学号:同组人:孔维春实验者班级:信1201-2所在学院:信息科学与技术学院课程编号:L指导教师:刘展威报告完成日期:2015年4月 19 日1. 实验目的 了解 ARM 设备外围电路结构与接口原理 熟悉 Linux 系统下硬件驱动编程 编程实现对嵌入式设备上 LED 灯的控制2. 实验内容 阅读 UP-Magic6410 平台硬件文档,熟悉 ARM 处理硬件外围接口电路 编程实现 UP-Magic6410 平台设备上 LED 驱动及应用测试程序3. 实验环境 硬件:UP-Magic
2、6410 型嵌入式实验平台,PC 机 Pentium 500 以上, 硬盘 40G 以上,内存大于 256M 软件:Vmware Workstation +Fedora Core 8 + MiniCom/Xshell + ARM-LINUX 交叉编译开发环境4. 实验原理4.1 硬件接口原理 UP-Magic6410 魔法师实验套件 LED 硬件接口UP-Magic6410 魔法师实验套件上共有 5 个 LED 显示灯,分别接在 S3C6410X 处理器的 GPQ2、GPQ3、GPQ4、GPQ5、GPQ6 上。5 个 LED 显示灯分别共阳极 3.3V 电压,因此相应 GPIO 低电平点亮,高
3、电平熄灭。如图 4.1.1 所示: S3C6410 处理器 GPIO 寄存器S3C6410X 处理器的 GPIO 作为控制 I/O 要进行必要的设置才能对外设进行正确控制,此实验将相应 I/O 设置为输出模式,并向相应 I/O 数据寄存器进行写入数据便可控制 LED 的开关。如下表 4.1.2 给出的 S3C6410X GPIO 寄存器配置:GPQ IO 寄存器列表:GPQ 配置寄存器: GPQ 数据寄存器:4.2 关键代码分析Linux 系统下,应用程序不可直接操作底层硬件寄存器,必须经过驱动层来完成对硬件的操作。 驱动程序分析:#include #include #include #inc
4、lude #include #include #include #include #include MODULE_LICENSE(GPL);#define DEVICE_NAME leds /驱动名称#define DEVICE_MAJOR 231 /驱动主设备号#define DEVICE_MINOR 0 /驱动次设备号/声明字符设备类结构struct cdev *mycdev;struct class *myclass;dev_t devno;/ LED GPIO 列表static unsigned long led_table = S3C_GPQ2,S3C_GPQ3,S3C_GPQ4,S
5、3C_GPQ5,S3C_GPQ6,;/ LED GPIO 输出类型配置列表static unsigned int led_cfg_table = S3C_GPQ2_OUTP,S3C_GPQ3_OUTP,S3C_GPQ4_OUTP,S3C_GPQ5_OUTP,S3C_GPQ6_OUTP,;/ LED IOCTRL 处理函数,主要完成从用户空间传递数据进行 GPIO 引脚设置功能static int uptech_leds_ioctl(struct inode *inode,struct file *file,unsigned intcmd,unsigned long arg)switch(cmd
6、) case 0:case 1:if (arg 6) return -EINVAL;/ LED GPIO 设置函数接口s3c_gpio_setpin(led_tablearg, !cmd);return 0;default:return -EINVAL;/ 驱动层 file_operations 接口函数初始化static struct file_operations uptech_leds_fops = .owner = THIS_MODULE,.ioctl = uptech_leds_ioctl,;/驱动程序入口初始化函数,设置 LED GPIO、向内核注册设备。static int _i
7、nit uptech_leds_init(void)int ret;int i;/ 注册 LED 设备devno = MKDEV(DEVICE_MAJOR, DEVICE_MINOR);/获取设备号mycdev = cdev_alloc();cdev_init(mycdev, &uptech_leds_fops);/初始化字符设备err = cdev_add(mycdev, devno, 1);/向系统添加 LED 设备if (err != 0)printk(s3c leds device register failed!n);myclass = class_create(THIS_MODUL
8、E, leds);if(IS_ERR(myclass) printk(Err: failed in creating class.n);return -1;/建立 LED 设备节点class_device_create(myclass,NULL, MKDEV(DEVICE_MAJOR,DEVICE_MINOR), NULL,DEVICE_NAME,DEVICE_MINOR);/ LED GPIO 配置初始化for (i = 0; i 5; i+) s3c_gpio_cfgpin(led_tablei, led_cfg_tablei);s3c_gpio_setpin(led_tablei, 1)
9、;printk(DEVICE_NAME initializedn);return 0;/ 驱动卸载函数static void _exit uptech_leds_exit(void)/ 注销 LED 驱动设备unregister_chrdev(LED_MAJOR, DEVICE_NAME);/ 声明驱动程序入口函数module_init(uptech_leds_init);/ 声明驱动程序出口函数module_exit(uptech_leds_exit); 应用程序分析:#include #include #include #include int main(int argc, char *a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 LED 实验 18
限制150内