[ELDK] new developer for kilauea PPC405EX, EBC device?

Price, John @ SDS john.p.price at l-3com.com
Wed Mar 19 15:50:38 CET 2008


Wolfgang, thank you for your response.

>Be careful. The user manual is one thing, and the implementation in a
>specific piece of code (like U-Boot, or Linux, or another  OS)  is  a
>completely different and often unrelated thing.

At the end of the day the hardware device has to have an address that
only it will respond to on the bus, regardless of O.S.

>EBC is a bus control interface. Many different  devices  with  pretty
>muchdifferent  characteristics  can  be  attached  to  it. You cannot
>simmply "mmap()" such an interface. You need device drivers for  each
>of the devices that are attached to the EBC.

True, however we plan on putting a Dual-Port memory device with
registers.  I think mmap() should suffice for simple reads and writes
from user space, at least initially.

>What exactly do you mean by "core" ? Linux kernel space?

My apologies for the confusion, by "core" I meant the PPC405 processor
core.

>> What has to change if that EBC space needs to be relocated to a
>> different region or enlarged?
>Could you pleasse explain what you are trying to do? This question
>doesn't make sense to me.

It was a hypothetical question, looking for any ramifications from
moving the real physical address of the EBC space or changing its size.

>> Then I want to initiate a DMA transfer from my user program such that
>> the DMA controller reads some number of bytes from EBC space and
writes
>> them to a buffer in my user program.  Getting the right addresses
into
>> the DMA controller via DCR will be the next step after mapping the
EBC
>> space.  
>> 
>> Is it possible to do this through a user program or is this
>> functionality only possible through a device driver?

>You cannot access the necessary registers from user  space,  and  you
>cannot process interrupts in user space. You will have to implement a
>real device driver for this.

Wait a minute, my user program should be able to access the DMA
controller configuration registers via DCR.  Right.

Determining the correct addresses to load into the DMA controller I have
some idea of what this means.  But I am not so familiar with linux, I
will be investigating this aspect very closely.

What I would like to do initially is make a "light weight" driver such
that I can use mmap() to perform simple reads and writes on the device
from my application.  

Later the application would call select() and wake up when the device
goes active taking the appropriate action.  This will take a more
involved device driver, capable of processing interrupts, setting up the
dma, doing what you have stated previously.


Regards,

---
John Price  <john.p.price at l-3com.com> 781-970-1743
L-3 Communications
Security & Detection Systems Division, 
10E Commerce Way, Woburn, MA 01801
 

-----Original Message-----
From: wd at denx.de [mailto:wd at denx.de] 
Sent: Tuesday, March 18, 2008 7:51 PM
To: Price, John @ SDS
Cc: eldk at lists.denx.de
Subject: Re: [ELDK] new developer for kilauea PPC405EX, EBC device?

Dear John,

in message
<B9639434CFA424438117913649CDB78704C52A5D at MA_EXCHANGE.corp.sds.l-3com.co
m> you wrote:
> 
> Hi I am a new to this list and have just started development on a
> project that will use the PPC405EX device.  Looking at the
kilauea405EX
> user manual I see the EBC is mapped at 0x8000 0000. 

Be careful. The user manual is one thing, and the implementation in a
specific piece of code (like U-Boot, or Linux, or another  OS)  is  a
completely different and often unrelated thing.

> Does the kernel "Linux Kilauea 2.6.23-gc96cdd1f #1" dated "Fri Jan 11

Why would you want to use that ole kernel? The current one which  you
can   find   at  ftp://ftp.denx.de/pub/linux/images/amcc/kilauea/  is
version 2.6.25-rc5-01207-g66b3fa2 - I recommend to use this one (or
build your own from the sources).

> 17:39:36 CET 2008 ppc unknown" provide a device file descriptor for
the
> EBC that I may use with mmap() ?  

EBC is a bus control interface. Many different  devices  with  pretty
muchdifferent  characteristics  can  be  attached  to  it. You cannot
simmply "mmap()" such an interface. You need device drivers for  each
of the devices that are attached to the EBC.

> Initially I'd like to be able to read the EBC address space from core.


What exactly do you mean by "core" ? Linux kernel space?

> What has to change if that EBC space needs to be relocated to a
> different region or enlarged?

Could you pleasse explain what you are trying to do? This question
doesn't make sense to me.

> Then I want to initiate a DMA transfer from my user program such that
> the DMA controller reads some number of bytes from EBC space and
writes
> them to a buffer in my user program.  Getting the right addresses into
> the DMA controller via DCR will be the next step after mapping the EBC
> space.  
> 
> Is it possible to do this through a user program or is this
> functionality only possible through a device driver?

You cannot access the necessary registers from user  space,  and  you
cannot process interrupts in user space. You will have to implement a
real device driver for this.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"I can call spirits from the vasty deep."
"Why so can I, or so can any man; but will they come when you do call
for them?"          - Shakespeare, 1 King Henry IV, Act III, Scene I.


More information about the eldk mailing list