51单片机与DSP主从机系统及其HPI程序加载

2013-08-26 02:46代传波朱国华王益元
舰船科学技术 2013年9期
关键词:机系统主从寄存器

代传波,廖 武,罗 鹏,朱国华,王益元

(1.武汉第二船舶设计研究所,湖北 武汉 430064;2.清华大学工程物理系,北京 100084)

0 引言

在我国传统船用自动化仪表设计领域中51系列单片机被广泛应用,设计出了很多优秀的产品[1]。但随着技术迅速发展,仪表系统需要处理的数据量越来越大,传统8位单片机难以胜任,对它们进行数字化升级,成了当务之急。引入新型的DSP(数字信号处理器)作为从机进行数据处理,保留传统MCU(单片机)作为主机进行逻辑控制是一种很好的解决方案。

TI公司的 DSP芯片 TMS320VC5402(下文以DSP代称)是目前国内最流行的数字信号处理芯片之一,WINBOND公司的51系列单片机 W77E58(下文以MCU代称)也是国内常用的微控制器之一,本文以它们为实例来对上述主从机结构设计方式进行介绍。文中采用的DSP程序编译软件为CCS2.0,MCU程序编译软件为Keil uVision3。

由于C5402芯片内没有Flash和EPROM等可编程程序存储器,在实际设计中DSP的程序只能保存在外部存储介质中。DSP复位后必须先把程序代码从外部存储介质搬运到内部高速RAM之后才能运行,这个代码搬运过程叫做Bootload(加载或引导)[2]。DSP程序加载方式有多种,本方案选择HPI加载方式,原因如下:

1)HPI接口是主从机结构必备接口。由于系统采用主从机结构方式,无论选择何种加载方式,其HPI通信模块的软、硬件设计都必不可少。

2)HPI加载方式可精简外部设备。W77E58内置32K字节Flash程序存储器,其空间足够容纳DSP和MCU程序内容。将DSP数据处理程序存放其中,可避免DSP周边引入扩展Flash或EPROM等器件,有利于降低成本、提高系统可靠性。

1 主从机结构的HPI口硬件连接及其软件接口

MCU与DSP主从机系统硬件连接方式如图1所示。

图1 MCU与DSP主从机HPI口硬件连接Fig.1 Hardware conection of HPI port between DSP slave and MCU master

在这种结构下,MCU作为主机可以通过HPI接口访问DSP片上RAM所有地址空间,通过HPI口读写可以完成大批量数据交换。主从机通信应答采用相互中断方式实现:DSP通过写HPIC寄存器使得/HINT引脚置低,该信号接入MCU的/INT0引脚中断通知MCU;MCU也可以通过写HPIC寄存器来使得DSP进入HPI中断以控制DSP。

MCU地址和DSP HPI相关寄存器对应关系如表1所示。

表1 MCU地址和DSP HPI相关寄存器对应关系列表Tab.1 List of MCU address and DSP HPI registers maping

在MCU程序中编写读写函数,以通过HPI进行DSP和MCU通信[3],如表2所示。

表2 MCU与DSP HPI通信读写函数列表Tab.2 List of HPI read/write fuctions between MCU and DSP

2 DSP HPI程序加载流程

按图1所示硬件连接,DSP复位后MP/MC引脚采样为“0”表示DSP设置为微计算机模式,DSP片内固化的bootloader程序开始执行,其流程如图2所示[4]。

图2 DSP bootloader程序流程 (HPI部分)Fig.2 Flowt chart of boot loader(part of HPI)

DSP复位时/HINT引脚发出的下降沿脉冲接入/INT2引脚,/INT2中断被接收,使得bootloader识别出 DSP的加载方式为 HPI程序加载。其后bootloader进入循环,DSP不断查询其内存0x007f地址内容 (在此期间MCU通过HPI把DSP程序代码搬入DSP内存,代码搬运完毕之后MCU改写DSP内存0x007f地址内容)。当bootloader发现0x007f地址内容不为0,则把此内容作为DSP程序运行的入口地址,跳转到该入口地址开始运行DSP程序。

3 DSP HPI程序加载代码的获取

在MCU与DSP构成的主从机系统HPI加载过程中,最关键的操作为获取DSP HPI程序加载代码,下面用一个简单例子详细介绍HPI加载方式代码的获取步骤。

3.1 DSP程序编写及COFF格式文件生成

在CCS2.0中用C语言编写一段简单的DSP程序,该程序的功能是在DSP的XF引脚上产生一个固定频率的脉冲信号,其源程序sample.c内容如下:

3.2 从COFF文件中提取HEX数据文件

COFF文件 (即*.out文件)不是存储器映像文件,不能直接载入DSP内存。从外部加载DSP程序时,需利用TI公司提供的工具coff_both.exe从COFF文件提取HEX文件 (即*.out.c文件)以用于加载。HEX文件中以数据形式列出了COFF文件中各section(段)在DSP内存中的“段目的地址”、“段长度”和“段代码”等信息[5]。

提取 HEX文件的具体方法为,将 coff_both.exe与sample.out文件放于同一目录,在DOS模式下输入如下命令:

3.3 将HEX数据文件转化为MCU中的代码数组

根据*.out.c文件列出的section信息,把其“段代码”定义成长度为“段长度”的uint型数组,其“段目的地址”则是MCU准备将该数组通过HPI写到DSP内存中的目的地址 (见表2)。

按照上述方法把*.out.c文件中的每个section均定义为1个数组,并保存在MCU程序源文件中等待HPI写入加载。修改后的HEX文件 sample_mcu.out.c内容如下:

4 单片机HPI程序加载流程

按图1所示硬件连接。DSP复位时/HINT发出下降沿脉冲接入MCU的/INT0引脚,/INT0中断被接收。MCU在中断处理程序中对DSP进行HPI程序加载,其流程如图3所示。

MCU首先通过写DSP控制寄存器初始化DSP的HPI口,然后清“0”DSP整个片上内存,接着把提取到的DSP程序各段代码数组通过HPI写操作搬运到DSP内存对应位置,最后在DSP内存0x007f写入DSP程序入口地址,加载过程完毕。

在MCU程序中用于HPI程序加载的C语言函数源代码如下:

图3 MCU HPI程序加载流程Fig.3 Flow chart of MCU HPI bootload

5 结语

使用51单片机和DSP组成的主从机系统及其HPI程序加载方式的解决方案,既实现了传统仪表的数字化升级又充分利用了原有设计资源,其硬件结构精简、软件设计灵活。基于本主从机系统设计已在笔者研制的船用蒸汽发生器泄漏率监测仪(N16监测仪)中得到应用,经过3年的工程应用证明该系统工作稳定、运行可靠。

在第3节“DSP HPI程序加载代码的获取”中提到的操作较繁杂,需要在DOS界面调用多个软件工具完成,实际工作中应考虑简化。对此,在coff_both.exe的基础上[6]编制了windows环境运行的代码提取程序 BootLoaderCode.exe。一方面,它扩展了section“段长度”限制,避免了代码提取过程中section被拆分的现象 (扩展后的段长为65536字节,DSP程序段长度基本不会超过该值)。另一方面,通过它提取出的*.out.c文件被直接编排为MCU中的代码数组格式,避免了手动拷贝代码操作。

使用BootLoaderCode.exe提取代码,将3.2和3.3节两步合并为一步完成,可简化繁琐的人工操作,避免错误引入,能显著提高工作效率。

[1]李朝青.单片机原理及接口技术(简明修订版)[M].北京:北京航空航天大学出版社,2002.LI Cao-qing.Theory and interface technology of single-chip microcomputer(concise emend version)[M].Beijing:Beihang University Press,2002.

[2]张雄伟.曹铁勇DSP芯片的原理开发与应用(第二版)[M].北京:电子工业出版社,2000.ZHANG Xiong-wei,CAO Tie-yong.The designing principle and application of DSP(V2)[M].Beijing:Electronic Inderstry Press,2000.

[3]马忠梅,等.单片机的c语言应用程序设计[M].北京:北京航空航天大学出版社,2000.MA Zhong-mei,et al.Design of C language application in single-chip microcomputer[M].Beijing:Beihang University Press,2000.

[4]PEREZ R D.TMS320VC5402及 TMS320VC5402程序加载[DB/CD].TI公司应用报告 SPRA618A,2002.PEREZR D.TMS320VC5402 and TMS320VC5402 Bootloader [DB/CD].TI Application Report SPRA618A,2002.

[5]TATER S.TMS320VC5402在 HPI模式下的程序加载[DB/CD].TI公司应用报告 SPRA382,2002.TATER S.Bootloading the TMS320VC5402 in HPI Mode[DB/CD].TI Application report SPRA382,2002.

[6]CHHABRA A,IYER R.从COFF文件中提取对等的Hex数值[DB/CD].TI公司应用报告 SPRA573,1999.CHHABRA A,IYER R.Extracting equivalent hex values from a COFF file[DB/CD].TI Application Report SPRA573,1999.

猜你喜欢
机系统主从寄存器
水电厂计算机监控系统上位机改造新老系统网络割接的实践
探析电梯门机系统机电性能试验
Antarctica's pretty pink snow
Lite寄存器模型的设计与实现
二进制翻译中动静结合的寄存器分配优化方法
基于ACS880变频器XD2D主从功能的采煤机牵引调速系统设计
车机≈手机 ?
移位寄存器及算术运算应用
基于飞行试验数据的仿真模型主从一体化检验
博世完成对采埃孚转向机系统的收购