[Armadillo:05095] Re: 物理アドレスへのアクセスについて

mizo email@hidden
2010年 4月 13日 (火) 15:46:27 JST


溝渕です。

HLDC 齋藤由香 wrote:
> Armadillo-9のフラッシュメモリの物理アドレスへアクセスし、
> 直接書き込みをしたいと思い、
> 以下のようなプログラムを組みました。
> 
> ==================================
> #include <asm/io.h>
> #include <stdio.h>
> 
> void main( void )
> {
> 	unsigned short *map;
> 
>   	map = (unsigned short *)ioremap(0x60000000,0x1000);
>   	printf("ioremap: %p\n",map);
> 
> 	*((volatile unsigned short *)(map)) = dat;
> }
> 
> ==================================
> 
> 
> このプログラムをコンパイルしたところ、
> 【undefined reference to 'ioremap'】
> というエラーが出ました。
> 
> 'ioremap'という関数はLinux内に既に定義されているものだと
> 考えていたのですが、自分で処理を組み込むものなのでしょうか?

__KERNEL__が定義されていなければioremap()は定義されません。これは、カー
ネル以外では使用すべきではないためこのようになっています。

[atde2]$ less /usr/arm-linux-gnu/include/asm/io.h
	  :
	(省略)
	  :
#ifdef __KERNEL__
	  :
	(省略)
	  :
#define ioremap(cookie,size)		__ioremap(cookie,size,0)
	  :
	(省略)
	  :
#endif	/* __KERNEL__ */

> また、フラッシュメモリの物理アドレスへアクセスする方法は、
> Ioremap関数を使用する方法で、本当に良いのでしょうか?

なぜフラッシュメモリの物理アドレスへアクセスしたいのかがわかりませんが、
フラッシュメモリに何かデータを書き込むのが目的でしょうか?

flatfsdを使用したり、/dev/以下のデバイスファイル経由で書き込みを行なった
りするのでは目的を達成できませんか?



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