当前位置:首页 > 单片机 > 单片机
[导读]TMS320C62x和TMS320C67x DSPs提供了几种不同的启动模式,不同的启动模式决定了DSP复位后的初始化以及代码装载方式

作者Email:  cai_yang@etang.com

    摘要TMS320C62x和TMS320C67x DSPs提供了几种不同的启动模式,不同的启动模式决定了DSP复位后的初始化以及代码装载方式。本文就TMS320C62x DSP的HPI启动模式进行详细的说明。

    关键词:TMS320C62x    DSP     HPI   启动模式

    1 绪言

    在TMS320C62x系列DSP中,主机口HPI是一个16位宽度的并行端口。主机(也称上位机)掌管该接口的主控权,通过它可以直接访问CPU的存储器空间。另外,主机还可以直接访问TMS320C62x片内的存储映射的外围设备。

    HPI与CPU存储空间的互连是通过DMA控制器实现的。借助专门的地址和数据寄存器,通过DMA辅助通道,完成HPI对存储空间的访问。主机和CPU都可以对HPI控制寄存器HPIC进行访问,主机一方还可以访问HPI地址寄存器HPIA和HPI数据寄存器HPID。

    2 TMS320C62x引导模式

    TMS320C62x系列DSP提供了三种引导方式:

    (1) 没有自举过程:CPU直接从地址0开始执行代码;

    (2) ROM自举:由DMA/EDMA控制器从外部CE1空间中的ROM中拷贝固定数量的一段代码到地址0,拷贝结束后,CPU从地址0开始运行;

    (3) HPI自举:由外部主机通过HPI对芯片的存储器空间进行初始化,初始化结束后,外部主机通过HPI中断唤醒CPU,CPU开始从地址0运行。

    所有这些设置项都是在芯片复位的时候才进行检查。一旦复位信号有效(reset=0),所有的三态输出管脚恢复为默认状态,然后在reset信号的上升沿处检查设置管脚BOOTMODE[4:0]的状态,自举逻辑开始生效。其中C6201/C6701有专门的管脚作为BOOTMODE[4:0],C6211/C6711则是利用主机口的HD[4:0],C6202/C6203利用扩展总线的XD[4:0]作为BOOTMODE[4:0]信号。

    对于TMS320C62x的HPI自举模式过程如下:首先需要设置Boot模式,Boot模式设置如表1所示。当DSP被复位时,如果选择了HPI boot模式,那么只有DSP的内核进入复位状态,DSP其余模块均保持激活状态。这样,主机就可以通过HPI接口访问DSP的整个存储空间,包括片内、片外存储器和片内的外设寄存器,对它们进行初始化。主机对DSP做完了有关设置后,向HPIC寄存器的DSPINT位写1,将DSP从复位状态唤醒,接下来CPU就从地址0开始执行程序。主机对DSP可以进行的操作包括:初始化CPU和EMIF,向DSP加载程序以及数据等。

表1 TMS320C62x HPI boot配置
 

BOOTMODE[4:0]

Memory Map

Memory at Address 0

Boot

00110

MAP 0

External; default values

HPI

00111

MAP 1

Internal

HPI

    3 TMS320C62x HPI引导模式的实现

    3.1 创建启动代码

    实现TMS320C62x HPI引导模式的第一步是生成HPI引导的DSP代码,并把它与主处理器应用程序合并在一起,使DSP应用程序可以和主处理器应用程序一起远程下载。为了简化,采用下列方案:把DSP应用程序转换成头文件中的数组,并和主处理器应用程序一起编译连接。

    具体实现分为两步:1)利用转换工具HEX6x把COFF文件转换成ASCII-Hex格式十六进制文件;2)利用自编工具hex2aray.exe将ASCII-Hex格式的文件转换成包含数组的头文件。

    (1)利用转换工具HEX6x把COFF文件转换成ASCII-Hex格式十六进制文件

    利用转换工具HEX6x把COFF文件转换成十六进制文件,使用转换工具HEX6x需要一个.cmd文件说明具体的转换格式,如下面文件hexcom.cmd所示:HEX6x把COFF文件test.out转换成两个ASCII-Hex格式的文件:一个是代码段,包含在文件test.a00中;另一个是初始化的数据段,包含在文件test.a10中。在DOS命令行中执行hex6x hexcom.cmd将产生test.a00和test.a10两个文件。

文件hexcom.cmd:
..object est.out
-a
-byte
-image
-memwidth 16
-romwidth 16
-order M

ROMS
{
/* Size of the internal pgm memory */
PGM: org = 0x00000000, length = 0x10000
/* Size of the internal data memory */
DATA: org = 0x80000000, length = 0x10000
}

    (2)利用工具hex2aray.exe生成头文件

    然后利用hex2aray.exe将两个ASCII-Hex格式的文件:test.a00和test.a10分别转换成两个个包含数组的头文件:code.h和init.h。工具hex2aray.exe为自编工具。在DOS命令行中分别执行hex2aray –i test.a00 –o code.h和hex2aray –i test.a10 –o init.h两条命令将产生两个头文件code.h和init.h。在文件hexcom.cmd中的选项:- a,指示HEX6x按ASCII-Hex格式转换文件,ASCII-Hex文件格式如下所示:

^B
$AXXXX,
XX XX XX XX XX XX XX XX XX XX. . .
^C

    文件开始是ASCII STX 字符 (ctrl-B, 02h),结束是ASCII ETX 字符 (ctrl-C, 03h);$AXXXX,代表地址;其余为代码。转换后的头文件格式如下:

const char code[]={0x12,0x18,0x01,0x00,0x28,0x00,0x00,0x00,0x2A,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,
0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

    3.2 主机对HPI接口的操作

    TMS320C62x提供了三个16位寄存器:HPIC、HPIA、HPID和16位数据线与主处理器通信。主处理器通过HPIC、HPIA、HPID和16位数据线来与TMS320C62x进行数据交换,数据交换的过程如下:

    1)首先初始化HPIC;
    2)然后把地址写到HPIA;
    3)最后通过HPID读或写数据。

    假设主机CPU也是TMS320C62x,那么主机与目标机之间的连接如图1所示:

    如图1所示,假如Target 6201的/HCS连接到主机6201的CE1上。Target 6201的HPI寄存器映射到Host 6201DSP内存中,HCNTRL[1:0]和HHWIL连接到主机CPU的地址线上,那么HPIC、HPIA、HPID寄存器的地址分配如表2所示。,那么在C语言中,可以通过指针访问HPIC、HPIA、HPID,例如:

#define C6201_HPI 0x01400000  /* Host address on which C6x HPI is mapped */
int *hpi_ptr;      /* define and initialize pointer*/
hpi_ptr = (int *)C6201_HPI;

/* Write dest_address to HPIA, with HOB=1 */
ptr_hpi[2] = (int)(dest_address & 0x0ffff);
ptr_hpi[3] = (int)((dest_address>>16)&0x0ffff);

表2  HPIC、HPIA、HPID各寄存器的地址分配
 

映射到主机的地址

HPI控制线

HPI寄存器访问

HCNTL[1:0]

HHWIL

HPI Base address + 0x00

00

0

HPIC 1st  halfword

HPI Base address + 0x04

00

1

HPIC 2st  halfword

HPI Base address + 0x08

01

0

HPIA 1st  halfword

HPI Base address + 0x0C

01

1

HPIA 2st  halfword

HPI Base address + 0x10

10

0

HPID 1st  halfword

HPIA 自增

HPI Base address + 0x14

10

1

HPID 2st  halfword

HPIA自增

HPI Base address + 0x18

11

0

HPID 1st  halfword

HPIA不自增

HPI Base address + 0x1C

11

1

HPID 2st  halfword

HPIA不自增

    3.3 主机通过HPI下载代码和数据段到目标DSP

    一个程序由初始化区和非初始化区两部分组成,主机处理器必须根据.cmd命令文件把这两个区装载到DSP正确的地址。下面这段代码就是将代码段和数据段两部分分别下载到指定地址(即程序RAM和数据RAM)。它主要是从*source中读出32位长的数据,然后通过HPI将此数据写到DSP的dest_add地址(即程序RAM和数据RAM)中。*source中的数据就是DSP的启动代码段和数据段中的数据。

void C6x_write_section(int *ptr_hpi, short *source, int dest_add, int length)
{
int i;
/* Write HPIC with HWOB=1,1st halfword transferred is least significant */
/* HCNTRL1 HCNTRL0 HHWIL */
ptr_hpi[0] = 0x0001; /* 1st halfword 0 0 0 */
ptr_hpi[1] = 0x0001; /* 2nd halfword 0 0 1 */
/* Write destination address to HPIA, 1st halfword is least significant */
/* HCNTRL1 HCNTRL0 HHWIL */
ptr_hpi[2] = (int)(dest_add & 0x0ffff); /* 0 1 0 */
ptr_hpi[3] = (int)((dest_add>>16)&0x0ffff);/* 0 1 1 */
for(i=0 ; i < length ; i++)
{
/* Write source_word to HPID with address post-increment */
/* 1st half-word transferred is least significant */
/* HCNTRL1 HCNTRL0 HHWIL */
ptr_hpi[4] = (int) *source++; /* 1 0 0 */
ptr_hpi[5] = (int) *source++; /* 1 0 1 */
}
}

    3.4 目标DSP开始执行所下载的代码

    主机通过HPI下载代码段和数据段到目标DSP以后,那么目标DSP就需要执行所下载的代码了。通过写HPIC寄存器的DSPINT位为1让DSP退出复位状态后,DSP就开始从地址0执行所下载的代码了。具体实现代码为:

/* Write HPIC with DSPINT=1 */
/* HCNTRL1 HCNTRL0 HHWIL */
/* 1st halfword 0 0 0 */
/* 2nd halfword 0 0 1 */
ptr_hpi[0] = 0x0002; /* 1st halfword */
ptr_hpi[1] = 0x0002; /* 2nd halfword */

    4 总结

    根据前面所述,TMS320C62x HPI启动过程如图2所示。



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

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 信息技术
关闭
关闭