Chinaunix首页 | 论坛 | 博客
  • 博客访问: 475462
  • 博文数量: 51
  • 博客积分: 1056
  • 博客等级: 少尉
  • 技术积分: 676
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-10 22:53
文章存档

2018年(2)

2017年(1)

2013年(2)

2012年(9)

2011年(36)

2010年(1)

分类: 嵌入式

2011-09-08 09:57:25

这几天在给一个fpga写模拟以太网的驱动,需要用mpc8548的dma把数据在ddr和local bus之间搬移。
8548的DATRn寄存器的DWRITETTYPE这段配置,描述如下:
Transaction type to run on local address space—Used even in non-ATMU bypass mode
0000–0011 Reserved
0100 Write, don’t snoop local processor
0101 Write, snoop local processor
0110 Write, allocate L2 cache line
0111 Write, allocate and lock L2 cache line
1000–1111 Reserved

实在不知道这些术语,正好手边有《linux powerpc详解 --核心篇》,感觉作者王齐先生很牛x很热心,就发邮件求助,哈哈,真的回复了。
> Transaction type to run on local address space—Used even in non-ATMU bypass
> mode
> 0000–0011 Reserved
> 0100 Write, don’t snoop local processor
表示此次Transaction不与Processor的Cache进行一致性操作,此时你需要保证在DDR中的数据是最新拷贝。即在DMA开始之前,Cache中的数据需要与DDR进行同步,用Flush操作即可。
> 0101 Write, snoop local processor
与CPU进行一致性操作,建议你使用这种方式。
> 0110 Write, allocate L2 cache line
DMA访问的数据在Cache中Miss后使用Allocate策略。
> 0111 Write, allocate and lock L2 cache line
使用Allocate策略的同时,将数据锁定到Cache中,不参加替换操作。



阅读(1240) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~