IO address acess on L4linux for ARM

Adam Lackorzynski adam at os.inf.tu-dresden.de
Sat Sep 23 22:56:19 CEST 2006


Hi,

first, please be more verbose on telling what you want to do, it's hard
to understand you. (After deciphering the text, I stripped out those
nasty HTML tags in the this reply.)

On Wed Sep 20, 2006 at 10:31:31 +0900, ±è±¤½Ä wrote:
> IO peripheral Address region in my platform is 0xfffb0000 - 0xfffeffff
> 
> I want to add device driver in L4linux.
> 
> 
> in L4linux device driver
> 
> *(volatile unsigned char *)0xfffb0000 = 'c';
> 
> following case made error 
> 
> 
> result error e0
> l4lx | Invalid source for request: 2f.3f
> result error e0
> l4lx | Invalid source for request: 2f.3f
> result error e0
> l4lx | Invalid source for request: 2f.3f
> result error e0
> l4lx | Invalid source for request: 2f.3f
> result error e0
> l4lx | Invalid source for request: 2f.3f
> 0000003600000037
> failed CLI: 0000000c.00000004
> 
> How can I access IO Address?

You cannot access arbitrary addresses until configured so and
additionally not above 0xd0000000 as this is kernel land.

One of the simpler ways is the following with those steps to be taken:

Edit pkg/sigma0/server/src/ARCH-arm/main.cc and add the following line
to the other ones occurences of Region_instance:
static Region_instance< 0xfffb0000, 0x004000, 12 > devs_fffb;

Then, add
memmap.add_region(&devs_fffb);
to the other memmap.add_region calls.

Recompile sigma0.

I don't know how your driver looks like but you have to map your device
memory somewhere in the L4Linux address space. One possible way is to
use base = ioremap(0xfffb0000, 0x4000) before accesses this area.
Then use 'base' to access your device memory.




Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/




More information about the l4-hackers mailing list