编写LED驱动程序,并通过WEB网页对其进行远程控制.doc_第1页
编写LED驱动程序,并通过WEB网页对其进行远程控制.doc_第2页
编写LED驱动程序,并通过WEB网页对其进行远程控制.doc_第3页
编写LED驱动程序,并通过WEB网页对其进行远程控制.doc_第4页
编写LED驱动程序,并通过WEB网页对其进行远程控制.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式应用系统设计课设报告任课教师 王慧娟 课设者姓名 司隆平 班 级 学 号 课设组 课设指导教师 王慧娟 北华航天工业学院计算机科学与工程系2011年11月目 录第一章 绪论31.1 课程设计目的31.2 课程设计要求31.3 课程设计环境31.4 课程设计内容3第二章 系统实施42.1制作根文件系统42.2 boa服务器的配置与移植52.3 NFS挂载文件系统52.4 系统验证6第三章 程序测试7第四章 体会9第五章 附录105.1 LED驱动程序105.2 CGI程序125.3 Index.html程序13第一章 绪论1.1 课程设计目的本课程设计是学生学习完嵌入式应用系统设计课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。1.2 课程设计要求1明确课设任务,复习与查阅有关资料2. 按要求完成课设内容,课设报告要求文字和图工整、思路清楚、正确。3学生必须独立完成课程设计,不能相互抄袭,设计完成后,将所完成的工作交由老师检查。1.3 课程设计环境已安装windows xp系统的电脑1台虚拟机S3C2440实验箱1台串口线和网线1.4 课程设计内容编写了LED驱动程序,并通过WEB网页对其进行远程控制。第二章 系统实施2.1制作根文件系统(1) 安装libncurses5-dev将libncurses5-dev文件拷贝到虚拟机,输入命令dpkg -i libncurses-dev_5.7+20090803-2ubuntu3_i386.deb。(2) 将busybox源代码拷贝到虚拟机将busybox-1.10.3.tar.bz2,拷贝到虚拟机下并解压缩,产生busybox-1.10.3(3) 修改编译配置在Makefile文件中找到ARCH和CROSS_COMPILE修改如下ARCH?=armCROSS_COMPILE?=arm-linux-(4) 配置busybox在Linux下打开命令终端,进入/busybox-1.10.3目录下,使用命令“make defconfig”,产生配置文件,使用命令“make menuconfig”,在出现的字符界面的配置内核界面中进行相应的配置。配置完成后保存并退出。(5) 编译并完善根文件系统使用命令“make all install”进行编译,在“/work”目录下新建目录“rootfs”,将编译生成的bin、sbin、usr目录及linuxrc启动初始化程序拷贝到rootfs目录下。在rootfs目录中新建dev、etc、home、lib、mnt、proc、sys、tmp、root、mnt/etc、usr/lib目录。拷贝相应的依赖库到“/lib”目录中。(6) 在/dev目录下创建基本的设备文件使用以下命令创建设备文件Mknod console c 5 1Mknod null c 1 3(7) 创建配置文件rcS,借助该脚本文件设置各种程序开机自动运行在/etc目录中创建目录init.d,在init.d目录中创建rcS文件,内容如下#!/bin/shMount -aEcho/sbin/mdev/proc/sys/kernel/hotplugMdev -s执行命令chmod +x rcS(8) 创建配置文件fstab,(该文件定义文件系统的挂载点)在/etc目录中新建文件fstab,其内容如下proc/procprocdefaults00modev/devramfsdefaults00sysfs/syssysfsdefaults00tmpfs/tmptmpfsdefaults00(9) 创建配置文件inittab在目录/etc中创建文件inittab,其内容如下:sysinit:/etc/init.d/rcS console:askfirst:-/bin/sh :restart:/sbin/init :ctrlaltdel:/sbin/reboot :shutdown:/bin/umount -a -r :shutdown:/sbin/swapoff -a(10) 创建配置文件mdev.conf在/etc目录中创建文件mdev.conf,其内容为空。(11) 关于驱动程序的操作 安装内核模块,将内核源码kernel-2.6.13解压缩,然后使用命令make modules编译内核,然后使用命令make modules_install安装内核模块。 编写驱动程序led_dirver.c,并编写makefile文件,使用make命令生成led_dirver.ko文件,并将该文件放/rootfs/lib/module目录中。编写CGI文件cgi_led.c,并编译生成cgi_led.cgi文件,将该文件放在/rootfs/var/www/cgi_bin目录下。编写HTML网页控制文件index.html并放置在/rootfs/var/www目录下。2.2 boa服务器的配置与移植(1) 将boa服务器源码boa-0.94.13.tar.gz解压缩。(2) 进入src目录中,使用“./configure”命令,生成Makefile文件,并将Makefile文件中的内容修改如下CC= arm-linux-gccCpp=arm-linux-gcc -E使用make命令进行编译生成boa的可执行文件,并将该文件放置在/var目录下。(3) 对boa启动所需的配置文件boa.conf进行如下修改 Usr0Group0 将DocumentRoot设置为/var/www 将MimeType设置为/etc/boa/mime.types 定义默认首页和CGI程序所在目录 DirectoryIndexindex.html ScriptAlias/cgi-bin/ /var/www/cgi-bin/ ScriptAlias/index.html /var/www/index.html(4) 将boa.conf和mime.types文件放在/etc/boa/目录下。2.3 NFS挂载文件系统(1) 配置IP地址将本机、虚拟机的IP地址设置在同一个网段本机IP: 掩码: 默认网关:虚拟机IP:默认网关:(2) 禁止Linux防火墙,ufw disable禁用windows防火墙在虚拟机/work目录下的nfsdir作为共享目录(3) 开始nfs挂载 在windows下打开超级终端,设置串口参数, 每秒位数 115200数据流控制 无启动实验箱,在延时计数减为0之前,按下任意键,则U-Boot可进入下载模式,输入以下命令设置启动参数Setenv bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=:/work/nfsdir/rootfs_si ip=:eth0输入“saveenv”保存设置 重新启动实验箱。2.4 系统验证 在超级终端中进入/dev目录,使用命令mkdir gpios c 215 0,建立设备节点。 在超级终端中进入/lib/module目录,使用命令insmod led_dirver.ko加载驱动模块。 在超级终端中进入/bin目录,使用命令./boa打开boa服务器。 在windows中,打开IE浏览器,在地址栏输入。在打开的网页中输入相应的数据,观察实验箱上LED灯的亮灭情况。第三章 程序测试图 3.1 设置实验箱的启动环境图 3.2 新建设备节点并加载驱动模块图 3.3 启动boa服务器图3.4 输入LED灯的状态(“0”代表第一个灯 ”1”代表灭)图3.5 实验成功图3.6 输入错误提示窗口第四章 体会1. boa服务器启动失败,原因是没有将启动需要的文件放在boa配置文件所要求的路径。2. 创建设备节点时,输入的主设备号要与驱动的设置一致。3. 编译驱动程序时出错,未安装kernel-2.6.13内核模块。第五章 附录5.1 LED驱动程序#include #include #include #include #include #include #include #include #include #include #include #define DEVICE_NAMEgpios#define GPIO_MAJOR 215static unsigned long gpio_table = S3C2410_GPF0,S3C2410_GPF1,S3C2410_GPF2,S3C2410_GPF3,;static unsigned int gpio_cfg_table = S3C2410_GPF0_OUTP,S3C2410_GPF1_OUTP,S3C2410_GPF2_OUTP,S3C2410_GPF3_OUTP,;static int sbc2440_gpios_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)switch(cmd) case 0:case 1:if (arg 4) return -EINVAL;s3c2410_gpio_setpin(gpio_tablearg, !cmd);return 0;default:return -EINVAL;static struct file_operations sbc2440_gpios_fops = .owner=THIS_MODULE,.ioctl=sbc2440_gpios_ioctl,;static int _init sbc2440_gpios_init(void)int ret;int i;ret = register_chrdev(GPIO_MAJOR, DEVICE_NAME, &sbc2440_gpios_fops);if (ret 0) printk(DEVICE_NAME cant register major numbern); return ret;devfs_mk_cdev(MKDEV(GPIO_MAJOR, 0), S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, DEVICE_NAME);for (i = 0; i 4; i+) s3c2410_gpio_cfgpin(gpio_tablei, gpio_cfg_tablei);s3c2410_gpio_setpin(gpio_tablei, 1);printk(DEVICE_NAME initializedn);return 0;static void _exit sbc2440_gpios_exit(void)devfs_remove(DEVICE_NAME);unregister_chrdev(GPIO_MAJOR, DEVICE_NAME);MODULE_LICENSE(Dual BSD/GPL);module_init(sbc2440_gpios_init);module_exit(sbc2440_gpios_exit);5.2 CGI程序#include #include #include #include #include #include #include #include #define DEVICE_GPIODRV /dev/gpiosint main()int fd;int led;int status;char *data;if(fd=open(DEVICE_GPIODRV,O_RDONLY | O_NONBLOCK)0)printf(open device: %sn,DEVICE_GPIODRV);perror(can not open device);exit(1);printf(Content-type: text/html;charset=gb2312nn);printf(n);printf(CGI LED DEMOn);printf(n);printf(n);printf(n);printf(CGI LED DEMO 1:0 led1 on 1:1 led1 offn);printf(go backn);printf(n);printf(n);printf(n);data=getenv(QUERY_STRING);if(sscanf(data,led=%ld&status=%ld,&led,&status)!=2) printf(请正确

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论