基于嵌入式实时操作系统的应用程序开发电子.doc_第1页
基于嵌入式实时操作系统的应用程序开发电子.doc_第2页
基于嵌入式实时操作系统的应用程序开发电子.doc_第3页
基于嵌入式实时操作系统的应用程序开发电子.doc_第4页
基于嵌入式实时操作系统的应用程序开发电子.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

广州大学综合设计性实验报告册实验项目 基于嵌入式实时操作系统的应用程序开发 学院 物理与电子工程学院 年级专业班 电子132 姓名 学号 成绩 实验地点 电子楼618 指导教师 综合设计性实验预习报告实验项目: 基于嵌入式实时操作系统的应用程序开发 一 引言:这次实验主要是基于ubuntu进行arm芯片的开发,目的是为了熟悉在linux环境下的程序开发,这次需要我们在arm开发板上运行一个led控制程序,并在LCD触摸屏上能够对LED进行控制,这需要我们熟悉linux下的程序编写与编译,和相关的QT编写。二 实验目的:1.学习在VMware中的ubuntu中搭建好开发环境,配置好环境变量2.学习交叉编译,学习基本linux命令。3.学会用C语言编写驱动程序,以及驱动程序的编译和使用,学习qt界面编程三 实验原理:交叉编译器可以将源代码编译成arm开发板上可以运行的程序。使用带有lcd驱动的linux内核可以驱动开发板上3.5英寸的显示屏,nfs可以建立一个pc与开发板共享的目录,让pc上交叉编译好的程序很方便地在开发板上运行。VMware虚拟机软件,是全球桌面到数据中心虚拟化解决方案的领导厂商。全球不同规模的客户依靠VMware来降低成本和运营费用、确保业务持续性、加强安全性并走向绿色。VMWare提供了三种工作模式,它们是bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。要想在网络管理和维护中合理应用它们,就应该先了解一下这三种工作模式。bridged(桥接模式)在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。如果你想利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。host-only(主机模式)在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。提示:在host-only模式下,虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互连。在host-only模式下,虚拟系统的TCP/IP配置信息(如IP地址、网关地址、DNS服务器等),都是由VMnet1(host-only)虚拟网络的DHCP服务器来动态分配的。如果你想利用VMWare创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择host-only模式。在虚拟机上安装操作系统的时候,系统的IP设置为9,DNS:修改虚拟机的VMnet1的ip为:在你可访问网络的那块网卡上设置Internet连接共享,具体设置方式为:属性-;高级-;连接共享,然后选择VMnet1,将网络共享给它在本机上ping一下9,如果能ping通,就说明你设置正确了。进入你虚拟机中的linux操作系统,尽情的网上冲浪吧NAT(网络地址转换模式)使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。如果你想利用VMWare安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式。NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。以下是NFS最显而易见的好处:1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。3. 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。四 实验内容:设置window下的虚拟机运行环境,设置好虚拟机与arm开发板下的ubuntu系统,设置好nfs,运行LED程序。五 重点问题:安装好虚拟机,并且熟悉基本linux命令,配置好开发环境。六 参考文献:嵌入式系统原理与应用 清华大学出版社广州大学实验原始数据记录表实验项目 基于嵌入式实时操作系统的应用程序开发 指导教师 揭海 姓 名 黎杰华 班 别 电子132 学 号 1319200055 学 院 物理与电子工程学院 专 业 电子信息科学与技术 实验进行时间 2016 年 6 月 13 日第 16 周 星期一 , 08 时至 10 时;实 验 地 点 电子楼618 原始数据记录(自行设计记录表格):注:此表格必须附在实验报告内一并交给任课老师。指导教师对学生情况记录:综合设计性实验实验报告实验名称: 基于嵌入式实时操作系统的应用程序开发 一 引言:这次实验主要是基于ubuntu进行arm芯片的开发,目的是为了熟悉在linux环境下的程序开发,这次需要我们在arm开发板上运行一个led控制程序,并在LCD触摸屏上能够对LED进行控制,这需要我们熟悉linux下的程序编写与编译,和相关的QT编写。二 实验要求:设置window下的虚拟机运行环境,设置好虚拟机与arm开发板下的ubuntu系统,运行LED程序。三 实验仪器:计算机(PC),GEC2410开发板 , LCD 触摸屏,串口线,交叉网线四 实验步骤:1. 安装VMware Tools 点击VMware菜单“虚拟机”,若显示菜单项“重新安装VMware Tools”则表示该VM已经安装过VMware Tools,否则点击菜单项“安装VMware Tools”进行安装。在自动弹出显示的文件管理窗口(一般是光驱)中会显示VMwareTools-*.tar.gz文件(具体文件名星号内容可能有一点区别),将它复制到/tmp目录下。打开终端窗口(Terminal)执行以下指令umount /dev/cdrom (很重要)cd /tmpsudo tar -zxvf VMwareTools-*.tar.gz(可能要求输入管理员密码)cd vmware-tools-distribsudo ./vmware-install.pl接下来就是一直按回车。最后一个选项是设置虚拟机模拟Ubuntu界面的窗口大小最后就看到Enjoy安装成功reboot安装完全结束。2. 网络设置1、 设置Ubuntu虚拟机网络连接为“桥接模式”(Bridge)图1图22、 设置Windows、Ubuntu虚拟机和开发板的IP确保它们在同一网段!Ubuntu虚拟机中的设置如下:图3图4设置好后,点击图3所示菜单中的Auto eth0,刷新一下。开发板设置如下:PC连接开发板串口,开发板上电,在超级终端中进入控制台,用命令ifconfig查看开发板网络参数。例如:eth0 Link encap:Ethernet HWaddr 08:90:00:A0:90:90 inet addr:30若不符,vi修改/etc下的网络配置文件,重启即可。用交叉网线连接PC和开发板,互相ping一下,看是否已经连通。3. 安装交叉编译器 将4.3.3.tar.bz2复制至某个目录,比如/mywork/to618,在终端中执行命令解压。$tar xvjf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2将路径/mywork/to618/4.3.3/bin 加入/etc/environment文件中PATH环境变量。注销后再次登录即可生效,输入命令$arm-linux-gcc v若出现以下类似的信息表示编译器可用。Using built-in specs.Target: arm-none-linux-gnueabiConfigured with: /scratch/maxim/arm-lite/src-4.3-arm-none-linux-gnueabi-lite/gcc-4.3/configure -build=i686-pc-linux-gnu -host=i686-pc-linux-gnu -target=arm-none-linux-gnueabi -enable-threads -disable-libmudflap -disable-libssp -disable-libstdcxx-pch -with-gnu-as -with-gnu-ld -with-specs=%funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables -enable-languages=c,c+ -enable-shared -enable-symvers=gnu -enable-_cxa_atexit -with-pkgversion=Sourcery G+ Lite 2009q1-176 -with-bugurl=/GNUToolchain/ -disable-nls -prefix=/opt/codesourcery -with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc -with-build-sysroot=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/libc -with-gmp=/scratch/maxim/arm-lite/obj-4.3-arm-none-linux-gnueabi-lite/host-libs-2009q1-176-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr -with-mpfr=/scratch/maxim/arm-lite/obj-4.3-arm-none-linux-gnueabi-lite/host-libs-2009q1-176-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr -disable-libgomp -enable-poison-system-directories -with-build-time-tools=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/bin -with-build-time-tools=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/binThread model: posixgcc version 4.3.3 (Sourcery G+ Lite 2009q1-176)4. 使用Linux内核 在终端下执行命令tar xvjf 将linux--for3inchLCD-test.tar.bz2解压至/mywork下某个目录。5. 设置和使用NFS 通过NFS可以很方便地将PC上交叉编译好的程序在开发板上运行。PC端设置:编辑NFS服务的配置文件/etc/exports,添加以下内容:/mywork/to618 *(rw,sync,no_root_squash)修改完毕后,重启NFS服务(启动服务用start,关闭用stop)$sudo /etc/init.d/nfs-kernel-server restart开发板:在终端中输入以下命令cd /mntmkdir nfs_rootmount -o nolock 7:/mywork/to618 /mnt/nfs_root其中7为Ubuntu实际的IP。ls /mnt/nfs_root查看是否挂载成功为了今后使用方便,可编写mount_mynfs脚本文件放在开发板的/usr/bin,内容如下#!/bin/shmount -o nolock 7:/Ubuntu中设置的NFS目录 /mnt/nfs_root用命令chmod 744 mount_mynfs增加可执行权限要挂接NFS时,可直接执行mount_mynfs 确认不是处于nfs_root目录中,使用下面命令可以取消挂接umount /mnt/nfs_root此时,即可在开放板上访问到ubuntu上共享的nfs目录,/mywork/to618下存放了已经交叉编译好的程序,将该目录下的s3c24xx_leds_234.ko复制到开发板的/usr目录下,命令cp /mywork/to618/s3c24xx_leds_234.ko /usr再将该目录下的devCtrlve复制到/usr目录,命令cp /mywork/to618/devCtrlve /usr然后用命令chmod 744 devCtrlve 增加可执行权限,输入./devCtrlve运行程序,此时开发板上将会出现控制界面五 数据处理及实验结果表示:点击LEDx按钮,对应LED亮灭;勾选流水灯,LED开始运行流水灯程序,此时调节旋钮可以改变流水灯的速度。六 实验结果分析:如果一开始屏幕触摸功能使用不了,需要输入命令:ts_calibrate校准画面在终端输入./devCtrlve -qws运行程序,此时开发板上将会出现以上控制界面点击界面的led1,2,3,4可以控制各个led灯的亮灭,并且屏幕上会显示出led灯状态,选择流水灯功能,可以实现led流水灯显示,此时旋钮可以控制流水灯转换的速度,最小100ms,最大5000ms。七 实验心得:本人对linux系统比较熟悉,有过arm开发经验,但在Ubuntu下安装工具花费了很多时间,在LED驱动程序没有更深入的编写,对Qt的使用也有一定的了解,Qt4.5的编译安装要花费3个小时,这还是在正常顺利的情况下,而在Ubuntu 14 下更是bugs多多,然而坚持就是胜利,通过网上搜索解决问题,一步步提升自己的嵌入式开发水平。八 参考文献:嵌入式系统原理与应用 清华大学出版社九 附录(程序源代码等,应有适当的注释):#include #include #include #include #include #include #include #include #define DEVICE_NAMEleds/*LED设备名称,设备加载后用命令cat /proc/devices可看到 */#define LED_MAJOR 231 /* 主设备号 ,可以设为0,表示由内核自动分配主设备号*/* 引脚输出电平定义*/#define IOCTL_LED_ON 0#define IOCTL_LED_OFF 1/* 设备使用到的引脚名称*/static unsigned long led_table = S3C2410_GPF4, S3C2410_GPF5, S3C2410_GPF6, S3C2410_GPF7,;/* 引脚配置为输出*/static unsigned int led_cfg_table = S3C2410_GPF4_OUTP, S3C2410_GPF5_OUTP, S3C2410_GPF6_OUTP, S3C2410_GPF7_OUTP,;/* 应用程序对设备文件/dev/leds执行open()时,就会调用s3c24xx_leds_open函数 */static int s3c24xx_leds_open(struct inode *inode, struct file *file) int i; for (i = 0; i 4) return -EINVAL; switch(cmd) case IOCTL_LED_ON: / 设置指定引脚的输出电平为0 s3c2410_gpio_setpin(led_tablearg, 0); return 0; case IOCTL_LED_OFF: /设置指定引脚的输出电平为1 s3c2410_gpio_setpin(led_tablearg, 1); return 0; default: return -EINVAL; /* 这个结构是字符设备驱动程序的核心 *当应用程序操作设备文件时所调用的open、read、write等函数, * 最终会调用这个结构中的对应函数 */static struct file_operations s3c24xx_leds_fops = .owner = THIS_MODULE, /* 这是一个宏,指向编译模块时自动创建的_this_module变量 */ .open = s3c24xx_leds_open,

温馨提示

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

评论

0/150

提交评论