0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用C5402外挂FLASH存储器SST39VF400A实现在系统编程

电子设计 来源:电子技术应用 作者:丁洁 , 魏丰 , 李广 2020-05-19 07:40 次阅读

TMS320VC5402(以下简称C5402)是TI公司的一款性价比极好的16位定点DSP芯片。由于C5402内部只有16K×16位RAM和4K×16位掩膜ROM,用户程序必须存放在外挂的程序存储器中。对程序存储器的编程(即离线编程)通常是通过通用编程器完成的,即用户将要写入的程序转换成编程器能够接收的格式,再通过编程器写入存储器中。随着芯片制造工艺的不断提高,芯片集成度越来越高,存储器正在向小型化、贴片式发展,从而使表面封装或PLCC封装的存储器难以利用编程器编程。目前普遍采用的在系统编程ISP(In System Programming)技术不需要编程器,通过系统的DSP可直接对用户板上的存储器编程,这样不仅节省了通用编程器及适配器的费用,还减少了频繁插拔存储器的麻烦,从而大量节省了系统开发时间,满足了用户程序在线更新的要求。外挂的程序存储器通常选用容量大、存储速度快、功耗低、性价比高的FLASH存储器。

由于DSP仿真软件编译链接后生成的是二进制的COFF格式文件,不能直接写入FLASH中,还需通过Hex转换工具将COFF目标文件转换为标准的ASCII码十六进制格式(即Hex格式)。对于离线编程,只需将这种Hex文件直接作为编程器的输入,即可写入FLASH;而在系统编程,则是利用系统本身的DSP,通过软件编程来实现整个烧写过程。因此,如何对FLASH进行烧写是整个在系统编程的一个关键。本文以一片C5402外挂一片FLASH存储器构成的最小系统为实例,介绍采用C语言编写FLASH烧写程序,并通过DSP将用户程序代码写入FLASH,从而实现在系统编程。

1 DSP与FLASH构成的最小系统

本系统的FLASH存储器选用SST公司的SST39VF400A,用作DSP的数据空间。FLASH的片选信号/CE由DSP的数据空间选择信号/DS和存储器选通信号/MSTRB产生,读使能信号/OE和写使能信号/WE由DSP的读写脉冲信号R/W和/DS、/MSTRB组合产生。FLASH的地址线A0~A15和DSP的A0~A15直接相连,A16和A17接地。由于DSP数据空间0000H~3FFFH为存储器映象寄存器、暂存器和片内RAM,对外部FLASH来讲是不可见的,所以FLASH可操作的地址范围为4000H~0FFFFH。设用户程序从FLASH中8000H单元开始存放,则系统上电时引导程序就从数据空间的8000H单元开始搬运数据到DSP内部RAM指定区域,引导完毕后即跳转到RAM中程序入口地址运行用户程序。

2 SST39VF400A的在系统编程

2.1 芯片简介及常用命令

SST39VF400A是SST公司的256K×16位FLASH存储器,工作电压3.3V、擦写寿命100 000次,访问时间70~90ns。用户只需向其特定地址写入特定的指令序列,那么通过这些命令用户即可启动内部写状态机,从而使其自动完成指令序列要求的内部操作,其中包括:复位、整片擦除、块擦除、扇区擦除、操作字写入等。

2.2 SST39VF400A编程操作

对采用在系统编程的FLASH存储器,整个编程过程由用户控制,因此用户必须了解FLASH存储器的各状态位,以便知道编程或擦除是否结束。SST39VF400A内部提供两种软件检查方法:检查状态位Data# Polling(DQ7)和Toggle Bit(DQ6)。现以检查Toggle Bit(DQ6)位为例来具体说明SST39VF400A的编程及检查机制。SST39VF400A在进行内部编程或擦除时,对任何地址进行连续读取都会引起DQ6的跳变,当操作停止就会结束跳变。因此可以通过连续两次读取检查DQ6的变化情况来判断编程擦除操作是否完成。单字编程及检查流程如图1所示(其中WA为要写入数据的存储地址)。

3 C5402的并行引导装载

通过在系统编程操作可以实现将用户程序代码写入FLASH。如何确定FLASH中用户程序代码的存放格式并正确地引导装载以实现脱机运行,则是整个在系统编程的重点之处。在C5402的五种引导方式中,并行引导是DSP系统最常用最简单的引导方式。下面介绍C5402的并行16位引导装载方法。

3.1 引导过程简介

为了正确引导用户程序,必须编制引导表,引导表要告诉引导程序采用何种引导方式、程序入口地址、各段的目标首地址和长度等。引导表的数据格式是由链接配置文件和HEX转换配置文件决定的,链接配置文件定义各段存放的首地址和长度,而HEX转换配置文件则定义引导方式、程序入口地址和引导表在外部存储器中存放的首地址。引导程序可以从地址为0FFFFH单元的I/O端口或数据存储器取得引导表的起始地址。本文介绍的是并行引导方式,引导过程如下:引导程序先从外部数据空间的0FFFFH单元(即FLASH的0FFFFH单元)读取引导表起始地址,然后从该起始地址读取引导标识。若为08AAH则为并行8位引导方式;若不是再从起始地址的下一单元读取内容,看由此两单元内容组成的16位字是否为10AAH,若是则为并行16位引导方式。最后从引导表指定的地址搬运各段代码到片内RAM对应的地址,搬运完毕后即从程序入口地址执行用户程序。由此可见,引导表的编制是引导过程的关键。下面结合实例具体介绍引导表的形成和装载过程(设用户程序为测试指示灯的程序,源文件为main.asm和vectors.asm源代码省略)。

采用C5402外挂FLASH存储器SST39VF400A实现在系统编程

3.2 链接配置文件编写

(文件名为TestLedLink.cmd)

MEMORY {

PAGE 0:

VEC: org=0100h, len=0080h ;中断向量的首地址和块长度

CODE: org=0180h, len=0F80h ;程序块的首地址和块长度

PAGE 1:

STACKS: org=1100h, len=0100h ;堆栈区的首地址和块长度

DATA: org=1200h, len=1000h ;数据块的首地址和块长度

}

SECTIONS{

.vectors:> VEC PAGE 0 ;将中断向量放入程序页的VEC区

.text> CODE PAGE 0 ;将程序代码放入程序页的CODE区

.stack> STACKS PAGE 1 ;将堆栈放入数据页的STACKS区

.bss> DATA PAGE 1 ;将未初始化变量放入数据页的DATA区

.data> DATA PAGE 1 ;将初始化数据放入数据页的DATA区

}

链接配置文件写好后,通过DSP仿真软件CCS编译链接即可生成TestLed.out文件。在汇编时要注意,不论是DOS下的ASM500还是WINDOWS下的CCS都必须加上-v548开关量,否则不能生成正确的引导表。

3.3 HEX转换配置文件编写

(文件名为TestLedHex.cmd)

TestLed.out ;转换的文件名,即编译链接后的.out文件

-a ;ASCII-HEX格式

-map TestLed.mxp ;生成的映射文件名,可不生成该文件

-o TestLed.hex ;转换后的HEX文件名

-memwidth 16 ;系统存储器宽度为16位

-romwidth 16 ;ROM器件宽度为16位

-boot ;将COFF文件中各段转换为引导表的格式(替代SECTIONS伪指令)

-bootorg 0x8000 ;引导表放在FLASH的8000H开始的单元

-e 0x0100 ;装入引导表后程序运行的起始地址

HEX转换配置文件写好后,使用CCS提供的转换工具HEX500将生成的COFF目标文件TestLed.out转化为标准的ASCII—HEX格式的文件TestLed.hex。注意在转换时一定要把TestLedHex.cmd文件的扩展名cmd加上。

3.4 构造引导表并写入FLASH

经过HEX转换生成的TestLed.hex文件内容。

文件开始为ASCII STX字符,结束为ASCII ETX字符,$A8000表示引导表存放的首地址,接下来的数据就是从8000H单元存放的引导表的内容,转换后的TestLed.hex文件可直接由编程器烧写进FLASH,也可通过在系统编程的方法由上述的DSP烧写程序写进FLASH。执行烧写程序前需要编写一个简单的程序将.HEX文件中起始符、首地址、结束符等与引导表无关的信息去掉,并转换为DSP能识别的文件格式(如.Dat),采用.copy或.include命令将该文件作为数据段嵌入烧写进程序中同时注意在FLASH的0FFFFH单元写入引导表起始地址8000H。烧写FLASH后数据存放格式。

引导表烧写进FLASH后,将MP/Mc引脚置低,上电复位后引导程序就会自动将FLASH中的用户程序搬进片内RAM,搬运完毕后即跳转到程序入口地址,高速运行用户程序。

此方法适用于程序代码小于16K的情况,将用户程序全部导入C5402片内RAM中即可;当用户程序较大而超过16K时,需要外扩程序存储器,此时在引导表中需用到扩展的程序计数器(XPC),来寻址扩展的程序存储空间。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    459

    文章

    51568

    浏览量

    429760
  • FlaSh
    +关注

    关注

    10

    文章

    1649

    浏览量

    149484
  • 存储器
    +关注

    关注

    38

    文章

    7553

    浏览量

    164898
收藏 人收藏

    评论

    相关推荐

    DSP2812读写SST39VF800AC++程序源码

    (); BlockErase(0); Write(FLASH[0x0000], 0x6666); FlashReset();}Busy = false;}下图是在SST39VF800A实现的"
    发表于 02-27 07:50

    请问C5402有内部FLASH吗?

    5402硬件设计没有连接外部存储器查询C5402的手册 没有找到内部FLASH的内容请问把程序烧写到5402板子里 不用仿真
    发表于 02-12 08:32

    Flash存储器SST39SF020的特性及应用介绍

    Flash存储器SST39SF020的资料下载内容主要介绍了:SST39SF020性能特点SST39SF020读写操作和特定指令代码
    发表于 04-15 06:33

    C5402是什么?C5402有哪几个典型应用?

    TS流是什么?C5402是什么?C5402有哪几个典型应用?如何利用CCS去开发仿真
    发表于 05-27 06:23

    怎样采用C5402外挂FLASH存储器SST39VF400A实现一种在系统编程

    DSP与FLASH构成的最小系统是什么?C5402的并行16位引导装载方法是什么?怎样采用C5402外挂
    发表于 06-26 07:23

    单片机系统Flash存储器系统编程设计

    介绍了AM29F010B的编程要求,结合M68HC11上电自动引导功能,针对发动机控制单元设计中编程的问题,提供了一种Flash存储器系统编程
    发表于 09-14 10:33 3427次阅读
    单片机<b class='flag-5'>系统</b><b class='flag-5'>Flash</b><b class='flag-5'>存储器</b>在<b class='flag-5'>系统编程</b>设计

    单片机的FLASH引导装载系统设计

    本文介绍了TMS320C6713浮点DSP芯片和SST公司提供的SST39VF400A FLASH存储器的基本特点,给出了使用该
    发表于 09-20 12:08 1883次阅读
    单片机的<b class='flag-5'>FLASH</b>引导装载<b class='flag-5'>系统</b>设计

    串行A/D与C5402组成的数据采集系统

    人们的广泛青睐。C5402增强外设有软件等待状态发生、锁相环时钟发生、6通道直接存储器访问(DMA)控制、增强型8位并行主机接口(HP
    发表于 10-24 14:10 2次下载
    串行<b class='flag-5'>A</b>/D与<b class='flag-5'>C5402</b>组成的数据采集<b class='flag-5'>系统</b>

    SST39LF200A/400A/800A/SST39VF200A/400A/800A原文资料数据手册PDF免费下载(闪存技术)

    该文档是SST39LF200A/400A/800A/SST39VF200A/400A/800A
    发表于 10-30 16:50 15次下载
    <b class='flag-5'>SST39LF200A</b>/<b class='flag-5'>400A</b>/800<b class='flag-5'>A</b>/<b class='flag-5'>SST39VF200A</b>/<b class='flag-5'>400A</b>/800<b class='flag-5'>A</b>原文资料数据手册PDF免费下载(闪存技术)

    SST39VF401C/402C/SST39LF401C/402C中文资料数据手册PDF免费下载(闪存技术)

    该文档是SST39VF401C/402C/SST39LF401C/402C(高性能CMOS的SuperFlash技术)中文资料用户手册SST39VF
    发表于 10-30 16:54 27次下载
    <b class='flag-5'>SST39VF401C</b>/402<b class='flag-5'>C</b>/<b class='flag-5'>SST39LF401C</b>/402<b class='flag-5'>C</b>中文资料数据手册PDF免费下载(闪存技术)

    SST39VF801C/802C/SST39LF801C/802C中文资料数据手册PDF免费下载(闪存技术)

    该文档是SST39VF801C/802C/SST39LF801C/802C(高性能CMOS的SuperFlash技术)中文资料用户手册SST39VF
    发表于 10-30 16:58 22次下载
    <b class='flag-5'>SST39VF801C</b>/802<b class='flag-5'>C</b>/<b class='flag-5'>SST39LF801C</b>/802<b class='flag-5'>C</b>中文资料数据手册PDF免费下载(闪存技术)

    SST39VF1601/1602/SST39VF3201/3202原文资料数据手册PDF免费下载(CMOS的SuperFlash技术)

    该文档是SST39VF1601/1602/SST39VF3201/3202(CMOS的SuperFlash技术)中文资料用户手册SST39VF1601/1602/SST39VF3201
    发表于 10-30 17:05 30次下载
    <b class='flag-5'>SST39VF</b>1601/1602/<b class='flag-5'>SST39VF</b>3201/3202原文资料数据手册PDF免费下载(CMOS的SuperFlash技术)

    SST39VF1681/SST39VF1682原文资料数据手册PDF免费下载(CMOS的SuperFlash技术)

    该文档是SST39VF1681/SST39VF1682(CMOS的SuperFlash技术)中文资料用户手册SST39VF1681/SST39VF1682的应用特征、功率参数、应用范围
    发表于 10-30 17:10 16次下载
    <b class='flag-5'>SST39VF</b>1681/<b class='flag-5'>SST39VF</b>1682原文资料数据手册PDF免费下载(CMOS的SuperFlash技术)

    基于SST39VF160芯片的Nor Flash操作

    NOR Flash存储器 SST39VF160芯片介绍 SST39VF160是一个1M16的CMOS多功能FlashMPF器件,由SST特有
    发表于 07-15 10:36 5819次阅读
    基于<b class='flag-5'>SST39VF</b>160芯片的Nor <b class='flag-5'>Flash</b>操作

    基于SST39VF3201C/SST39VF3202C32 Mb (x16)多用途闪存

    他方法相比,分离栅极单元设计和厚氧化层隧穿注入实现更高的可靠性和可制造性。 SST39VF3201C/3202C 使用 2.7-3.6V 电源进行写操作 (
    发表于 06-30 11:23 18次下载
    基于<b class='flag-5'>SST39VF3201C</b>/<b class='flag-5'>SST39VF3202C</b>32 Mb (x16)多用途闪存