Hello,
Can there be a virtual address which is also some physical address?
Eg.
In my OEMaddrtable,
DCD 0x80000000, 0xA0000000, 128 ; 128MB SDRAM
DCD 0x9A800000, 0x00000000, 128 ; 128MB Nor flash(physical Base->
0x0000_0000)

ie. flash phy range = 0x0000_0000 to 0x0800_0000)
flash virtual range = 0x9DB0_0000 to 0xA5B0_0000)

But SDRAM phy address range = 0xA000_0000 to 0xA800_0000

In this table the flash virtual address range and SDRAM physical address
range are
overlapping.

1.Will this cause any problem?
When I need virtual address of some region of flash(say 0x0316_0000) ,the
OALPAtoVA function
is returning some wrong address in SDRAM.
2.What could be reason behind it?

Thank you Gurus for your support in advance.

Regards
Bloreiti

--
Message posted via PocketPCJunkies.com
http://www.pocketpcjunkies.com/Uwe/Forums.aspx/wince-pb/200803/1

Re: Virtual and physical addresses by Luca

Luca
Mon Mar 17 01:50:14 PDT 2008

The problem is not related in virtual/phyisical addresses overlapping, it is
due to your
OEMAddressTable: the only valid virtual memory mapping range is from
0x80000000 to 0x9FFFFFFF.
For every entry created in the table, the kernel creates two virtual address
ranges:

from 0x80000000 to 0x9FFFFFFF and is memory that has caching enabled.
from 0xA0000000 to 0xBFFFFFFF and has caching disabled.

Your mapping for the flash is exceeding the cached address range and
overlapping
the uncached range for SDRAM.


--

Luca Calligaris
www.eurotech.it

"blore_iti via PocketPCJunkies.com" <u40930@uwe> ha scritto nel messaggio
news:8146450bd5ccd@uwe...
> Hello,
> Can there be a virtual address which is also some physical address?
> Eg.
> In my OEMaddrtable,
> DCD 0x80000000, 0xA0000000, 128 ; 128MB SDRAM
> DCD 0x9A800000, 0x00000000, 128 ; 128MB Nor flash(physical Base->
> 0x0000_0000)
>
> ie. flash phy range = 0x0000_0000 to 0x0800_0000)
> flash virtual range = 0x9DB0_0000 to 0xA5B0_0000)
>
> But SDRAM phy address range = 0xA000_0000 to 0xA800_0000
>
> In this table the flash virtual address range and SDRAM physical address
> range are
> overlapping.
>
> 1.Will this cause any problem?
> When I need virtual address of some region of flash(say 0x0316_0000) ,the
> OALPAtoVA function
> is returning some wrong address in SDRAM.
> 2.What could be reason behind it?
>
> Thank you Gurus for your support in advance.
>
> Regards
> Bloreiti
>
> --
> Message posted via PocketPCJunkies.com
> http://www.pocketpcjunkies.com/Uwe/Forums.aspx/wince-pb/200803/1
>



Re: Virtual and physical addresses by blore_iti

blore_iti
Mon Mar 17 03:16:07 PDT 2008

Thanks for your immediate response.
Why cant we map in the region where caching is disabled( ie 0xA000_0000 to
0xBFFF_FFFF)?

Luca Calligaris wrote:
>The problem is not related in virtual/phyisical addresses overlapping, it is
>due to your
>OEMAddressTable: the only valid virtual memory mapping range is from
>0x80000000 to 0x9FFFFFFF.
>For every entry created in the table, the kernel creates two virtual address
>ranges:
>
>from 0x80000000 to 0x9FFFFFFF and is memory that has caching enabled.
>from 0xA0000000 to 0xBFFFFFFF and has caching disabled.
>
>Your mapping for the flash is exceeding the cached address range and
>overlapping
>the uncached range for SDRAM.
>
>> Hello,
>> Can there be a virtual address which is also some physical address?
>[quoted text clipped - 23 lines]
>> Regards
>> Bloreiti

--
Message posted via PocketPCJunkies.com
http://www.pocketpcjunkies.com/Uwe/Forums.aspx/wince-pb/200803/1


Re: Virtual and physical addresses by blore_iti

blore_iti
Mon Mar 17 03:39:57 PDT 2008

Hello LUCA,
I have some more queries.
How OALVAtoPA() and OALPAtoVA() functions convert virtual to physical and
vice versa respectively ?
Is it one to one mapping using the OemAddrtable or any other technique is
used?
In some code examples , I have seen hardcoded virtual addresses used.
How to calculate the virtual address corresponding to any physical address?

eg flash phy range = 0x0000_0000 to 0x0200_0000)
flash virtual range = 0x9DB0_0000 to 0x9DD0_0000)
The virtual address returned by OALVAtoPA for Phy addr-> 0x000A_0000 is
0xBDC4_0000.
How it calculated this?
Thank you




blore_iti wrote:
>Thanks for your immediate response.
>Why cant we map in the region where caching is disabled( ie 0xA000_0000 to
>0xBFFF_FFFF)?
>
>>The problem is not related in virtual/phyisical addresses overlapping, it is
>>due to your
>[quoted text clipped - 15 lines]
>>> Regards
>>> Bloreiti

--
Message posted via http://www.pocketpcjunkies.com


Re: Virtual and physical addresses by Luca

Luca
Mon Mar 17 06:17:56 PDT 2008

The virtual address range you can use for the virtual-to-physical mapping
in OEMAddressTable is only 0x80000000 to 0x9FFFFFFF (512MB).
Every entry in this table is replicated in the second table in the range
0xA0000000 to 0xBFFFFFFF.
Suppose you define in your OEMAddressTable an entry for 128MB of flash as
follows:

DCD 0x90000000, 0x00000000, 128

the kernel will define another entry

DCD 0xB0000000, 0x00000000, 128

If you access the flash using the virtual addresses @ 0x90000000 you access
the physical range with cache enable; if you access the flash using the
virtual
addresses @ 0xB0000000 you access the physical range with cache disable.

So if you have a virtual cached address and you add 0x20000000, you'll get
the virtual uncached address.

The OEMAddressTable defines a static mapping between kernel virtual
addresses
and physical addresses. if you have an application, the virtual memory it
uses is
allocated dinamically, i.e. virtual address 0x7000000 will map to some
physical
address in RAM according to the MMU




--

Luca Calligaris
www.eurotech.it

"blore_iti via PocketPCJunkies.com" <u40930@uwe> ha scritto nel messaggio
news:814921bc47ddf@uwe...
> Thanks for your immediate response.
> Why cant we map in the region where caching is disabled( ie 0xA000_0000 to
> 0xBFFF_FFFF)?
>
> Luca Calligaris wrote:
>>The problem is not related in virtual/phyisical addresses overlapping, it
>>is
>>due to your
>>OEMAddressTable: the only valid virtual memory mapping range is from
>>0x80000000 to 0x9FFFFFFF.
>>For every entry created in the table, the kernel creates two virtual
>>address
>>ranges:
>>
>>from 0x80000000 to 0x9FFFFFFF and is memory that has caching enabled.
>>from 0xA0000000 to 0xBFFFFFFF and has caching disabled.
>>
>>Your mapping for the flash is exceeding the cached address range and
>>overlapping
>>the uncached range for SDRAM.
>>
>>> Hello,
>>> Can there be a virtual address which is also some physical address?
>>[quoted text clipped - 23 lines]
>>> Regards
>>> Bloreiti
>
> --
> Message posted via PocketPCJunkies.com
> http://www.pocketpcjunkies.com/Uwe/Forums.aspx/wince-pb/200803/1
>



Re: Virtual and physical addresses by Dean

Dean
Mon Mar 17 06:29:42 PDT 2008

You only map the cached area from 0x80000000-0x9FFFFFFF. The kernel itself
creates a copy of that area from 0xA0000000-0xBFFFFFFF that has the same
physical memory but marked as uncached.

--
Dean Ramsier - eMVP
BSQUARE Corporation


"blore_iti via PocketPCJunkies.com" <u40930@uwe> wrote in message
news:814921bc47ddf@uwe...
> Thanks for your immediate response.
> Why cant we map in the region where caching is disabled( ie 0xA000_0000 to
> 0xBFFF_FFFF)?
>
> Luca Calligaris wrote:
>>The problem is not related in virtual/phyisical addresses overlapping, it
>>is
>>due to your
>>OEMAddressTable: the only valid virtual memory mapping range is from
>>0x80000000 to 0x9FFFFFFF.
>>For every entry created in the table, the kernel creates two virtual
>>address
>>ranges:
>>
>>from 0x80000000 to 0x9FFFFFFF and is memory that has caching enabled.
>>from 0xA0000000 to 0xBFFFFFFF and has caching disabled.
>>
>>Your mapping for the flash is exceeding the cached address range and
>>overlapping
>>the uncached range for SDRAM.
>>
>>> Hello,
>>> Can there be a virtual address which is also some physical address?
>>[quoted text clipped - 23 lines]
>>> Regards
>>> Bloreiti
>
> --
> Message posted via PocketPCJunkies.com
> http://www.pocketpcjunkies.com/Uwe/Forums.aspx/wince-pb/200803/1
>



Re: Virtual and physical addresses by Dean

Dean
Mon Mar 17 06:31:19 PDT 2008

It typically does a lookup in the OEMAddressTable. The function is only
valid for addresses that have been statically mapped in using the
OEMAddressTable. You can't pick any random physical address.

--
Dean Ramsier - eMVP
BSQUARE Corporation


"blore_iti via PocketPCJunkies.com" <u40930@uwe> wrote in message
news:814957074672b@uwe...
> Hello LUCA,
> I have some more queries.
> How OALVAtoPA() and OALPAtoVA() functions convert virtual to physical and
> vice versa respectively ?
> Is it one to one mapping using the OemAddrtable or any other technique is
> used?
> In some code examples , I have seen hardcoded virtual addresses used.
> How to calculate the virtual address corresponding to any physical
> address?
>
> eg flash phy range = 0x0000_0000 to 0x0200_0000)
> flash virtual range = 0x9DB0_0000 to 0x9DD0_0000)
> The virtual address returned by OALVAtoPA for Phy addr-> 0x000A_0000 is
> 0xBDC4_0000.
> How it calculated this?
> Thank you
>
>
>
>
> blore_iti wrote:
>>Thanks for your immediate response.
>>Why cant we map in the region where caching is disabled( ie 0xA000_0000 to
>>0xBFFF_FFFF)?
>>
>>>The problem is not related in virtual/phyisical addresses overlapping, it
>>>is
>>>due to your
>>[quoted text clipped - 15 lines]
>>>> Regards
>>>> Bloreiti
>
> --
> Message posted via http://www.pocketpcjunkies.com
>