[Armadillo:06856] Re: Armadillo-300 拡張バスについて

東海ファームウェア(株) email@hidden
2011年 3月 4日 (金) 17:44:34 JST


お世話になります、TFC小林です。

抜粋したので、つじつまが合わないところがあるかもしれません。

ご指摘どおり、/dev/memを使用しています。

2つのアドレス空間をアクセスしたいので、
mmapが2つあります。

#define NS_MEM_MODULE_BASE_PA 0xA0700000
#define NS_MEM_MODULE_SIZE 0x00100000

#define	PARAM_SIZE_MASK 0xffffff
#define EXT_FPGA_BASE_ADDR 0x70000000
#define PARAM_SIZE 0x1000000

unsigned short *mapadrs;
unsigned int *mapadrs2;

char *dev = "/dev/mem";
unsigned int data;

// レジスタアクセス空間の指定
fd = open(dev, O_RDWR);
if (fd < 0){
  return -1;
}

mapadrs = (unsigned short*)mmap(0, PARAM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, EXT_FPGA_BASE_ADDR);
mapadrs2 = (unsigned int*)mmap(0, NS_MEM_MODULE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, NS_MEM_MODULE_BASE_PA);

if(mode==0){
  volatile unsigned short* reg = (volatile unsigned short*)mapadrs;
  data=reg[0];
  reg[0]=(unsigned short)data;
}else{
  volatile unsigned int* reg = (volatile unsigned int*)mapadrs2;
  data=reg[0];
  reg[0]=data;
}

以上、よろしくお願いします。


> 竹之下です。
> 
> > CPUから拡張バスを通して、16bit幅でリード・ライトの
> > アクセスをしたいと思うのですが、
> > 現在、StaticConfigレジスタ(0xA0700260)=0x00000081を設定して
> > リード・ライトをそれぞれ1回のみ実行すると、
> > リードについては、
> > BLS0=0,BLS1=0で16bitアクセスが2回出力され、
> > ライトについては、
> > BLS0=0,BLS1=1で下位8bitアクセスが1回、
> > BLS0=1,BLS1=0で上位8bitアクセスが1回、
> > 出力されます。
> > リード、ライトともにアドレスは同じです。
> とのことですが、現在、どのようにして拡張バスにアクセスされていますか?
> 
> 以前のメールでは、/dev/memを通してユーザーランドアプリケーションから
> という話が出ていたようです。
> http://lists.atmark-techno.com/pipermail/armadillo/2011-January/006529.html
> 
> メモリアクセスをしている部分のソースコードを見せていただくことは可能でしょうか?
> 
> TFC 小林 さんは書きました:
> > お世話になります、TFC小林です。
> > 
> > Armadillo-300の拡張バス(CON12)について教えてください。
> > 
> > CPUから拡張バスを通して、16bit幅でリード・ライトの
> > アクセスをしたいと思うのですが、
> > 現在、StaticConfigレジスタ(0xA0700260)=0x00000081を設定して
> > リード・ライトをそれぞれ1回のみ実行すると、
> > リードについては、
> > BLS0=0,BLS1=0で16bitアクセスが2回出力され、
> > ライトについては、
> > BLS0=0,BLS1=1で下位8bitアクセスが1回、
> > BLS0=1,BLS1=0で上位8bitアクセスが1回、
> > 出力されます。
> > リード、ライトともにアドレスは同じです。
> > 
> > リードについては何故16bitが2回出力されるのか?
> > ライトについては何故8bitなのか?
> > 
> > どのようにすれば、16bitでリード、ライト
> > 1回のアクセスにすることが出来るかご教授お願いします。
> > 
> > 参考までにConfigレジスタ値(0xA0700000 - 0xA0700300)を
> > 読み出したファイルを添付させていただきました。
> > 
> > よろしくお願いします。
> > 
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > _______________________________________________
> > armadillo mailing list
> > email@hidden
> > http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 
> 
> -- 
> Koyo Takenoshita
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo




armadillo メーリングリストの案内