[计算机软件及应用]嵌入式实验报告llisa.doc
《[计算机软件及应用]嵌入式实验报告llisa.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]嵌入式实验报告llisa.doc(38页珍藏版)》请在三一文库上搜索。
1、一、 相关知识根据IEEE(国际电机工程师协会)的定义,嵌入式系统是“Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants。”即控制、监视或者辅助装置、机器和设备运行的装置。目前国内一个普遍被认同的定义是: 以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。可以这样认为,嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所
2、有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。嵌入式系统是计算机软件和硬件的综合体,可涵盖机械或其他的附属装置。所以嵌入式系统可以笼统地分为硬件和软件两部分。嵌入式系统的构架可以分成四个部分:处理器、存储器、输入输出(I/O)和软件(由于多数嵌入式设备的应用软件和操作系统都是紧密结合的,在这里我们对其不加区分,这也是嵌入式系统和通用PC系统的最大区别)。嵌入式系统的组成如下图所示。本学期的实验采用英特尔公司于2003年底推出的PXA270嵌入式处理器。PXA270更适合传统PDA,手持P
3、C,平板电脑,智能手机市场。它最初出现在PDA(比如惠普HP4700)和智能手机(如MOTO E680)上。因此它的扩展接口相当丰富,扩展接口有SD/SDIO/MMC、CF/PCMCIA、CMOS/CCD CAMERA、蓝牙、USB1.1、OTG等。许多厂商选择PXA270作为PMP处理器,是源于它wireless MMX技术和SpeedStep动态电源管理技术。SpeedStep技术原用于英特尔移动处理器,这种技术用通俗的语言表述就是系统需要多高的主频,它就调节到多高的频率,系统不需要时,它就将处理器主频调节到最低,绝不浪费一点点。SpeedStep技术可以将PXA270的主频在26MHz6
4、24MHz(最高)之间自由调节。也就是说,在系统完全空闲时,PXA270可以运行在26MHz的主频下,此时它的功耗将低于0.1毫安。其实,嵌入式系统并不是一个新生的事物,从八十年代起,国际上就有一些IT组织、公司,开始进行商用嵌入式系统和专用操作系统的研发。这其中涌现了一些著名的嵌入式系统:Windows CE、VxWorks、pSOS、QNX、Palm OS、OS-9、LynxOS、Linux等。本学期实验采用Linux环境。从应用上讲,Linux 一般有内核、Shell、文件结构和实用工具四个主要部分,Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。Linux
5、操作系统不但具有广泛性、灵活性以及高度可设定性等特点,而且主要因为免费、开源和与Unix高度相通而受到计算机爱好者的喜爱。二、 实验内容1、基本实验实验二 RedHat 9的安装此实验完成了在宿主PC端虚拟机的安装,提供了实验所需的Linux操作系统。实验三 建立主机开发环境此实验完成了宿主PC端开发环境的安装与配置。实验四 配置 minicom此实验使宿主PC机与PXA270目标板之间可以通过串口通讯,之后的实验将使用超级终端来监视并控制目标板的工作状态。在每次重启宿主PC机时,须通过ifconfig命令查看该机的IP地址,若其已经复位,则须用命令:ifconfig eth0 192.168
6、.0.100 up重置宿主PC机的IP地址。实验五 配置 TFTP此实验为宿主PC机配置了TFTP服务。TFTP(Trivial File Transfer Protocol)是简单文件传输协议,由于特定开发环境的制约,这一服务是必须的。在配置完成后,每次重启宿主PC机时,都须先输入命令:service xinetd restart,以启动TFTP服务。实验六 配置NFS服务此实验为宿主PC机配置了NFS服务。NFS(Network File System)指网络文件系统,它实现了文件在不同的系统间使用。当我们想用远端档案时,只需调用“mount”就可以远端系统挂接在自己的档案系统之下。每次重
7、启宿主PC机时,都须先输入命令:service nfs restart,以启动nfs服务。实验七HelloWorld此实验通过用c语言编写的简单程序HelloWorld,测试前面几个实验是否成功配置好环境,从超级终端可以看到HelloWorld程序的运行结果。2、基本接口实验(驱动实验)实验十二 简单设备驱动程序本次实验的任务是编写一个字符型设备驱动程序,并学习在应用程序中调用驱动。指导书中提供了本次实验所要用到的程序源代码。由于字符型设备驱动程序的骨架都是相同的,所以,看懂本实验的源代码,学习并模仿其编写方法,对于后续实验有着非常重要的意义。接下来,我将详细分析一下实验十二提供的程序代码。源
8、代码及其注释如下:/ 读入头文件#include #include #include #include #include #include #include / 定义主设备号HELLO DEVICE MAJOR#define SIMPLE_HELLO_MAJOR96/ 定义标识符#define OURS_HELLO_DEBUG / 定义版本号#define VERSION PXA2700EP-SIMPLE_HELLO-V1.00-060530 /*显示版本*/void showversion(void)printk(*);printk(t %s tn,VERSION);printk(*);/*
9、 - READ用于将指定文件描述符中读取数据file:是文件指针buf:读取数据缓存区count:请求传输的字节数f_ops:文件当前偏移量当读取标识符OURS_HELLO_DEBUG时,打印信息,然后返回count-*/ssize_t SIMPLE_HELLO_read (struct file * file ,char * buf, size_t count, loff_t * f_ops)#ifdef OURS_HELLO_DEBUGprintk(SIMPLE_HELLO_read-kernel-n);#endifreturn count;/* - WRITE用于向打开的文件写数据,写操
10、作从文件当前偏移量开始file:是文件指针buf:写入数据缓存区count:请求传输的字节数f_ops:文件当前偏移量当读取标识符OURS_HELLO_DEBUG时,打印信息,然后返回count-*/ssize_t SIMPLE_HELLO_write (struct file * file ,const char * buf, size_t count, loff_t * f_ops)#ifdef OURS_HELLO_DEBUGprintk(SIMPLE_HELLO_write-kernel-n);#endifreturn count;/* - IOCTL设备驱动程序中对设备的I/O通道进
11、行管理的函数inode:设备节点flip:打开的一个文件cmd:驱动程序的特殊命令编号data:接收剩余参数-*/ssize_t SIMPLE_HELLO_ioctl (struct inode * inode ,struct file * file, unsigned int cmd, long data)#ifdef OURS_HELLO_DEBUGprintk(SIMPLE_HELLO_ioctl-kernel-n);#endifreturn 0;/*-OPEN打开函数Inode:打开文件所对应的i节点,主要获取从设备号flip:打开的一个文件open()方法最重要的是调用了宏MOD_I
12、NC_USE_COUNT,这个宏主要用来增加驱动程序使用计数器,避免不正确卸载程序-*/ssize_t SIMPLE_HELLO_open (struct inode * inode ,struct file * file)#ifdef OURS_HELLO_DEBUGprintk(SIMPLE_HELLO_open-kernel-n);#endifMOD_INC_USE_COUNT;return 0;/* -RELEASE/CLOSE关闭函数Inode:打开文件所对应的i节点,主要获取从设备号flip:打开的一个文件release()方法最重要的是调用了宏MOD_DEC_INC_USE_CO
13、UNT,这个宏主要用来减少驱动程序使用计数器-*/ssize_t SIMPLE_HELLO_release (struct inode * inode ,struct file * file)#ifdef OURS_HELLO_DEBUGprintk(SIMPLE_HELLO_release-kernel-n);#endifMOD_DEC_INC_USE_COUNT;return 0;/ - SIMPLE_HELLO设备向系统注册-struct file_operations HELLO_ops =open:SIMPLE_HELLO_open,read:SIMPLE_HELLO_read,wr
14、ite:SIMPLE_HELLO_write,ioctl:SIMPLE_HELLO_ioctl,release:SIMPLE_HELLO_release,;/* -INIT驱动程序初始化devfs_register_chrdev(SIMPLE_HELLO_MAJOR,hello_serial_ctl,& HELLO_ops)最为主要devfs_register_chrdev注册设备驱动程序,包括主设备号、驱动程序名、结构体指针-*/static int _init HW_ HELLO_init(void)int ret = -ENODEV;ret = devfs_register_chrdev
15、(SIMPLE_HELLO_MAJOR, hello_serial_ctl,& HELLO_ops);showversion();if(ret0)printk(pxa270 init_module failed with %d n-kernel-,ret);elseprintk(pxa270 hello_driver register success!-kernel-n);return ret; /*-模块初始化函数,调用HW_ HELLO_init 函数-*/static int _init pxa270_ HELLO_init(void) int ret = -ENODEV;#ifdef
16、OURS_HELLO_DEBUGprintk(pxa270_ HELLO_init-kernel-n);#endif ret = HW_ HELLO_init(); if (ret) return ret; return 0;/*-模块卸载函数devfs_unregister_chrdev(SIMPLE_HELLO_MAJOR,hello _ctl)最为主要devfs_unregister_chrdev卸载设备驱动程序,包括主设备号、驱动程序名-*/static void _exit cleanup_ HELLO_ctl(void)#ifdef OURS_HELLO_DEBUGprintk(c
17、leanup_HELLO_ctl-kernel-n);#endifdevfs_unregister_chrdev (SIMPLE_HELLO_MAJOR, hello_ctl );MODULE_DESCRIPTION(simple hello driver module);/一些描述信息MODULE_AUTHOR(liduo);/驱动作者MODULE_LICENSE(GPL);module_init(pxa270_HELLO_init);/指定驱动程序初始化函数module_exit(cleanup _HELLO_ctl);/指定驱动程序卸载函数对Makefile文件进行修改:TARGET =
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件及应用 计算机软件 应用 嵌入式 实验 报告 llisa
链接地址:https://www.31doc.com/p-1991938.html