第3节 嵌入式系统开发方法引导
推荐给好友
打印
加入收藏
更新于2008-07-25 09:18:38

 从嵌入式应用系统设计角度来看,任何一个嵌入式产品或嵌入式应用系统都是一个输入/输出处理系统。广义地说,所处理的物理量可分为模拟量、开关量与数字量。若能了解一个实际的对象系统有哪些输入的物理量,哪些输出的物理量以及它们之间的内在关系,就可以设计出以MCU为核心的嵌入式应用系统,并通过编程实现输入/输出之间的关系。本节从一般角度讨论这个问题,给读者一个嵌入式应用系统的初步轮廓,同时希望读者在本书的基本实验完成之后,再一次体会这种一般构成

1.3.1 嵌入式产品的一般构成

    一个以MCU为核心,比较复杂的嵌入式产品或实际嵌入式应用系统,包含模拟量的输入、模拟量的输出,开关量的输入、开关量的输出及数据通信的部分。而所有嵌入式系统中最为简单和普遍的则是嵌入式测控系统。图1-3给出了一个典型的嵌入式测控系统框图。

                                                                      
图1-3 一个典型的嵌入式测控系统框图
MCU工作支撑电路保障MCU能正常运行,如电源电路、晶振电路及必要的滤波电路等。

    实际模拟信号一般来自相应的传感器。例如,要测量室内的温度,就需要温度传感器。但是,一般传感器将实际的模拟信号转成的电信号都比较弱,MCU无法直接获得该信号,需要将其放大,然后经过模/数(A/D)转换变为数字信号,进行处理。目前许多MCU内部包含A/D转换模块,实际应用时也可根据需要外接A/D转换芯片。常见的模拟量有:温度、湿度、压力、重量、气体浓度、液体浓度、流量等。对MCU来说,模拟信号通过A/D转换变成相应的数字序列进行处理。

    实际开关信号一般也来自相应的开关类传感器。如光电开关、电磁开关、干簧管(磁开关)、声控开关、红外开关等等,一些儿童电子玩具中就有一些类似的开关。手动开关也可作为开关信号送到MCU中。对MCU来说,开关信号就是只有“0”和“1”两种可能值的数字信号。

    其他输入信号通过某些通信方式与MCU沟通。常用的通信方式有:异步串行(SCI)通信方式、串行外设接口(SPI)通信方式、并行通信方式、USB通信方式、网络通信(uIP)方式等。

    在执行机构中,有开关量执行机构,也有模拟量执行机构。开关量执行机构只有“开”、“关”两种状态。模拟量执行机构需要连续变化的模拟量控制。MCU一般是不能直接控制这些执行机构,需要通过相应的驱动电路实现。还有一些执行机构,既不是通常开关量控制,也不是通常D/A转换量控制,而是“脉冲”量控制,如控制调频电动机,MCU则通过软件对其控制。

1.3.2 嵌入式产品的一般开发方法

    嵌入式产品的开发应遵循软件工程的原则。但是,软件工程的原则是要自己在学习软件工程之后,在实践中慢慢体会的。做任何一个项目,首先要在计算机硬盘上建立一个以项目名称(或简称)为文件夹名的文件夹,以便统一管理项目开发过程中的资料。同时在这个独立的文件夹下,建立“参考资料”、“设计文档”、“硬件设计”、“软件设计”、“其他”等下一级文件夹,必要时还要建立一些以日期命名的文件夹,随着工作的进展安排在相应的文件夹下。总之,要清晰、合理地放置您的工作资料。对于一些中小型嵌入式产品或应用系统的开发过程,在进行基本需求与功能分析之后,可以进入设计阶段。这里对设计阶段开始后的工作过程,提出一些建议和步骤,供参考。注意每个过程的工作必须写入设计文挡。

1.基本输入/输出分析

    对系统进行输入/输出分析是整个工程的第一步,应该以MCU系统为核心展开。输入分析分为开关量类与模拟量类,应分别列表。开关类输入样表见表1-1。模拟量类输入样表见表1-2。输出分析也可分为开关量类与模拟量类。开关类输出样表见表1-3。模拟量类输出样表见表1-4。还可以对通信类输入、键盘类输入进行必要的列表,参照进行。

2.MCU的选择 

    嵌入式系统的核心就是各种不同类型的MCU。在进行了详细的输入输出分析后,设计者就可以根据该系统的特性,为其选择一款合适的MCU。原先对于MCU的选择,开发人员往往会使用固定的一款MCU(例如MCS-51系列),根据嵌入式系统的不同功能,配以不同的外设芯片。但随着电子技术和半导体技术的发展,这种开发选型方法已逐渐被淘汰,取而代之的是以功能模块芯片内聚化为主导的MCU选择方式。这种方式不仅减少了外部芯片数量,降低开发成本和系统功耗,还大大提高了系统的稳定性。

    选择MCU时要考虑的因素有:处理性能、功耗、价格、封装形式、软硬件开发工具、设计者的熟悉程度等。一个MCU的性能取决于多个因素,如时钟频率、内部寄存器大小、I/O口个数、集成何种外设模块等。对于许多嵌入式系统设计来说,目标不是在于挑选速度最快并且功能最强的MCU(这样的MCU往往价格较高),而是选择对于完成功能最合适的MCU。以下的几点选型原则可供读者参考:MCU的总I/O口个数应略多于系统功能所需的个数,以备功能扩展和调试时使用;对于使用到的外设功能模块应尽可能集成在MCU的内部,以简化硬件系统,减少系统工作功耗,提高系统的可靠性;尽量选择设计者较为熟悉和开发工具完备的芯片型号,这样可以减少开发周期,提高开发效率。关于MCU的位数,不是16位一定比8位好,也不是32位一定比16位或8位好,应该根据基本选择原则进行。没有什么嵌入式系统32位时代之说,那只是一些宣传抄作类语言。应该充分认识嵌入式应用系统开发的本质,选择合适的芯片进行开发。

3.选择评估系统并对与MCU相关的硬件进行初步评估

选择一个合适的评估工具,利用该工具可以评估系统的大部分输入/输出与通信模块。也可以自行搭建硬件评估系统。有一些开发系统带有较大的IC扩展区域,利用现有的MCU可以进行新系统的一些初步评估。在此过程中,子程序尽可能规范设计,把与MCU引脚相关的程序分离出来,做成独立的子程序(MCU的引脚分配应独立列表)。与MCU引脚相关的子程序,应该做到可方便地重新定义引脚,一般放在“头文件”中或子程序前部,以便实际使用中更改。应该遵守“面向硬件对象封装”原则(参考本书的例程),进行硬件驱动子程序的开发。这一过程中,应该对与MCU引脚相关的硬件系统,通过MCU软件进行独立的评估,并产生一些规范的子程序及其测试程序。当然,这里并不是测试完整的硬件模块,而是截取靠近MCU的部分进行编程与测试。例如,要测量温度,这一过程并不要求温度传感器、放大器等部件,而是用一个电位器取代,目的是要编制A/D转换子程序,并进行测试程序的编制。

4.设计并制作硬件系统

有了以上的工作,就可以对所选的MCU进行硬件系统的设计工作了。设计时,应以MCU为核心,逐个硬件模块进行。进行PCB布板时,滤波电容应靠近芯片引脚并尽量加粗电源线。对于每一硬件模块都应用线框在一起并用文字注明。PCB板上要充分考虑预留测试点和MCU引脚接口,以便后续测试和功能扩展时使用。

 5.进行硬件系统的模块测试

硬件板制作出来之后,应首先焊接MCU(或其插座)及其支撑电路,利用软件测试其是否正常工作。若正常工作,再从由简单的硬件模块到复杂的硬件模块逐步焊接上去,每个模块焊接之后,都必须用第3步给出的测试程序进行测试,测试正确方可进行下一步,并把注意点记入备忘录中,以便进行硬件修改。这样,可以完成硬件的第一版工作,若不正常,不可以进行下一步工作。

 6.软件系统设计

有了硬件系统和基本软件模块,在此基础上进行软件设计。可以参照软件工程的一些工作规范进行。对于不使用嵌入式实时操作系统的应用系统,可以参考面向硬件对象编程和程序模块化封装的思想,将与硬件相关的驱动程序与功能性程序分割开来,以提高程序运行效率和可读性。对于基于嵌入式实时操作系统的应用系统,则必须合理的安排和划分任务,充分发挥嵌入式实时操作系统的性能和优势。

 7.系统测试

测试是一个过程,它的根本任务是发现系统中的缺陷,在系统开发过程中,测试是一个基本要素,它有助于提高系统的品质。测试的目标是使得系统更加完善,对环境的适应能力更强。
为了达到测试目标,每一个测试过程都包含这些:制定计划、列出测试清单和执行测试用例。

 8.进一步工作

接下来接收用户信息反馈、完善、文档分类整理等工作,使一个项目有头有尾,同时也积累开发经验与素材。

 

<<上一节 下一节>>




 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.