当前位置:首页 > 单片机 > 单片机
[导读]引导装载是DSP系统设计中必不可少的重要环节。文章对TI公司TMS320C6711中FLASH引导装载的概念、方法及特点做了详细阐述,同时以SST公司的FLASH器(SST39VF040)为例,设计了一个利用FLASH进行引导装载的系统方案,并给出相应的自加载程序源代码。

   摘要:引导装载是DSP系统设计中必不可少的重要环节。文章对TI公司TMS320C6711FLASH引导装载的概念、方法及特点做了详细阐述,同时以SST公司的FLASH器(SST39VF040)为例,设计了一个利用FLASH进行引导装载的系统方案,并给出相应的自加载程序源代码。

    关键词:数字信号处理器 FLASH存储器 引导装载 TMS320C6711

1 概述

在一些脱机运行的DSP系统中,用户代码需要在加电后自动装载运行。DSP系统的引导装载(Bootload)是指在系统加电时,由DSP将一段存储在外部非易失性存储器中的代码移植到高速存储器单元中去执行。这样既可利用外部存储单元来扩展DSP本身有限的ROM资源,又能充分发挥DSP内部资源的效能。因此,在装载系统中,外部非易失性存储器和DSP的性能显得尤为重要。FLASH是一种高密度、非易失性的电可擦写存储器,而且单位存储比特的价格比传统EPROM要低,十分适合用于低功耗、小尺寸和高性能的便携式系统。本文介绍了TI公司TMS320C6711浮点DSP芯片和SST公司SST39VF040 FLASH存储器的基本特点,同时给出了一具完整的用FLASH来实现系统引导装载的实现方案。

2 硬件设计

2.1 器件介绍

整个系统由DSP(TMS320C6711),外部FLASH存储器(SST39VF040)以及电源管理单元等构成。下面主要介绍前面两个模块。TMS320C6711数字信号处理器是美国TI公司推出的TMS320C6000系列浮点DSP的一种,它采用256管脚的BGA封装,3.3V的I/O电压和1.8V的内核电压供电方式,并具有两级cache缓存结构和高达900MFLOPS的峰值运算能力,可广泛应用于图像处理等系统中。

SST39VF040是SST公司推出的FLASH存储器,该器件十分适合用作外扩存储器,它的存储容量为4MB,采用3.3V单电源供电,无需额外提供高电压即可通过一些特殊的命令字序列实现对各个子模块的读写和擦除,并且可以重复十万次以上,因而可通过DSP软件编程来实现对它的读写操作,十分适合于系统的调试和开发。

2.2 硬件连接

DSP访问片外存储器主要通过外部存储器接口(EMIF),它不仅具有很强的接口能力,可以和各种存储器直接接口,而且还具有很高的数据吞吐能力,最高可达1200MB/s。TMS320C6711的EMIF支持8位、16位和32位宽的所有存储器,当从这些窄位宽的存储空间读写数据时,EMIF会将多个数据打包成一个32位的值,而不必增加额外电路。TMS320C6711与SST39VF040的连接电路如图1所示。

    该电路主要通过DSP的相关输出管脚来控制FLASH的擦除和读写。其中,A0~A18为地址线,DQ0~DQ7为数据线,OE和WE分别为输出使能和写使能,CE1为片使能。由于TMS320C6711默认的引导模式是从外部CE1空间的8位FLASH来引导装载,所以,TMS320C6711的CE1和FLASH的片选CE相连。如果是从16位或32位FLASH引导,则只需将HD[4:3]设置成相应的值即可。

2.3 EMIF寄存器的配置

由于TMS320C6000在异步接口上更加方便,因此,用户可以灵活地设置读写周期以实现与不同速度、不同类型的异步器件的直接接口。EMIF接口由一组存储器映射的寄存器进行 控制与维护,包括配置各个空间存储器类型和设置读写时序等。和异步器件接口时需配置CE空间控制寄存器,由它来控制存储器的读写周期,本系统用到了CE1空间,故需要设置CE1空间控制寄存器的值。在设置CE1空间控制寄存器时,应满足以下条件:

(1)异步读时:

SETUP+STROBE≥(tacc(m)+tsu+tdmax)/tcyc

SETUP+STROBE+HOLD≥(trc(m))/tcye

HOLD≥(th-tdmin-toh(m)/tcye

HOLD≥(th-tdmin-toh(m)/tcye

(2)异步写时:

STROBE≥(twp(m)/tcye

SETUP+STROBE≥(txw(m))/tcye

HOLD≥(Max(tih(m),twr(m))/tcye

SETUP+STROBE+HOLD≥(twc(m))/tcye

(3)附加参数TA:TA≥(tohz(m))/tcye

以上参数可以从芯片手册里查到,并可据此得以满足上述条件的CE1值:CE1=1161C901h。

3 软件设计

引导装载系统主要由实现自加载功能的定制代码和用户程序两部分构成,最后都存储在外扩SST39VF040的指定地址中。其中如何写定制代码是设计的重点,它负责将中断向量表和用户代码段从片外FLASH移植到其它高速存储器中,并且将程序指针指向用户 代码段的起始地址。

3.1 FLASH引导过程

对于许多DSP应用 系统,常常需要从FLASH装载程序到DSP以便使它能够脱机运行。设置完芯片装载方式后,FLASH引导装载的具体过程如下:

首先将位于外部CE1空间的FLASH(即图1中的SST39VF040)中的程序通过EDMA自动搬入内部RAM的地址0处(参见图2),实际上,尽管加载过程RAM的地址0处(参见图2),实际上,尽管加载过程是在芯片复位信号被释放后才开始的,但是当芯片开始复位时,就开始准备上述传输了。用EDMA进行 的加载过程是一个单帧数据块的传输过程,数据块的大小为1kB,当然这1kB的数据必须包括用于实现自加载功能的定制代码,1kB的数据传输完成后,CPU退出复位状态,开始执行地址0处的自加载功能的定制代码,同时把其它的初始化段从FLASH拷贝到相应的高速存储器处,之后初始化C变量以换行用户程序。

3.2 链接

在链接自加载功能的定制代码和其它代码时,需要特别注意该程序COFF(公共目标文件格式)段的放置。因为有时候需要对某些段制定两个不同的地址:一个导入地址,一个运行地址。导入地址用来决定装载器把段的原始数据放在何处,而运行地址就是该段代码运行的地方。任何对段的引用都是指它的运行地址。因此,如果给某个段指定不同的导入地址和运行地址,在程序访问该段之前,都需要把它从导入地址拷贝到运行地址处,当然这个拷贝过程有时是自动进行的,有时需要人工介入,即由自加载功能的定制代码来完成。如前面提到的1kB数据拷贝就是EDMA自动完成的。显然,制定两个不同地址的目的是为了加快代码的执行速度。链接可由*.cmd文件来实现。代码在链接在应遵循以下原则:

(1)所有代码和初始化数据都必须有一个FLASH的导入地址;

(2)所有非常数数据据都有一个RAM运行 地址;

(3)未初始化的数据无需独立的导入地址;

(4)从FLASH拷贝到RAM的代码要有一个FLASH导入地址和RAM运行 地址。

3.3 写自加载功能的定制代码

通常1kB的定制代码需要包括以下三个部分:

(1)配置EMIF寄存器。只有正确配置了EMIF的值,它才有可能访问外部存储器FLASH和SDRAM;

(2)拷贝初始化段。对于既有导入地址,又有运行地址的初始化段,需要把它从导入地址拷贝到它的运行地址处,处时还必须参考.map文件来确定要搬移的数据块的大小,这些段代码的搬移可以用汇编指令MOV来实现,也可以用TMS320C6711的EDMA来实现。由于用EDMA搬移数据要对EDMA参数进行设置,所以通常采用MOV指令来实现;

(3)转向C程序的入口_c_int00,即跳转到main()函数的入口处。

    该自加载功能的代码如下:

BOOT_SIZE .equ 0x9800 ;待装载代码的大小

FLASH_START .equ 0x90000000 ;FLASH起始地址

BOOT_START .equ 0x0000000 ;L2 sram起始地址

EMIF_GCR .equ 0x01800000 ;EMIF全局控制寄存器的地址

EMIF_CE1 .equ 0x01800004 ;CE1空间控制寄存器的地址

EMIF_CE1-8 .equ 0x1161C901 ;CE1空间控制寄存器的值

.sect ".boot_load"

.global_boot

.ref_c_int00

_boot:

mvkl EMIF_GCR,A4

mvkl 0x3300,B4

mvkh EMIF_GCR,A4

mvkh 0x3300,B4

stw B4,*A4 ;配置EMF全局控制寄存器

mvk1 EMIF_CE1,A4

mvk1 EMIF_CE1-8,B4

mvkh EMIF_CE1,A4

mvkh EMIF_CE1-8,B4

stw B4,*A4 ;配置CE1空间控制寄存器

mvkl BOOT_START+1024,A4 ;待搬移数据的目标地址

mvkl FLASH_START+1024,B4 ;待搬移数据的源地址

mvkh BOOT_START+1024,A4

mvkh FLASH_START+1024,B4

zer0 A1

_boot_loop1: 数据搬移

ldb *B4++,B5

mvkl BOOT_SIZE,B6

add 1,A1,A1

mvkh BOOT_SIZE,B6 ;B6为待搬移数据块大小,可根据实际情况来修改

cmplt A1,B6,B0

nop

stb B5,*A4++

[B0]b_boot_loop1

nop 5

mvk1 .S2_c_init00,B0

mvkh .S2_c_int00,B0

B .S2 B0 ;转向C程序的入口

nop 5

3.4 FLASH编程

建立好了上述定制代码段、用户程序段、中断向量表和链接命令文件后,便可利用TI公司的DSP集成开发环境CCS进行编译、调试及链接,之后生成的目标文件*.out就是DSP能够识别的COFF格式。为了使系统能够脱机运行,需要把该目标文件的代码写入FLASH中,往FLASH中写入目标代码可以采用以下两种方法:

(1)用硬件仿真器XDS510/560通过JTAG口对FLASH进行在线编程。此时需要把*.out文件数据放入缓冲存储器,然后按照FLASH芯片手册提供的编程格式把缓冲存储器里的数据写入FLASH。

(3) 利用编程器进行编程。由于编程器不支持*.out文件模式,不能直接写入FLASH中,所以必须将*.out文件转换成编程器可读入的*.hex格式,这可以通过CCS软件中的转换工具hex6x来实现,转换时要注意hex.cmd文件的写法,而且整个文件转换过程是在DOS提示符下完成的。

4 结论

利用上述方法可使系统在脱机状态下实现引导装载,本次实验所用的用户代码段的功能是利用 DSP的多通道缓冲串口发送一个字符串给PC机的RS232口。按照前面的方法写好定制代码段、用户程序段、中断向量表和链路命令文件并进行编译、链接、格式转换以及写入FLASH之后,系统就可以实现脱机运行了。这样,给DSP系统加电后,就可以通过串行口调试软件在PC机上接收到DSP所发送的字符串以证明引导装载成功。由于用户代码段也可以被其它程序代替,因此,本文设计的引导装载系统其有一定的通用性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭