基于TMSF240芯片的内部FLASH的一种自测试方法

发布者:平和思绪最新更新时间:2012-06-19 来源: 61ic关键字:内部FLASH  自测试  飞控计算机  TMSF240 手机看文章 扫描二维码
随时随地手机看文章
飞控计算机作为飞行控制系统的核心控制处理单元,其可靠性要求是所有航空电子设备中最高的,用于飞控计算机的每一个元器件都必须经过严格的自测试。随着DSP越来越广泛应用于飞控系统,对于芯片内部FLASH的自测试却往往被忽视,这是飞控系统不能容忍的。针对此问题,文章介绍了一种基于TMSF240芯片的内部FLASH自测试方法。

0 引言

目前DSP芯片不仅广泛应用于机载设备中,也越来越广泛地应用于飞控计算机和自动驾驶仪中。飞行控制系统的安全性直接关系到飞机和飞行员的存亡。飞控计算机作为飞行控制系统的核心控制处理单元,其可靠性要求是所有航空电子设备中最高的。自动驾驶仪是按一定技术要求自动控制飞行器的装置,与飞机上其他系统交联还可实现对飞机的控制,其可靠性也不容忽视。用于飞控计算机和自动驾驶仪的每一个元器件都必须经过严格的测试。

飞控计算机CPU模块的处理器通常选用PowerPC或X86系列,CPU模块设计有专门的FLASH芯片,为保证飞控程序存放的正确无误,FLASH测试必不可少。而智能接口模块的处理器通常选用TMSF240、TMSF2812等,采用片内FLASH存放自己的程序。这部分FLASH的自测试常常被忽视,而这是飞控系统不能容忍的。本文介绍了一种基于TMSF240芯片内部FLASH的自测试方法。

1 问题描述

在CPU处理器无自带FLASH空间的情况下,我们选用市场上专用的FLASH芯片,通过硬件设计该FLASH芯片的每一个地址空间都是可以访问的,我们可以指定不同的区域存放不同的内容。FLASH芯片的自测试也有很多种方法,目前较普遍采用的是校验和的方法,即由专门的烧写工具(可以使用软件完成该工具)在烧写的过程中将校验和计算好直接放到指定的单元中,这个单元可以指定到烧程序时写不到的空闲空间,自测试时只需重新计算一遍校验和与该值进行比较即可。此种方法我们称之为方法一。

而TMSF240内部自带FLASH存储空间,烧录过程对于用户来说较透明。我们不直接指定向某一具体的Flash空间写入数据,而是通过执行TI公司提供的批处理文件,经由闻亭仿真器连接目标机来完成烧录程序的过程,因此直接使用方法一我们无处存放校验和为使用方法一来测试芯片内部的FLASH我们必须解决校验和的存放问题。

2 芯片内部FLASH自测试方法概述

下面介绍的方法实现的是解决程序本身自测试程序本身烧到FLASH后保存的是否正确的问题。该方法不是将校验和直接写到FLASH中,而是在待烧录的程序中定义一个变量,该变量最终用于存放事先计算好的校验和,通过两次烧录实现芯片内部FLASH自测试功能的。必须巧妙地避开因改变程序本身而引起的程序校验和改变而导致自测试算法失效的问题。

本方法需要事先将程序完全调试好烧录到FLASH中,然后才能读取FLASH内容计算校验和。此时将校验和值赋给事先定义好的变量,重新编译后得到最终的目标码,烧录到FLASH中。程序上电后自动运行,FLASH自测试程序在每次执行自测试功能时都将要测试的程序空间读出并计算校验和与该变量进行比较,比较结果一致则待测试FLASH空间正确,反之则表明FLASH空间有故障。

由于变量赋值的改变会导致整个代码校验和的改变,因此该问题必须得到恰当的解决。第一次烧写的程序的算法如图1所示。

基于TMSF240芯片的内部FLASH的一种自测试方法

以上步骤中第二步到第四步是此算法的实现重点,它属于代码的一部分,两次烧写要对其进行更改,详见第3节。第三步是本方法的关键所在,由于sum=0,所以经过“sum=sum+sum;”的运算后sum值还是0,并没有改变sum的值。而sum的初值0并没有对程序的真实校验和值做出贡献,这为第二次烧写的程序代码和计算做出铺垫。

3 芯片内部FLASH自测试方法详述

3.1 第一次烧写步骤

第一次烧写过程如下:

步骤1:将包含图1的代码编译后形成待烧录文件*.out;

步骤2:将代码编译生成待烧录文件*.out,然后通过TI公司提供的批处理文件和仿真器将其烧入片内自带的FLASH中。 [page]

3.2 第二次烧写步骤

第二次烧写过程如下:

步骤1:利用闻亭仿真器设置成烧录模式下代码调试模式,将硬件断点设置在FLASH自测试的函数入口处;

步骤2:将程序连续运行至断点处后,单步调试计算出真正的代码和sum=XXX;

步骤3:此时更改程序,将计算好的校验和写入程序中定义好的变量中,即将图1中第二步中sum=0更改为sum=XXX;

步骤4:将代码重新编译生成待烧录文件*.out,然后通过TI公司提供的批处理文件和仿真器将其烧入片内自带的FLASH中。

3.3 方法详细说明

在第二次烧写过程中,图1所示的算法变成图2所示内容。

基于TMSF240芯片的内部FLASH的一种自测试方法

由于原来的校验和为0,现在将其改为XXX,所以第二次固化的程序的校验和比第一次固化的程序的校验和增加了XXX。而第一次固化的校验和本应该为XXX,因此第二次固化程序的最终的校验和计算出来后应check sum为2XXX,图2中的第三步sum=sum+sum正好满足了上述要求,即sum=2XXX。因此第四步check sum=sum能正确反映自测试结果。

需要补充说明一点,该算法是基于第一次烧录成功后重新加载第一次烧录的程序由DSP处理器自动计算校验和是正确的基础上的,这是由CPU的加减乘除和逻辑运算等自测试正确保证的,在上电时PUBIT里有该项自测试。

4 结束语

DSP已经广泛应用于飞控计算机智能接口模块中。虽然其具有很高的可靠性,但在飞控系统的使用中也必须进行测试。本文就DSP芯片内部自带FLASH提出了一种自测试方法,通过两次烧写FLASH将待测空间的校验和计算出来并计入RAM中事先定义好的变量中,重新编译后生成新的目标码校验和变成第一次校验和的2倍。这样利用sum=sum+sum巧妙地避过了两次校验和增加而引起程序的改动。此方法简单有效地解决了DSP芯片内部FLASH自测试问题,并已在机载设备,包括飞控计算机接口模块中得到应用,对提高机载设备的可测试性和可靠性有一定的作用,值得推广使用。

关键字:内部FLASH  自测试  飞控计算机  TMSF240 引用地址:基于TMSF240芯片的内部FLASH的一种自测试方法

上一篇:温度测试系统总体设计方案分析
下一篇:基于CPLD的低功耗爆炸场温度测试系统

推荐阅读最新更新时间:2024-03-30 22:26

stm32 内部flash
嵌入式闪存 闪存 存储器有主存储块和信息块组成 大容量产品主存储块最大为64K×64位,每个存储块划分为256个2K字节的页 编程和擦除闪存 闪存编程一次可以写入16位(半字) 闪存擦除操作可以按页面擦除或完全擦除(全擦除)。全擦除不影响信息块 编程过程 页擦除过程 操作步骤 1.解锁 2.读操作 3.擦除操作 4.写操作 5.获取FLASH状态 6.锁定 举例 #define STM32_FLASH_BASE 0x08000000 #define STM32_PAGE_NUM 256 #define STM32_PAGE_SIZE (2 * 1024) void FLASH_read(u16 *buf,
[单片机]
stm32 <font color='red'>内部</font><font color='red'>flash</font>
STM32 对内部FLASH读写接口函数
简介:因为要用内部FLASH代替外部EEPROM,把参数放在STM32的0x08000000+320K处,其中20K是bootloader,300K是应用程序。 原理:先要把整页FLASH的内容搬到RAM中,然后在RAM中改动,然后擦除整页FLASH,再把改动后的内容写入原Flash页。下面程序调试通过。 /******************************************************************************* * Function Name : I2C_EE_BufferRead * Description : Reads a block of data from th
[单片机]
STM32 内部flash的读写程序
/* Base address of the Flash sectors */ #define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) /* Base @ of Sector 0, 16 Kbytes */ #define ADDR_FLASH_SECTOR_1 ((uint32_t)0x08004000) /* Base @ of Sector 1, 16 Kbytes */ #define ADDR_FLASH_SECTOR_2 ((uint32_t)0x08008000) /* Base @ of Sector 2, 16 Kbytes */ #de
[单片机]
STM32内部flash分配
在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息: Program Size: Code=6320 RO-data=4864 RW-data=44 ZI-data=1636 代表的意思: Code :是程序中代码所占字节大小 RO-data :程序中所定义的指令和常量大小 (个人理解 :Read Only) RW-data :程序中已初始化的变量大小 (个人理解”:Read/Write) ZI-Data :程序中未初始化的变量大小 (个人理解 :Zero Initialize) ROM(Flash) size = Code+RO-data+RW-data; RAM size = RW-data
[单片机]
STC89C58RD+ 内部EEPROM 放数据 FLASH-ISP-IAP
#include reg52.h #include intrins.h /* use _nop_() function */ //sfr16 DPTR = 0x82; /* 新增特殊功能寄存器定义 */ sfr ISP_DATA = 0xe2; sfr ISP_ADDRH = 0xe3; sfr ISP_ADDRL = 0xe4; sfr ISP_CMD = 0xe5; sfr ISP_TRIG = 0xe6; sfr ISP_CONTR = 0xe7; /* 定义命令 */ #define READ_AP_and_Data_Memory_Command 0x01 /* 字节读数
[单片机]
STM32F103使用内部Flash保存参数
在我们应用开发时,经常会有一些程序运行参数需要保存,如一些修正系数。这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能。将这类数据存在指定的位置,需要修改时直接修改存储位置的数值,需要使用时则直接读取,会是一种方便的做法。考虑到这些数据量比较少,使用专门的存储单元既不经济,也没有必要,而STM32F103内部的Flash容量较大,而且ST的库函数中还提供了基本的Flash操作函数,实现起来也比较方便。 以大容量产品STM32F103VE为例,其Flash容量达到512K,可以将其中一部分用作数据存储。如下是大容量的Flash组织模式: 根据上面的Fl
[单片机]
STM32F103使用<font color='red'>内部</font><font color='red'>Flash</font>保存参数
stm32l476 内部flash HAL库操作方法
stm32l476 FLASH特征 • Up to 1 Mbyte of Flash memory with dual bank architecture supporting read-while-write capability (RWW). • Memory organization: 2 banks (Bank 1 and Bank 2) – main memory: 512 Kbyte per bank – information block: 32 Kbyte per bank • 72-bit wide data read (64 bits plus 8 ECC bits) • 72-bit wide
[单片机]
基于DSP28335的飞控计算机DAC扩展电路设计
  模拟量控制和PWM控制是当前无人机舵机控制系统最常用的两种控制方式。其中模拟量控制作为一种传统控制方式,至今仍被广泛应用,绝大多数的飞行控制计算机都提供模拟量输出通道,因此,D/A转换模块是飞行控制计算机中必备的功能模块之一。 DSP28335 片上没有DAC模块,所以必须使用片外扩展。   DAC模块设计涉及D/A转换芯片的选择、参考电压源的配置、数字输入码与模拟输出电压的极性等问题,而其中最核心的问题是D/A转换芯片的选择与应用问题,主要需要考虑的技术指标有分辨率和建立时间等。本文选用BURR—BROWM公司的D/A转换芯片 DAC7725N 实现此功能。   DAC7725是一款高输出电压和低功耗的D/A转换器件,产品功
[嵌入式]
基于DSP28335的<font color='red'>飞控</font><font color='red'>计算机</font>DAC扩展电路设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved