大家好,这个问题比较急 希望大家帮忙解决下
我们的应用是: gpmc上挂了一个类似于nor flash的设备, 我采用异步 16dat 非复用 现在可以正常工作, 但
想用edma来增加性能 现在有几个疑问:
1 我们的数据线是16bit的, 没看到edma设置位宽的地方, 是acnt吗?
2 对于trm里面说的FIFO模式 OPT的FWID字段:
0-7h FIFO Width. Applies if either SAM or DAM is set to constant addressing mode.
0 FIFO width is 8-bit.
1h FIFO width is 16-bit.
2h FIFO width is 32-bit.
3h FIFO width is 64-bit.
4h FIFO width is 128-bit.
5h FIFO width is 256-bit.
这里的意思是说如果我FWID设置成1, 那么地址增加16bit就回绕,比如我的地址是0, 数据是16bit,
那么一次dma应该是递增16bit, 那么下一次的地址就又回绕到0? 我对这个FIFO width不太理解?
3 因为我们的芯片操作是写16字节(16bit数据线,所以就是写8次) 然后读16字节(读8次) 这导致我的dma不太好配置,
是否能弄两个dma通道, 一个write, 一个read, 都设置成A-synchronized且ITCINTEN和TCINTEN使能, 然后两个通道chain一下
这样是否可以达到我期望的效果: 每dma进行一次write后会自动触发dma read一次?
先谢谢大家了!
rong pong:
没人帮忙吗? 指点一下啦 呵呵
rong pong:
回复 rong pong:
真没人知道么?
rong pong:
回复 rong pong:
最后一次求助 谁来帮帮我啊?
Jian Zhou:
回复 rong pong:
理论上讲,芯片内部EDMA的传输位宽和GPMC外部的位宽没有具体关系吧
rong pong:
回复 Jian Zhou:
终于等到回复了, 先谢谢你 我们gpmc上挂的是16bit数据的设备 dma操作的时候 怎么知道送16bit数据或者取16bit数据呢?
比如我现在不用dma的代码可能是这样写:
for (i = 0; i < (len>>1); ++i) writew(*((unsigned short *)src+i), dst);
这样读:
for (i = 0; i < (len>>1); ++i) *((unsigned short *)dst+i) = readw(addr);
但是dma操作的时候,如果不告诉它是16bit 它怎么去操作呢?
lei kou:
回复 rong pong:
你好!我也在做类似的事情,能不能把你的驱动源码发一份给我,我这边的一直调不通,不知道是为什么,你外接的是FPGA吗?
rong pong:
回复 lei kou:
我外接的是加密芯片,处于保密 不能给你 不好意思!
user6200184:
回复 rong pong:
TI社区不行,资料超少,解决问题也不及时
yongqing wang:
回复 user6200184:
你有啥问题可以直接发帖,如果发帖应该都能得到回答,或者官方人员会把问题发到TI的资深人员那里