单片机测试系统的数据存储和管理

发布者:JoyfulSerenade最新更新时间:2008-01-15 来源: www.esic.cn关键字:测试系统  单片机系统  链式存储结构  测试数据  掉电保护  上位机  存储空间  malloc  数字式传感器 手机看文章 扫描二维码
随时随地手机看文章

  单片机测试系统的数据存储和管理

  摘要 介绍一种应用于单片机洲试系统的链式存储结构,其特点在于采用数据结构的存储方式,并结合有效的存储管理方法对系统的存储空间进行管理和分配,从而在普通的单片机测试系统中实现了对大量测试结果的抽象化数据管理,便于系统进行数据保存、数据删除、数据查询以及与上位机的数据传输等各项操作,增强了系统的可靠性和可继承性。

  关键词链式存储结构 数据存储管理 单片机测试系统

  引 言

  在自动化测试领域里,单片机测试系统凭借其成熟的应用体系,简单的系统结构以及优良的性价比得到了越来越广泛的应用。近年来,随着新的测试对象不断出现,以及测试手段的不断发展,测试系统的功能越来越完善,各种应用场合对测试系统的要求也日益提高。现在的太多数测试系统不仅要完成工业现场的实时测控任务,同时还要进一步实现对测试数据的实时处理和保存。以往在一般的单片机测试系统中,信息的存储量并不大,系统只须用较少的资源就能实现数据的存储。但是随着存储芯片技术的不断发展,适用于单片机系统的存储芯片已经可以在掉电保护的情况下保存上百KB甚至几MB的数据;同样,目前的单片机测试系统也面临动辄处理并保存上千条乃至近万条测试数据的问题。这对一般的缺少操作系统支持的单片机测试系统来说,是一项相当复杂的工作,因而目前的测试系统往往只能针对具体数值对象进行处理,对大量采集数据采取简单的顺序存储方式。显然,这种方法缺少灵活性,不利于单片机测试系统处理大量测试数据,限制了测试系统在这方面的发展。

  本文主要针对处理测试数据量较大的一类测试系统,讨论测试数据的存储和管理问题。这类测试系统往往由抗干扰能力较强的单片机和大容量、掉电保护的存储芯片组成,同时配有高精度数字式传感器;造价便宜,性能稳定,适合工作在工业现场,保存和处理大量测试数据,有的甚至能够与上位机组成测控网络完成更为复杂的测试任务。本文将介绍一种应用于单片机测试系统的链式存储方式,能够在工业现场进行实时测控的同时,实现对大量测试数据的保存和管理,在实际应用中取得了良好的效果。

  1 大容量单片机测试系统中的存储结构

  在大多数自动测试系统中,测试数据的逻辑结构一般都会遵循线性逻辑关系,即数据元索在时问或者空间顺序上只分先后次序而不存在上下层次。因此在设计存储结构时往往采用顺序存储结构,其优点在于处理线性数据结构时速度快,而且结构简单。

  但是上述情况在前文所述的大容量测试系统中并不是普遍适用的。大容量测试系统虽然同样是线性逻辑结构,但其测试数据变化多样,构成数据元素的内部结构也非常复杂,而且系统又要执行数据保存和数据查询等多项指令操作,如果再应用顺序存储结构就会面临许多问题。

  首先,测试系统经常会面临一些较为特殊的测试对象。其测试信息较为复杂且数据长度不固定,显然不利于采用顺序存储结构。假设系统按照时间或空间上的逻辑顺序来进行顺序存储,那么对存储空间的分配将成为难题。若分配空间过大,则影响存储效率;反之,又会出现数据溢出的情况。类似地,假设系统能够安排好数据的存放空间,在进行数据查询、数据删除等操作时系统也会显得力不从心。

  其次,采用顺序存储结构不能很好地处理抽象数据类型。系统在进行数据保存、数据查询以及数据删除等操作时都要考虑数据元素的长度和内容,不能做到灵活、有效,当系统需要修改或升级时,对数据元素内部结构的修改又会影响到系统的整体操作,从而降低了系统的可靠性和高效性,同时使得系统进行维护和升级的难度大大增加。

  综上所述,顺序存储结构并不能解决大容量测试系统在存储和管理数据时面临的所有问题,因此在实际操作中必须考虑非顺序存储结构的应用。长久以来,在单片机系统中较少采用诸如链式存储结构等非顺序存储结构,原因在于链式存储结构必须有一套专门的存储管理系统来支持。在通用计算机中,这一功能由操作系统或高级语言的编译系统来实现,但在普通单片机系统中没有成熟的应用案例,因而使程序设计的难度较高。下面介绍一种应用于大容量单片机系统的存储管理系统,能够支持大容量单片机测试系统的应用链式存储方式。

  2 大容量测试系统的存储管理系统

  对于采用链式存储结构的大容量测试系统,链表中各结点的物理地址是不固定的。为避免在保存数据时可能出现的存储空间冲突问题,需要建立专门的存储管理系统来管理存储空间的开辟和释放。其中,数据引导表是存储管理系统的基础,负责记录存储空间中各个数据元素的存储信息。利用数据引导表,同时配合实现开辟空间、释放空间等操作的函数,测试系统能够实现对大量存储空间的有效管理。

  2.1 数据引导表

  建立数据引导表,就是建立一种链表中各结点与其相应物理地址之间的联系,规范每个结点对存储空间的使用。在测试系统中,引导表只是占用存储空间内划分的一段固定区域,其记录对象是一段已被分配占用的连续地址空间的首地址和末地址,标志着保存在存储空间上的某个结点所分配占用的空间大小,称为一个“记录”。各个记录在引导表中的物理地址是连续的,并且按照每个记录首地址的大小依次排列。数据引导表工作原理如图l所示。

  

  

  在初始状态时,内存引导表只有2个记录,表明整个存储空间的首地址和末地址,此时整个页面空间没有存储任何测试数据。一旦有新的结点需要在这一空间上保存,CPU将为该结点开辟一段连续的存储区间供其使用,并将该段空间的首地址和末地址作为一个记录写入内存引导表中。同样的当系统需要在某一页面上删除一个链表中的结点时,CPU将其对应的记录在内存引导表中删除,以此来释放此段地址空间。值得说明的是,对于在引导表中被释放的存储空间部分,其保存的内容并投有真正删除;在新的数据覆盖该地址之前,CPU还是可以通过直接访问该地址来读取其中的存储数据。

  2.2 管理存储空间的函数

  一般来讲,在通用计算机中往往利用C语言中的标准库函数malloc()、realloc()和free()来实现对存储空间的分配和管理,但这种方式对于一般的大容量测试系统并不合适。

  假设在前文所述的大容量测试系统中,系统采用16位地址的单片机,利用分页存储模式对512 KB掉电保护存储器进行访问。将存储器分为16个页面(00H~0FH),每个页面地址为0000H~7FFFFH,共计32 KB。此时系统利用malloc()可以在未被使用的空间中开辟一段存储空间,但是该函数返回的地址指针是随机的,有可能将空间分配在系统无法识别的区问(如7FFFH~FFFFH),因此不能满足需要。另外,由于系统中存储器具有掉电保护功能,CPU在重新上电后将无法识别已保存测试数据的存储空间,从而使malloc()函数失去意义。因此,还是以数据引导表为摹础来建立存储空间的管理函数。其具体功能的实现都依赖于函数对数据引导表中各个记录的操作,程序如下:

  

  以m_alloc()函数为例,其程序流程图如图2所示。

  

  

  当系统需要为某一结点开辟存储空间时。首先给出指定的存储空间页面page和需要开辟空间的长度size,然后通过m_alloc()函数在相应页面的引导表内查询是否有合适的存储空间。由于引导表中每个记录都代表一段已被分配的连续的地址区间,因此m_alloc()函数会从第一个记录开始判断每两个相邻记录之间未被分配空间的长度是否满足系统的需要。当有一对记录满足条件时,m_alloc()函数会返回该段未被分配存储空间的首地址(即前一个记录的末地址)指针.同时在这两个记录中间插入此次开辟空间段的新记录。如果该页面引导表的所有记录都不满足条件,则m_alloc()函数返回空指针。re_alloc()函数和m_free()函数分别完成重新分配指定首地址的一段存储空间和删除指定首地址的一段存储空间的操作。其功能和用法与m_alloc()类似,不再赘述。

  3链式存储结构和存储管理系统在实际操作中的应用

  利用上文所述的存储管理系统可以实现在大容量测试系统中应用链式存储结构,这样做的好处在于能够有效地简化系统存储数据的过程,有利于执行多项指令操作,提高系统存储空间的利用率。

  3.1 SF6密度继电器校验系统

  如图3所示,SF6密度继电器校验系统由51系列单片机、512 KB掉电保护存储器、打印机、时钟系统和LCD组成,配有高精度的数字式压力传感器和温度传感器,可以通过485总线与上位机通信。该系统能够对不同类型的密度继电器进行校验,满足各种额定参数和接点数目的需要,在校验过程中实现实时显示、打印数据等多项功能;对同一继电器能够保存多组校验数据,最多可保存4 000多条校验数据;对于所有的校验记录,都可以随时进行查询;另外,在与上位机进行通信时,有相应的上位机软件对下位机系统进行的数据传输、存储器空间查询和数据删除等操作。

  

  

  具体来讲,SF6密度继电器校验系统以SF6密度继电器作为校验对象,校验结果包含SF6气体的压力值和温度值,因此将每个校验对象的校验结果抽象为一个数据元素,分别包括该校验对象的测试信息(如测试日期,继电器的测试序号、接点数目和额定参数信息)和一组或多组的测量值信息(如校验次数、报警、闭锁l、闭锁2、超压接点分别动作、返回时的压力值和温度值)。系统以每个数据元素为结点建立链式存储结构,并通过上述的管理存储系统来管理存储空间的分配,这样既能保证有效、合理地保存校验数据,又能很好地实现数据查询、数据删除以及与上位机通信等操作,使系统的运行更加高效可靠。

  3.2 非线性逻辑结构的自动测试系统

  当自动测试系统面临非线性逻辑结构的数据元素时一必须要采取非顺序存储结构来保存数据,此时可以考虑链式存储结构,或者索引存储结构以及二叉树等各种非顺序存储结构,但前提条件都是要有一套专门的存储管理系统来支持。

  有了上述的存储管理系统作基础,各种非顺序存储结构的应用就成为可能。在设计系统时充分权衡存储空间的利用率和算法所耗费的时间,就能够有针对性地应用多种存储结构并设计出相应的算法,以满足各种测试对象和测试环境的要求。

  结语

  以链式结构的形式保存数据和通过数据引导表来管理存储空间,是应用于大容量单片机测试系统的一种新的数据保存和管理方式。

  这种存储方式既适用于线性逻辑结构测试系统,也适用于非线性逻辑结构测试系统,总体上使得单片机系统在处理多项复杂数据并进行反复保存、查询和删除等操作时更加快捷简便,提高了对有限容量存储空间的利用率;同时,结构化的数据存储使得系统的维护和升级更加轻松,实现了系统的结构化管理。

  

关键字:测试系统  单片机系统  链式存储结构  测试数据  掉电保护  上位机  存储空间  malloc  数字式传感器 引用地址:单片机测试系统的数据存储和管理

上一篇:单片机测试系统的数据存储和管理
下一篇:公交车线路微机监控系统的设计与实现

推荐阅读最新更新时间:2024-03-16 12:22

汽车发动机管理模块测试系统的设计
发动机管理模块作为汽车传动力控制的核心部件,其生产质量检测是保证整个产品生产过程完整的重要步骤。为了模拟发动机特定的实际工作状况,需要在同一系统实现多输入输出信号的集成控制和采集。由于输入输出信号繁多,使用传统的仪器很难实现很好的系统集成和通信。随着测试过程的日趋复杂化和生产过程越来越高的自动化要求,设计开发一个界面友好简单、性能稳定、高度集成化和自动化的测试系统的需求也日渐迫切。 本文介绍了基于PXI总线及其部件的硬件平台,配以用LabVIEW开发的软件控制系统,设计的一套高度集成、稳定可靠的自动化测试系统。该测试系统由PXI测试仪、配线板、信号调理及通信板、电源、负载箱和测试夹具组成。测试时操作人员将模块放入夹具,扫描条码后
[单片机]
汽车发动机管理模块<font color='red'>测试系统</font>的设计
基于单片机系统采用DMA块传输方式实现高速数据采集
   摘 要: 介绍一种基于单片机系统设计的DMA硬件电路,以字块传输方式与高速A/D接口。结合在数字式磁通表设计中的应用给出其硬件软件设计方案实例。     关键词: 单片机系统 直接存储器存取(DMA)方式 高速A/D     PC机中外设与内存储器之间数据直接传输的DMA功能以其高效、高速、CPU资源占用少等特点已被广泛应用,这一功能通过安装在主板上的专用DMA控制器芯片或集成在外围控制芯片来实现。单片机的应用领域也常常需要有高速数据传输或数据采集,虽然近些年单片机速度有所提高,仍然无法应付类似单脉冲信号捕获、周期信号频谱分析等需要采用高速A/D的场合。对于速率在100ksps以上的数据采集或传输一般的中断查
[应用]
关于51单片机存储空间的说明
在学校很少用到外扩ROM/RAM的情况,都是用C语言编程,不差空间,代码太大了,买个大ROM的芯片就行了。现在工作了,单位是做SoC的,采用了51的IP核,才算对51的代码/数据空间有了清晰的认识。 MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各自为政。 好,说回MCS-51。 对于程序存储器,有片内和片外两部分。而且无论
[单片机]
无人值守的温控器寿命与温漂综合测试系统
    摘要: 本文使用NI公司的FieldPoint分布测控模块,建造一个无人职守的温控器寿命与温度漂移综合实验系统,彻底解决以往由于物理仪表及电器元件的故障导致实验失败的问题。     关键词: 现场测试 Fieldpoint 为了检测各生产批次不同型号温控器的加工、装配质量,进而考核其恒温特性,温控器生产厂家需要对其产品进行寿命、温漂实验。 寿命实验用于检测给定周期内,温控器双金属片、接点片弹力的变化情况,银接点的烧蚀程度,通、断电时间,以及接点片的跳变频率。 温漂实验用于考核给定时间内,温控器的温度浮动范围是否在给定界限内。要求检查温度的峰、谷值、均值和差值的变动情况。这两项实验要求长期不停机
[测试测量]
通用电路板自动测试系统的设计与实现
  电路板已经成为当今电子产品的重要组成部分,随着电子技术及印制板制造技术的发展,现代电子产品日趋复杂,印制电路板的密度日趋增加,随之而来的是印制板的测试及修理也愈加困难。为了提高印制电路板的检测及维修的自动化程度,设计电路板的自动测试系统是非常必要的。   目前,印制电路板自动测试技术发展迅速,印制板在线测试系统(ATE)广泛应用于印制板光板及各种产品的印制电路板的生产、检测和维修等环节。由于用户的测试要求、测试对象各不相同,其具体性能(或功能)、测试原理及测试方法也各不相同,它需要量体裁衣、单台定制才能满足用户的要求,并且系统的通用性较差,资源可重复利用率低。鉴于上述状况,本文设计了一款较为通用的自动测试系统,用来测试电路板
[测试测量]
通用电路板自动<font color='red'>测试系统</font>的设计与实现
为什么说智能手机的存储空间升级是敲诈行为
    间:2014年7月31日 08:01 腾讯数码讯(编译:Expelliarmus)根据存储空间的不同,同一型号的智能手机在售价上也有所不同。考虑到成本的原因,这似乎是理所应当的。但你是否想过,其间的差价实际上是非常不合理的。 笔者前些时日在给iPhone进行系统升级时遇到的问题。升级需要1.4GB的空余空间,而笔者的手机上却只剩下492MB可用,因此我只能删除了一大堆应用来释放更多的空间。笔者所使用的是在去年9月份购买的iPhone 5s 16GB,因为在当时,我并不想要花费额外的100美元(约合人民币617元)来购买32GB机型。 想知道这16GB额外存储空间的成本是多少?根据市场研究公司IHS资深首席分析师Mich
[手机便携]
PXI-9820在发电机局部放电测试系统中的开发应用
  大型 发电机 往往由于定子绕组的故障(如绝缘磨损、接线开焊、股线断裂、高电场造成电晕等)而导致发电机运行中内部 放电 量增加,致使局部过热而损坏绕组对地绝缘,缩短发电机的绝缘寿命。当发电机定子绝缘中出现 局部放电 时,放电脉冲信号将沿发电机三相高压母线向外传播,严重影响了电网的安全。   发电机的定子局部放电测试是目前大型发电机状态监测的研究热点,需要高速数据采集与分析。ADLink基于PXI总线的PXI-9820高速采集卡采集速度高达130MHz,可以满足测试要求,并经实验验证可行。本文主要介绍了发电机局部放电的测试原理、基于ADLink的PXI-3800测试系统的设计技术,并给出了测试试验结果。   系统组
[测试测量]
PXI-9820在发电机局部放电<font color='red'>测试系统</font>中的开发应用
新型液压离合器液压操纵系统性能测试系统测试原理
汽车新型液压离合器液压操纵系统几乎100%使用先进的工程塑料,克服了金属离合器总、分泵的缺点,产品可靠性高,耐久性寿命试验达150万次以上。为了能更好地对这种新产品进行研制和性能测试,需要自主开发一种适合生产环境、快速、稳定、通用的检测设备,以满足生产过程中每件必检的一道工序的需要。据此,本设计基于NI Labwindows/CVI开发平台、研华PCL-812PG多功能数据采集卡,根据菲亚特(FIAT)标准,开发出了满足要求的汽车新型液压离合器液压操纵系统性能测试系统,该系统速度快、运行可靠,能实现硬件动作、数据采集、分析和存储。 测试原理 测试系统主要包括:计算机部分、接口电路部分、离合器液压操纵系统和工作台架。如图1所示,
[测试测量]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved