基于labview的语音信号采集系统_第1页
基于labview的语音信号采集系统_第2页
基于labview的语音信号采集系统_第3页
基于labview的语音信号采集系统_第4页
基于labview的语音信号采集系统_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、电气与自动化工程学院LabVIEW编程实训评分表课程名称: LabVIEW编程实训 题 目: 基于labview的语音信号采集系统设计 班级: 1601131自动化 学号: 160113113姓名: 刘德旺 评价指标内涵分值评分平时表现学习态度态度认真、严谨,遵守纪律。20团队合作与同学团结协作,协调能力强,能按时完成设计任务。能力水平查阅文献独立查阅文献资料,根据课题要求整理、加工各种信息。20设计方案运用所学专业知识对实际测试测量问题进行分析,提出多种设计方案,并能结合实际情况选择合适的方案。设计水平与实际能力根据提出的方案完成硬件设计;设计满足需求的软件;并能考虑社会、健康、安全、文化、

2、环境等因素。20陈述交流能力清晰陈述系统设计思路、硬件设计、软件设计及设计中所考虑的问题,对同学、老师或同行所提出的问题给予正确回答。10报告撰写图纸质量硬件原理图、软件设计流程图等图纸齐全、整洁,视图、线条和尺寸标注正确,符合标准。30写作水平结构合理,语言表达清晰,报告内容详实,论述得当。内容立足专业基础理论,充分结合工业实际,能够体现出一定的专业素养。 总分:指导老师: 年 月 日常 熟 理 工 学 院电气与自动化工程学院LabVIEW编程实训技术报告题目: 基于LabVIEW的语音信号采集系统设计 姓 名: 刘德旺 学 号: 160113113 班 级: 自动化131 指导教师: 陈飞

3、 起止日期:2016年 6月20日 7月8日 LabVIEW编程实训答辩记录 自动化 专业 1601131班级 答辩人 刘德旺 题目 基于LabVIEW的语音信号采集系统设计 记 录 内 容 记录人记 录 内 容 记录人_ 说明:主要记录答辩时所提的问题及答辩人对所提问题的回答目录TOC o 1-3 h u HYPERLINK l _Toc22376 1任务书 任务书题目: 基于LabVIEW的语音信号采集系统设计1.LabVIEW编程实训任务本课题所要求设计的基于虚拟仪器技术的语音采集系统硬件由MIC、喇叭和放大电路组成,其工作原理为MIC采集音乐信号,经过放大电路的放大,送入数据采集平台的

4、模拟输入通道,然后利用虚拟仪器软件开发平台LabVIEW来开发系统软件,以实现对语音信号的采集、分析、处理与报表生成等。语音信号由计算机进行分析和处理,在程序中通过设置采样点和采样率,对数据进行时域和频域的分析、处理,可以观察音频的分布和语音信号的特点。具体指标与要求如下:(1)、理解语音信号的特点,认识语音信号处理的一些基本方法。要求对语音采集信号调理电路进行设计,说明其工作原理。(2)、要求采用状态机的软件设计结构来设计语音采集系统软件。系统软件具有“系统初始化”、“系统等待”、“数据采集”、“报表生成”“打开报表”、“退出”等功能。2、LabVIEW编程实训目的通过本次编程实训使学生具备

5、:1)了解现代仪器科学与技术的发展前沿;2)学习和掌握虚拟仪器系统组成和工作原理;3)掌握虚拟仪器LabVIEW图形化软件设计方法与调试技巧;4)培养学生查阅资料的能力和运用知识的能力;5)针对自动化工程测试问题,能够给出或形成设计方案;提高学生的沟通合作能力和技术报告撰写;6)培养学生正确的设计思想、严谨的科学作风;7)培养学生的创新能力和运用知识的能力。3、LabVIEW编程实训要求3.1、了解和掌握整个虚拟仪器平台的系统组成、工作原理、各单元功能和应用背景;3.2、根据设计任务进行文献资料的检索,根据各种独立测量仪器的功能和工作原理,确定语音采集系统的功能,制定设计方案和设计虚拟仪器面板

6、;3.3、利用虚拟仪器LabVIEW软件,编写与调试虚拟仪器的图形化程序;3.4、撰写完整的编程实训报告。4、LabVIEW编程实训内容1、语音采集系统前面板设计;2、语音采集系统框图程序设计。5、LabVIEW编程实训报告要求报告中提供如下内容:5.1、目录5.2、正文(1)LabVIEW编程实训任务书;(2)总体设计方案(包括虚拟仪器概念与传统仪器概念主要区别,虚拟仪器LabVIEW图形化程序的组成和特点,虚拟计算器的设计思路及总体结构图等);(3)硬件选型、硬件I/O分配或信号设计电路设计;简述所设计的电路工作原理及所实现的功能,针对前面板要有操作使用说明,以便他人能够正确使用所设计的计

7、算器;(4)程序流程图、框图程序的设计及功能实现方法等;(5)调试、运行及其结果;要求有源程序和运行结果等。5.3、收获、体会5.4、参考文献6、LabVIEW编程实训进度安排本课程设计共需2周时间,其具体安排见下表:周次工作日工作内容第一周1布置编程实训任务,查找相关资料2依据实验室现有的条件完成采集卡的选择,并了解其使用方法;或对课题相关的信息的收集3完成总体设计方案4软件设计5软件设计第二周1软件设计2软件设计3软件设计并准备编程实训报告4完成报告并于下午两点之前上交5答辩7、LabVIEW编程实训考核办法编程实训满分为100分,由平时表现、能力水平、报告撰写三部分组成。平时表现20%,

8、能力水平50%, 报告撰写30%。平时表现由学习态度和团队合作两项组成占20%,能力水平由查阅文献、设计方案、设计水平与实际能力、陈述交流能力四块组成,其中查阅文献、设计方案占20%和设计水平与实际能力、陈述交流能力占30%,技术报告占30% 。2基于LABVIEW的数据采集系统概述2.1虚拟仪器概念与传统仪器概念主要区别2.1.1LabVIEW虚拟仪器简介 LabVIEW是由美国NI公司开发的、优秀的图形化编程开发平台,是Laboratory Virtual Instrument Engineering Workbench的简称,即实验室虚拟仪器工程平台,是目前应用范围最广、功能最为强大的虚

9、拟仪器开发平台。 LabVIEW集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能。利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。 图形化的程序语言,又称为“G”语言。使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或框图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念。因此,LabVIEW是一个面向最终用户的工具。它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率 2.1.2LabVIE

10、W虚拟仪器特点 与传统仪器相比,虚拟仪器具有高效、开放、易用灵活、功能强大、性价比高、可操作性 好等明显优点,具体表现为: (1)智能化程度高,处理能力强 虚拟仪器的处理能力和智能化程度主要取决于仪器软件水平。用户完全可以根据实际应用需求,将先进的信号处理算法、人工智能技术和专家系统应用于仪器设计与集成,从而将智能仪器水平提高到一个新的层次。 (2)复用性强,系统费用低 应用虚拟仪器思想,用相同的基本硬件可构造多种不同功能的测试分析仪器,如同一个高速数字采样器,可设计出数字示波器、逻辑分析仪、计数器等多种仪器。这样形成的测试仪 器系统功能更灵活、更高效、更开放、系统费用更低。通过与计算机网络连

11、接,还可实现虚 拟仪器的分布式共享,更好地发挥仪器的使用价值。 (3)可操作性强,易用灵活 虚拟仪器面板可由用户定义,针对不同应用可以设计不同的操作显示界面。使用计算机的 多媒体处理能力可以使仪器操作变得更加直观、简便、易于理解,测量结果可以直接进入数据库系统或通过网络发送。测量完后还可打印、显示所需的报表或曲线,这些都使得仪器的 可操作性大大提高而且易用、灵活。虚拟仪器较之于传统仪器,有显而易见的优势。 表2.1 虚拟仪器与传统仪器的对比表虚拟仪器传统仪器开放、灵活,与计算机技术保持同步发展封闭,仪器间相互配合差价格低廉,资源可重复利用价格昂贵,仪器间一般不能相互利用核心是软件,系统性能升级

12、方便关键技术是硬件,升级成本高用户可根据需要定义仪器功能 只有厂家能定义仪器功能可与网络及周边设备方便连接 功能单一,只能连接有限的独立设备 开发与维护费用可降至最低开发与维护费用高技术更新周期短(一般来说,12年)技术更新周期长(一般来说,510年)2.2 LabVIEW图形化程序的组成与特点2.2.1前面版前面版是NI LabVIEW提供给VI(图形化程序)特有的组成部分之一。在VI中,前面版的作用是实现人机对话操作和交互式用户界面操作。应该讲,它的引入是完全出于虚拟仪器的需要,因为虚拟仪器需要在计算机显示屏上模拟出真实仪器的操作面板。 在前面版上,程序的设计者可以根据程序的实际需要可以放

13、置诸如开关、滑动条等用户可操作控件,也可以放置诸如仪表盘、图形显示器、图表显示器、LED显示器等指示控件,所有这些控件都可以在NI LabVIEW所提供的控件选项板上找到。前面版,它是每个VI(虚拟仪器)所必须包含的部件之一,也是将来用户唯一可见的部分。在基于文本代码的编程语言中,比如C、Java等,仅一个前面版就要撰写很多行程序代码。而在这里,NI LabVIEW已经替我们做完了这项工作。其余的工作就是如何发挥你的想像力做一个实用、美观的用户界面。如下图所示,为一空的前面板。2.2.2程序框图 程序框图也是NI LabVIEW提供给VI(图形化程序)特有的组成部分之一。程序框图用来放置Lab

14、VIEW图形化程序源代码。与基于文本的程序代码不同,图形化程序代码是以图形(图标)的方式展现在设计者面前。在程序框图中,不仅可以放置图形化代码,并且还可以通过上面的工具拦进行程序调试和即时编译。程序框图只是用来为程序设计者编程时所使用,最终的用户是无法看到的。 程序框图类似于文本编辑器,它不仅可以放置图形化代码同时也可以进行程序注释的标注,只不过是标注的形式不相同。如下图所示,为一空的程序框图。2.2.3图标和连接器图标和连接器也是NI LabVIEW提供给VI(图形化程序)特有的组成部分之一。在每个VI的前面版和程序框图的右上角,都有一个属于这个VI 的图标。图标以图形化的方式被用来与其它V

15、I相区别。程序的设计者可以在前面版或程序框图中设计、修改这个图标。 在前面版中,用鼠标右键单击图标,可以看到如图所示的内容。通过这个菜单既可以设定VI的属性又可以编辑图标和显示连接器。而在程序框图中作同样的操作,只可以设定VI的属性和编辑图标。每个VI都有自己的图标和连接器。图标构成区别不同VI的图形符号,而连接器定义了VI的输入和输出(当然也可以不进行定义)。在前面板上可以设置或相互切换显示图标或连接器。3语音信号采集总体设计方案与硬件配置3.1语音信号采集系统的功能分析对语音信号的采集、分析、处理与报表生成等。语音信号由计算机进行分析和处理,在程序中通过设置采样点和采样率,对数据进行时域和

16、频域的分析、处理。系统软件具有滤波选择,分为低通,高通,带通滤波。同时也具有开始采集,停止采集,报表生成,停止等功能。3.2语音信号采集系统的总体构成由外界的语音采集板卡与计算机相连,语音采集板卡采集到的信号经过放大电路输送到计算机进行分析运算。外部待测的物理信号:声音声音传感器信号调理:将传感器送来的信号转换为仪器设备可以接受的范围信号采集:使用仪器设备采集相关的电信号,并传入计算机软件处理:在计算机中处理所接收的信号3.3语音信号采集系统的硬件配置3.3.1数据采集电路图3.3 NI-ELVIS II型数据采集板的语音采集模块 驻极话筒MIC由R0303串联分压供电。如图3.3所示,当有语

17、音输入时,MIC将产生一个大小与语音强弱成正比的交变电压,该电压经过电阻R0302耦合至放大器OP07中,信号经过放大之后,由模拟通道AI/O2送入计算机内进行分析处理。3.3.2传感器选型传感器实际上是一种换能器,它可以把声音信号携带的机械能转变为电能,电信号的强度与声强在一定范围内满足线性关系。 3.3.3 传感器分类 传感器可以按照不同的能量转换机理分为动圈式、电容式、压电式和半导体式等,其中动圈式和电容式应用最为广泛;也可以按照其可录制声场的范围分有指向性和无指向性两种,其中无指向性也叫做全指向性,有指向性又可按照其指向性范围分为心形指向性、超心形指向性、双指向性和单一指向性几种;按其

18、在最佳工作状态下与声源的有效距离分为远场传感器和近场传感器;也可按照用途分为人声传感器、乐器传感器和测量传感器等。 l)动圈式传感器动圈传感器由于其价格低廉、坚固耐用、可承受较大声压而广泛应用于各种场合。动圈传感器主要由振膜、音圈、永磁体和阻抗匹配变压器组成。当声音震动通过空气传到传感器时,会引起振膜的振动,振膜带动音圈在永磁体的磁场中运动切割磁力线产生电流。由于音圈阻抗相对较低,通过阻抗匹配变压器可以提高传感器的输出阻抗,更容易与后续放大器的阻抗进行匹配。 动圈传感器因其结构和原理相对简单、稳定性高、可以承受较大声压、抗外界噪音能力较强,广泛应用于扩音、录音等各种场合。但其缺点是灵敏度较低、

19、瞬态响应性能不佳、频响曲线不够平直。 2)电容式传感器 电容传感器是利用电容器容量随极板间距而变化的原理工作的,电容传感器主要由振膜、刚性极板以及辅助部件组成。其内部的导体振膜和刚性极板组成一个电容器,电容传感器在工作是需要外部电源供电。当声音通过空气传导到传感器时,振膜随着空气振动而前后运动,其与刚性极板的间距随即发生变化,从而因其电容的变化。在外部电源的作用下,极板两端电压便会发生改变,从而将机械能转换为电能。 电容传感器灵敏度高、频响范围宽、瞬态响应好、失真较小,但其结构精密、成本较高、且难以承受瞬间大声压的冲击,因此仅用于音频环境较好的录音棚、消声室,作为录音传感器或测量传感器使用。

20、3)驻极体式传感器 驻极体式传感器是一种利用驻极体材料做成的电容传感器。主要结构形式有两种:一种是用驻极体高分子薄膜材料作振膜;另一种是用驻极体材料做后极板。因为驻极体本身带电,所以这种传感器无须外部笨重的极化电源,简化了电容传感器的结构。 该传感器是由一片驻极体薄膜和一片金属电极(背电极)构成的电容。当声波引起驻极体薄膜产生振动而发生位移时,电容极板间的距离就会发生变化,从而引发了电容器两端电压的变化,完成声电转换。 3.3.4 传感器性能指标 灵敏度和指向性是传感器的两个重要性能,由此而关联的传感器性能指标主要有以下几条: l)灵敏度 灵敏度是表征传感器在一定声压作用下能产生多大的电输出的

21、一个物理量,表示传感器的声电转换效率。一般说来它是传感器的输出电压同该传感器所受声压的复数比。一般来说,传感器的灵敏度越高,失真度就越小,其所接受的声音信号的质量就越好,输出信号的音质越接近于真实声音。 2)频率响应 传感器的频率响应是指在某一确定的声场中,声波以一指定的方向入射,并保持声压恒定时,传感器的开路输出电压随频率的变化的曲线。传感器的频率响应是传感器的主要指标之一,为了得到良好的音质,一般要求传感器的频响曲线在较宽的频率范围之内平直。 3)指向性 传感器的灵敏度随声波入射方向而变化的特性就是传感器的指向性。传感器的指向性 对音质有较大影响。根据不同的使用目的,不同的声源以及不同的声

22、场条件,选用具有不同指向性的传感器,对提高音质是很重要的。 4)输出阻抗 输出阻抗也称源阻抗是指传感器的两根输出线之间在1kHz信号输入时的阻抗。源阻抗在150-600欧之间的传感器是低阻抗型的;在1-5千欧之间是中阻抗型的;在25-150千欧之间是高阻抗型的。应注意的是,所有的电动式传感器都是低阻抗器件,那些有高阻抗输出的电动式传感器使用一个内置阻抗升高变换器。高阻抗传感器的缺点是它们的高阻抗电缆线容易拾取到静电噪声,诸如发动机和荧光灯等引起的噪声,这就是要求使用带屏蔽的电缆。另外,围绕屏蔽的导体会形成一个电容器,它实际上是跨接在传感器的输出上。当电缆的长度增加时,电容量就变大,直到6至8米

23、长时,电容量开始短路掉由传感器拾取的许多高频信号。因此,使用高阻抗传感器应避免用长电缆来连接,这种限制有时会给录音带来不便。 5)最大声压级 指的是在传感器在不产生非线性失真时所能承受的最大声压。 6)等效噪声级 用来衡量声音传感器本身的固有噪声大小,固有噪声主要由膜片的热扰动或有源器件的电噪声引入。通常用等效噪声的声压级来衡量传感器固有噪声的大小。 7)动态范围 指的是传感器所能接收信号声压变化范围的上下限,上限受到最大声压级的限制,下限受到等效噪声级的限制。专业级传感器的动态范围一般在110dB左右。 8)失真度 指的是声信号经传感器拾音以后声音发生畸变的程度。失真主要是因为传感器的振动波

24、形与声源不符或传感器接收声音的声压超过其能接收的最大声压级造成的。 3.3.5 传感器的选择 我们在选择传感器的时候,要在了解不同的目标声场特性的基础上,结合传感器的技术特性来选择。一般考虑两个方面的需求:一方面要满足环境特性的需求,包括对温度、湿度、压力和风的适应性等;另一方面要满足技术特性的需求,包括对灵敏度、频率响应、动态范围和指向性等的需求。 本系统所测的目的是语音采集,因此我们要选用灵敏度高、频响宽而平直的传感器。最终选定了一种测量电容式驻极体传声器。 驻极体电容传声器是一种声电转换器件,类属于电容传声器。但是,与早期的电容传声器相比,其内部振膜或背极采用的是可储存电荷的驻极体材料,

25、因此无需外加极化电源。同时,由于驻极体电容传声器内置了场效应管,输出灵敏度得到大幅度提升。而且驻极体电容传声器采用了超小型的零部件,使得产品体积可以做的很小。由于拥有诸多优良性能,驻极体电容传声器广泛应用于手机、电话机、MP3/MP4、数码相机、摄像机、语音识别系统、电脑等产品上。4.语音信号采集系统的软件设计与功能实现4.1语音信号采集系统程序流程图如图4.1所示,打开程序,先设置系统的采集参数,然后点击开始采集按钮。之后系统采集的语音信号经过数字信号处理,根据设置的滤波参数,生成时域和频域波形。然后点击停止采集按钮,系统停止采集。然后选择你要保存的位置,然后打开报表,生成HTML报表。YY

26、生成时域、频域波形打开报表设置参数开始采集停止采集设置滤波器参数数字信号处理选择保存位置图4.1系统程序设计流程图4.2语音信号采集系统的软件前面板设计本系统是基于虚拟仪器的语音采集系统。前面板设计如图4-2所示: 图4.2基于虚拟仪器的语音采集系统前面板系统主要包括语音信号采样信息界面、语音采集控制按钮界面、语音采集状态显示界面以及时域波形和频域波形显示界面四个部分。4.2.1语音信号采样信息界面 语音信号采样信息界面中包括物理通道、采样点数、采样速率、截止频率、上下限截止频率及频域波形类型选择框。其中频域波形类型选择框包括低通,高通及带通下的波形。如图4.2.1所示。图4.2.1语音信号采

27、样信息4.2.2语音采集控制按钮界面系统开始运行,点击采集按钮,系统开始对语音信号的采集,之后按停止采集按钮时,系统停止对语音信号的采集。当按报表按钮时,系统会自动生成报表。党按下急停开关时,系统会立刻停止。如图4.2.2所示。图4.2.2语音采集控制界面4.2.3时域波形和频域波形显示界面系统开始采集数据时,信号的时域波形和频域波形分别在时域波形和频域波形显示界面中显示。图4.2.3时域波形图图4.2.3为采集后的音频信号经过滤波后在时域上的波形,滤波的形式可在前面板上选择,共有三种方式:低通滤波,带通滤波,高通滤波。其中低通可用于检测我们生活中的噪音,带通滤波主要用于检测我们人类说话的声音

28、。高通滤波,用于检测频率较高的管弦乐乐器。图4.2.3频域波形图时域信号转化为频域波形,如图4.2.3所示。根据我们所要采集声音的频率不同,我们可以设置X轴的坐标。然后通过频域上波形的分布,对采集的声音进行具体的分析。4.3语音信号采集系统的软件程序框图设计图4.3.1软件总体程序框图如图4.3.1所示,总体的程序框图有DAQ函数,while循环,事件结构,条件结构,报表生成等几部分组成。程序的主体为:采集声音任务:数据通道采样时钟采集波形对波形的处理结束任务清除数据图4.3.2声音信号处理如图4.3.2所示,采样的模拟波形通道为1通道多采样通过设定采样速率和采样点数来确定波形的质量,速率越快

29、,采样点数越多,采样波形越相近于实际波形。由于采集到的信号太小,不利于观测,因此经过放大器放大后来观看。信号经过放大器后进入滤波环节,共有三种滤波可供选择,低通、带通和高通。分别对应不同的情况。同时将滤波后的波形在时域上表现出来,可将时域波形的数据精处理为动态数据输入频谱测量,在示波器上显示出频域波形。图4.3.3 HTML报表生成根据图4.3.3所示,报表生成的一系列步骤。报表生成任务:新建报表修改报表,具体为添加页眉页脚,注释说明以及程序的波形图片保存报表,路径可选择打开报表。我选择的是HTML报表。优点是,它可以在报表内添加超文本链接,图片,影像,声音以及注释说明。5.语音信号采集系统的

30、运行与分析图5.1时域波形图5.2频域波形图5.1与5.2采集到的是手机闹铃的震动声音。可以看出,该声音信号在频域上主要分布在低频段,且幅值较高。图5.3时域波形图5.4频域波形图5.3与5.4为手机播放女高音,可以发现其频域上的波形频率较高,时域上也有很明显的几块突出。而且根据传感器灵敏度的提高,波形也会越精确。图5.5时域波形 图5.6频域波形图5.5与5.6位采集的是我说了一句“1,2,3,4,5,6,7,8”的声音。可以发现其时域上的波形与上面手机播放女高音的波形有点相似,都是存在几处明显的突出。频域波形上也是符合男性说话的特征,就是频率较低。6.收获与体会1.编写程序的思路不明确 一

31、开始看到这个项目的时候,脑子里没有一点点思路,不知该从何下手。随后,自己编从图书馆查阅相关的语音信号采集之类的资料,渐渐地,脑子里有了明确的编程思路。但是在随后的编程中,程序总是不能够完全地将自己所希望的功能完全地实现出来,但是经过不断的查阅labview宝典以及询问同学和老师。渐渐地,自己所希望的功能都能够实现出来了。2.波形显示不敏感 当整个程序都编写完成后,开始了调试部分。但是我们发现系统所采集的波形的变化总是很小,不是很敏感,采集效果不佳。经过我们不断探索,才发现是语音信号采集环境较差,传感器不是很灵敏。3.报表生成不熟悉 当初还没做报表生成的时候,感觉这一部分应该挺简单的,但是当我真

32、正做到这部分的时候,才发现不是我想像中的那么容易。首先,我对报表这一部分是完全不了解。随后的报表完成,我只能通过自己不断的上网查阅资料。这次实验让我明白了虚拟仪器这门课程的重要性。在这两个星期的课程设计中,我们进行了基于虚拟仪器的语音采集系统设计的课程设计。我们更加深入的了解到虚拟仪器的基本使用方法和运用原理,它不仅要求我们有扎实的专业理论知识和实践操作能力,更要求我们有严谨治学、团结协作的精神。通过自己的动手和思考,感觉获益良多。在设计中我就更切身体会到虚拟仪器这种仪器的高效、开放、易用灵活、功能强大、性价比高、可操作性好等明显优点。 通过这两个礼拜的而成设计,我觉得收获还是很多的,首先,在

33、整个设计中我们学会了在复杂的问题面前怎样去分析,找到问题的关键所在,而且认识到这种能力的重要性。比如说,在程序设计的前几天,我们对设计中所用到的软件、控制装置都不了解,感觉什么都不会,无从下手,但当我了解到这些东西在设计的系统中所起的作用后,从整体上看时,整个系统的流程就明了了,就明白了系统设计的需求,知道我们应该做什么了,我觉得这就算是抓住了问题的关键吧。其次,这次课程设计也让我们体会到了现场环境特殊性。我们在系统设计的后一部分中,遇到的很多问题都与控制系统设计本身没什么关系,而是与一些环境因素和同学之间的协调有关的问题。总的来说,我们还是缺乏工程实践的能力,这需要我们在以后的学习工作中多留

34、心,积累经验。 总之,从选题到总体方案设计,到系统硬件设计,到系统软件设计,到运行调试,每一个环节都有不同的问题,需要应用不同的方法去解决,有的需要独立思考,有的需要和同学讨论,或请教老师。自始至终都要坚持不断地学习,保持端正的态度,不怕困难,这是解决问题的基本要求。这两周的课程设计虽然很短,但我相信在我以后的工作生活中一定会起到十分重要的作用。我们在生活中难免遇到各种各样的苦难、挫折,但我们不应该惧怕它、一味的躲避它,我们要大胆的面对它、克服它。我们要始终相信问题是肯定可以解决的,解决方法可以有很多种:可以查资料自己研究、可以找老师同学寻求帮助、也可以换种思路从别的角度解决这个问题。问题解决

35、的结果无非解决的好和解决的不好两种情况,只要自己尽力了,即使解决的不好,我们也会没有遗憾,至少我们努力过。俗话说:“活到老学到老”现代社会飞速发展,各种新知识不断产生、各种旧知识日益新颖,我们需要顺应社会的潮流,不断丰富自己的知识,在匆忙的生活中抽出一点点时间来给自己充充电,这样百益而无一害,磨刀不误砍柴工。这两个星期的课程设计,我真是受益匪浅。参考文献1 刘君华基于LABVIEW的虚拟仪器的设计J北京:电子工业出版社,2003.1:513 2 龙志强,赵海龙虚拟仪器测试技术研究J仪表技术,2000.3 :71803吴志锋.基于Web的虚拟仪器技术J. 仪表技术,2001(3):4143. 4

36、邓振杰,齐建玲.基于LabVIEW构建虚拟仪器系统J. 华北航天工业学院学报,2001(3):1017. 5刘君华.虚拟仪器图形化编程语言LabVIEW教程M.西安电子科技大学出版社,2000:14. 6汪敏生.LabVIEW基础教程M.北京:电子工业出版社,2002:15. 7邹 翔,孙肖子.基于图形化编程语言LabVIEW虚拟仪器的方法J.现代电子技术,2003(1):3638. 8潘莹玉,王留群. 谈谈虚拟仪器J. 电信技术,2001(8):7778.9 林君,谢宣松. 虚拟仪器原理及应用M 北京: 科学出版社,2006 10 赵茂泰 智能仪器原理及应用J 北京:电子工业出版社,2004

37、.7:364511陈树学,刘萱.LabVIEW宝典.电子工业出版社.201112岂兴明,田京京,夏宁.LabVIEW 入门与实践开发100例.电子工业出版社.201113李江全,李玲,刘媛媛.案例解说虚拟仪器典型控制应用.电子工业出版社.2011附录资料:不需要的可以自行删除 busybox详解制作根文件系统详解制作根文件系统 一、FHS(Filesystem Hierarchy Standard)标准介绍当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。该标准规定了根目录下各个

38、子目录的名称及其存放的内容:目录名存放的内容/bin必备的用户命令,例如ls、cp等/sbin必备的系统管理员命令,例如ifconfig、reboot等/dev设备文件,例如mtdblock0、tty1等/etc系统配置文件,包括启动文件,例如inittab等/lib必要的链接库,例如C链接库、内核模块/home普通用户主目录/rootroot用户主目录/usr/bin非必备的用户程序,例如find、du等/usr/sbin非必备的管理员程序,例如chroot、inetd等/usr/lib库文件/var守护程序和工具程序所存放的可变,例如日志文件/proc用来提供内核与进程信息的虚拟文件系统,

39、由内核自动生成目录下的内容/sys用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容/mnt文件系统挂接点,用于临时安装文件系统/tmp临时性的文件,重启后将自动清除制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。其过程大体包括:编译安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 利用交叉编译工具链,构建/lib目录 手工构建/etc目录 手工构建最简化的/dev目录 创建其它空目录 配置系统自动生成/proc目录 利用udev构建完整的/dev目录 制作根文件系统的jffs2映像文件 下面就来详细介绍这个过程。二、编译安装b

40、usybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录这些目录下存储的主要是常用命令的二进制文件。如果要自己编写这几百个常用命令的源程序,my god, 这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀busybox,事情就简单很多。1、从 HYPERLINK / / 下载busybox-1.7.0.tar.bz22、tar xjvf busybox-1.7.0.tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busybox HY

41、PERLINK /y1meas5zrVyWRApB-3amnI3XoX1uejYB25KKj1kpqxTRhOGgR_PuwGIQD9zdV3d5uvhNok3Z_YMczeZUopvoGEQES1yAumIZZZ14T5WFiL1BGGc7xrEbBCPe_ET2gFHV8nhyRPim0l3Fnss0hvRQ7UWWA/image4%2066DF829F.png busybox配置主要分两部分。第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:1)、Build Options - Build BusyBox as a static bin

42、ary (no shared libs),表示编译busybox时,是否静态链接C库。我们选择动态链接C库。2)、Installation Options - Applets links (as soft-links) - (X) as soft-links,表示安装busybox时,将各个命令安装为指向busybox的软链接还是硬链接。我们选择软链接。3)、Installation Options - (/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安装位置。我们选择/work/nfs_root/fs_mini3

43、4)Busybox Library Tuning。保留Command line editing以支持命令行编辑;保留History size以支持记忆历史命令;选中Tab completion和Username completion以支持命令自动补全 第二部分是Applets,他将busybox的支持的几百个命令分门别类。我们只要在各个门类下选择想要的命令即可。这里我们基本保持默认设置。1)选中Networking Utilities - httpd下的Enable -u option,以启用http服务器的功能allows the server to run as a specific us

44、er5、编译busyboxmake6、安装busyboxmake install安装完成后,可以看到在/work/nfs_root/fs_mini3目录下生成了binsbinusr/binusr/sbin目录,其下包含了我们常用的命令,这些命令都是指向bin/busybox的软链接,而busybox本身的大小不到800K:dennisdennis-desktop:/work/nfs_root/fs_mini3$ lsbin linuxrc sbin usrdennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l bintotal 740lrwxrw

45、xrwx 1 dennis dennis 7 2010-04-03 23:57 addgroup - busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 adduser - busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 ash - busybox-rwxr-xr-x 1 dennis dennis 749632 2010-04-03 23:57 busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 cat busybox 而普通P

46、C机上的ls命令就有差不多80K的大小: dennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l /bin/ls-rwxr-xr-x 1 root root 78004 2007-09-29 20:51 /bin/ls busybox以它娇小的身躯容纳了数以百计的命令代码,实在是让人佩服不已,其不愧嵌入式系统瑞士军刀之美誉。据说,busybox的作者身患绝症,这更让人钦佩GNU开源软件的作者们。 三、利用交叉编译工具链,构建/lib目录 光有应用程序(命令)是不够的,因为应用程序本身需要使用C库的库函数,因此还必需制作for ARM的C库,并将其

47、放置于/lib目录。my god,要自己写C库的源代码吗?不用!还记得交叉编译工具链的3个组成部分吗?交叉编译器、for ARM的C库和二进制工具。哈哈,for ARM的C库是现成的,我们只需要拷贝过来就可以了。遗憾的是:整个C库目录下的文件总大小有26M。而我们根文件系统所在分区不过区区16M而已,根本放不下。怎么办呢? dennisdennis-desktop:/work/nfs_root/fs_mini3$ du -s -si /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib26M /work/tools/gcc-3.4.5-glibc-2.

48、3.6/arm-linux/lib 需要C库目录下所有的文件吗?no,absolutely no! 让我们来分析一下glibc库目录下内容的组成。该目录下的子目录和文件共分8类: 目标文件,如crtn.o,用于gcc链接可执行文件 libtool库文件(.la),在链接库文件时这些文件会被用到,比如他们列出了当前库文件所依赖的其它库文件,程序运行时无需这些文件 gconv目录,里面是各种链接脚本,在编译应用程序时,他们用于指定程序的运行地址,各段的位置等 静态库文件(.a),例如libm.a,libc.a 动态库文件 (.so、.so.0-9*) 动态链接库加载器ld-2.3.6.so、ld-

49、linux.so.2 其它目录及文件很显然,第1、2、3、4、7类文件和目录是不需要拷贝的。由于动态链接的应用程序本身并不含有它所调用的C库函数的代码,因此执行时需要动态链接库加载器来为它加载相应的C库文件,所以第6类文件是需要拷贝的。除此之外,第5类文件当然要拷贝。但第5类文件的大小也相当大。dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ du -c -si *.so* 7.2M total 需要全部拷贝吗?非也,非也!其实,需要哪些库完全取决于要运行的应用程序使用了哪些库函数。如果我们只制作最简单的

50、系统,那么我们只需要运行busybox这一个应用程序即可。通过执行 dennisdennis-desktop:/work/nfs_root/fs_mini3$ arm-linux-readelf -a bin/busybox | grep Shared0 x00000001 (NEEDED) Shared library: libcrypt.so.10 x00000001 (NEEDED) Shared library: libm.so.60 x00000001 (NEEDED) Shared library: libc.so.6 可知:busybox只用到了3个库:通用C库(libc)、数学

51、库(libm)、加密库(libcrypt),因此我们只需要拷贝这3个库的库文件即可。但是每个库都有4个文件,4个文件都要拷贝吗?当然不是。 dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libcrypt.-*-rwxr-xr-x 1 dennis dennis 30700 2008-01-22 05:32 libcrypt-2.3.6.so-rw-r-r- 1 dennis dennis 23118 2008-01-22 05:32 libcrypt.alrwxrwxrwx 1 denni

52、s dennis 13 2008-12-22 15:38 libcrypt.so - libcrypt.so.1lrwxrwxrwx 1 dennis dennis 17 2008-12-22 15:38 libcrypt.so.1 - libcrypt-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libm.-*-rwxr-xr-x 1 dennis dennis 779096 2008-01-22 05:31 libm-2.3.6.so-rw-r-r- 1 dennis

53、 dennis 1134282 2008-01-22 05:32 libm.alrwxrwxrwx 1 dennis dennis 9 2008-12-22 15:38 libm.so - libm.so.6lrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libm.so.6 - libm-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libc.-*-rwxr-xr-x 1 dennis dennis 1435660 2008-0

54、1-22 05:48 libc-2.3.6.so-rw-r-r- 1 dennis dennis 2768280 2008-01-22 05:31 libc.a-rw-r-r- 1 dennis dennis 195 2008-01-22 05:34 libc.solrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libc.so.6 - libc-2.3.6.so 4个文件中的.a文件是静态库文件,是不需要拷贝的。另外3个文件是: 实际的共享链接库:libLIBRARY_NAME-GLIBC_VERSION.so。当然需要拷贝。 主修订版本的符号链接

55、,指向实际的共享链接库:libLIBRARY_NAME.so.MAJOR_REVISION_VERSION,程序一旦链接了特定的链接库,将会参用该符号链接。程序启动时,加载器在加载程序前,会检索该文件。所以需要拷贝。 与版本无关的符号链接,指向主修订版本的符号连接(libc.so是唯一的例外,他是一个链接命令行:libLIBRARY_NAME.so,是为编译程序时提供一个通用条目)。这些文件在程序被编译时会被用到,但在程序运行时不会被用到,所以不必拷贝它。关于共享库的2个符号链接的作用的特别说明:当我们使用gcc hello.c -o hello -lm编译程序时,gcc会根据-lm的指示,加

56、头(lib)添尾(.so)得到libm.so,从而沿着与版本无关的符号链接(libm.so - libm.so.6)找到libm.so.6并记录在案(hello的ELF头中),表示hello需要使用libm.so.6这个库文件所代表的数学库中的库函数。而当hello被执行的时候,动态链接库加载器会从hello的ELF头中找到libm.so.6这个记录,然后沿着主修订版本的符号链接(libm.so.6 - libm-2.3.6.so)找到实际的共享链接库libm-2.3.6.so,从而将其与hello作动态链接。可见,与版本无关的符号链接是供编译器使用的,主修订版本的符号链接是供动态链接库加载器

57、使用的,而实际的共享链接库则是供应用程序使用的。通过以上分析,我们只需要拷贝3个库(每个库各1个主修订版本的符号链接和1个实际的共享链接库)以及动态链接库加载器(1个符号链接和1个实体文件)。步骤如下:dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ mkdir /work/nfs_root/fs_mini3/lib dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libcrypt-* /work/nfs_r

58、oot/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l libcrypt.so.* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libm-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-l

59、inux/lib$ cp -l libm.so.* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libc-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l libc.so.* /work/nfs_root/fs_mini3/lib dennisdennis-desktop:/work

60、/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l ld-* /work/nfs_root/fs_mini3/lib 四、手工构建/etc目录 /etc目录存放的是系统程序的主配置文件,因此需要哪些配置文件取决于要运行哪些系统程序。即使最小的系统也一定会运行1号用户进程init,所以我们至少要手工编写init的主配置文件inittab。busybox的inittab文件的语法、语义与传统的SYSV的inittab有所不同。 inittab文件中每个条目用来定义一个需要init启动的子进程,并确定它的启动方式,格式为:。例如:ttySAC0:ask

温馨提示

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

评论

0/150

提交评论