TI中文支持网
TI专业的中文技术问题搜集分享网站

HPI读写DSP内部RAM,型号TMS320VC5416

我在手册上看到,HPI可以访问全部的RAM空间。但是我用HPI读写DSP内容DARAM,OX80~0X7FFF地址范围内能够进行正确的读写,超过0X8000读出错,PMST配置的0x7fa8,DROM=1,OVLY=1,MP/MC=0.请大家指点

Shine:

0X8000这块地址是Reserved,不能访问,请参考数据手册上的Figure 3-9. HPI Memory Map
www.ti.com/…/tms320vc5416.pdf

,

user6535822:

谢谢,我设置DROM=1,将DARAM4~7映射到0X8000~0XFFFF了;0X18000~0X1FFFF也用的物理存储器DARAM4~7,也就不能用了对吗?我访问0X18000~0X1FFFF也出错

,

Shine:

HPI Memory Map是HPI能访问的memory空间,和设不设置DROM没有关系。

,

user6535822:

那我为什么都写0X18000~0X1FFFF出错或者0X28000~0X2FFFF.第二个问题我如果设置了DROM=1和MP/MC=0,那么具体哪个物理内存映射到0X18000~~0X1FFFF.

,

Shine:

这个是针对HPI能访问的DSP memory空间,改DROM,是DSP内核能访问的DSP memory空间,两个概念不一样。

,

user6535822:

基本知道了,也就是我可以继续用HPI访问0X18000~0X1FFFF是吗?。但是我试着访问了,读出来数据是错误的。但是我读写0x8000以内的都正确呀。用HPI加载程序也能正常运行。谢谢,我最近查了好多资料不知道怎么解决。

,

Shine:

请看一下访问0x18000时,XPC寄存器值是否为1指向page1。

,

user6535822:

XPC寄存器查看的方法能告诉我吗?我加载程序用的也是HPI加载,可以加载0x28000~0x2ffff.内存分配如下

MEMORY CONFIGURATION                   name origin length used attr fill

———————- ——– ——— ——– —- ——–PAGE 0: IPROG   00006000 00001f80 00000b79 RWIX               VECT     00007f80 00000080 00000080 RWIX               EPROG 00018000 00008000 00000000 RWIX               IPEOG2 00028000 00008000 00001fae RWIX               IPROG3 00038000 00008000 00000000 RWIX

PAGE 1: USERREGS 00000060 0000001a 00000000 RWIX               CSLREGS 0000007a 00000002 00000000 RWIX               BIOSREGS 0000007c 00000004 00000004 RWIX               IDATA 00000100 00005e00 00005d18 RWIX               MYREGS 00005f00 00000100 000000fa RWIX               EDATA 00008000 00008000 00005cda RWIX

,

Shine:

This register is memory-mapped into data space to address 001Eh. At a hardware reset, the XPC is initialized to 0.

,

user6535822:

这个我在手册上能查到,谢谢。但是我在用主机HPI访问时,如何能看到XPC值,我给HPIA[n:16]送的值是否就付给XPC了。

我再有个疑问如果我寄存器配置DROM=1,DSP访问时地址DARAM4~7,是0X8000~0XFFFF,而用HPI访问时DARAM4~7,地址是否是0X18000~1FFFF了,MP/MC=0;希望得到肯定的意见

,

Shine:

要配置HPIC寄存器里的XHPIA,HPIA寄存器的值才会送HPIA[n:16]。请参考下面的手册Figure 5−3. HPIC Register。
www.ti.com.cn/…/spru302b.pdf

我的理解是,0X8000~0XFFFF和0X18000~1FFFF映射到同一块DARAM4~7物理地址。

,

user6535822:

我配置了,地址分两次配置。HPIC赋值0x10,写HPIA[n:16]也就是页地址,HPIC赋值0x00写HPIA[15:0]。BSCR配置的是0X8002,还需要配置那个寄存器?谢谢您

,

Shine:

写HPIA[n:16]页地址时,HPIC应该赋值0x20。

,

user6535822:

HPIC寄存器  XHPIA,是第4位,为什么是0x20;我换了一块DSP板,赋值0X10可以读写;0xx18000~0x1fff;正在查找这一块为什么出错的原因,您有什么好办法吗?

,

Shine:

您用的是HPI8模式是吗?这个模式XHPIA是第4位。HPI16模式是第5位。

建议比较一下两块板子的HPI写时序是否一样。

,

user6535822:

是的我用的HPI8,示波器查看吗?还是有其它的方法,我主机程序都是一样,电路也是一样的。对了0X18000配置成CODE还是DATA;有区别吗

,

Shine:

对的,用示波器查看一下。没什么区别。

,

user6535822:

谢谢,我用示波器查看一下!不过奇怪的事我用HPI加载后,程序都能正常运行~就是读写存储器不正常

,

Shine:

请问程序是通过HPI口加载到0x18000这块memory后运行的?

,

user6535822:

没有,有部分代码是加载到0X28000这块memory后运行的。

,

Shine:

看一下程序能加载到0x18000这块memory么?

,

user6535822:

我是用DSP/BIOS编程的,Memory设置了数据和程序空间,编译完成后map表的程序空间自动将程序分配给了0X28000;所以主机加载的时候只能按照map表定义的地址加载。如何改编译器的程序地址我不会,能提供方法吗?谢谢

,

Shine:

请使用#pragma CODE_SECTION (symbol, ”section name”) 伪指令把段定义到指定的memory。
reverse.0cpm.org/…/spru103g.pdf
如在c文件中定义
#pragma CODE_SECTION(funcA, ”codeA”)
int funcA(int a)
{
int i;
return (i = a);
}

在cmd文件中,把codeA段定义到指定的RAM。

赞(0)
未经允许不得转载:TI中文支持网 » HPI读写DSP内部RAM,型号TMS320VC5416
分享到: 更多 (0)