Shine Zhang非常感谢!
您太谦虚了,我这个人很笨,又没人指导,全靠个人,网上乱窜,跟个无头苍蝇一样,但是我不是那么容易放弃一件事。
总结一下哈,经过您的指导,让我明白了:
1,对于data空间地址的读写操作是通过对地址的的直接读取的,例如
向data地址里写数据,如*(0x1000)=0x1, R/W#信号、DS#信号、MSTRB#信号会自动拉低表示写信号。
从data地址里读数据,如i=*(0x1000), MSTRB#、DS#信号会自动拉低,R/W#信号会自动拉高表示读信号。
且data空间地址肯定可以连续访问,哈哈
问题一:有没有办法让R/W#一直拉低呢?即使我连续读写呜呜呜
我在手册:http://www.ti.com/lit/ds/symlink/tms320vc5416.pdf的第五章Fugire 5-6Consecutive Mode Memroy Reads
看到连续读可以使MSTRB#、DS#一直拉低,R/W#一直拉高,我下面这样是否能实现:
int *AddressIncrease = *(0x1000);
int a[];
for(i=0;i<1024;i++)
[
a
=*AddressIncrease;
]
在这段读的时间内,MSTRB#、DS#一直拉低,R/W#一直拉高,是否是这样呢?若不能,代码该如何正确编写呢?
2,对于program空间地址的读写操作是通过对地址的的直接读取的,例如
向program地址里写数据,如*(0x1000)=0x1, RW信号、PS#信号、MSTRB#信号会自动拉低表示写信号。
从program地址里读数据,如i=*(0x1000), MSTRB#、PS#信号会自动拉低,RW信号会自动拉高表示读信号。
且program空间地址肯定可以连续访问,哈哈
3,对于IO空间地址的读写操作是通过对地址的的直接读取的,例如
向IO空间地址里写数据,如*(0x1000)=0x1, RW信号、IS#信号、IOSTRB#信号会自动拉低表示写信号。
从IO空间地址里读数据,如i=*(0x1000), IOSTRB#、IS#信号会自动拉低,RW信号会自动拉高表示读信号。
且IO空间地址只能一个一个的定义,然后才能连续访问,另外也可以使用下面这种方式进行连续访问:
start:
ORM #00020h,pmst ;set OVLY=1
STM #01000h,ar2 ;pointer to data memory address
STM #02000h,ar3 ;pointer for I/O port address
MVMD ar3,(portloc+1) ;update PORTW instruction
; with new address
STM #table_length,BRC ;initialize BRC
RPTB end_block-1
portloc: PORTW *ar2+,0h ;copy word from data space to
; I/O space and increment
; data memory address
MAR *ar3+ ; increment I/O memory address
MVMD ar3,(portloc+1) ;update PORTW instruction
;with new address
NOP ;wait for MVMD pipeline latency
NOP ;wait for MVMD pipeline latency
;(portloc+1) is now updated
end_block:
问题二:1、如何把上面的汇编转成C,如何转换?看一下哈,我转化得对不对?谢谢您
#define PMST *(0x1D)//PMST寄存器的地址
#define AR2 *(0x12)//AR2寄存器的地址
#define AR3 *(0x13)//AR3寄存器的地址
ioport unsigned port2000; //IO空间
PMST = 0x20;
AR2 = *(0x1000);
AR3 = *(port2000);
//太笨啊,下面就不知道怎么写啦
3、我想让IOSTRB#信号一直拉低,我怎么去做呢?呜呜呜,我想实现一直拉低IOSTRB#信号,我的脑袋太死,肯定不会这样吧
ioport unsigned port2000; //IO空间
ioport unsigned port2001; //IO空间
ioport unsigned port2002; //IO空间
ioport unsigned port2003; //IO空间
。。。
ioport unsigned port23FF; //IO空间
int a[1024];
a[0]=port2000;
a[1]=port2001;
a[2]=port2002;
...
a[1021]=port23fd;
a[1022]=port23fe;
a[1023]=port23ff;
//脑袋太死板了,怎么实现持续拉低IOSTRB#
问题三:大侠,我还有一个问题,我又重新看了一遍
TMS320C54x DSP Reference Set Voulume 1:CPU and Peripherals(SPRU131F)第三章Memory和TMS320VC5416 Fixed-Point Digital Sigal Processor Data Manual(SPRS095P)第3.1Memory中
去寻找关于自动设置PS#/DS#/IS#/MSTRB#/IOSTRB#的地方????????没有找到相关描述的地方,请指导一下在那片手册里面,让我好好的学习消化一下,非常感谢!