RE: [ixp1200] core locks using IXA SDK
Hello Tim, I hope I have understood your issue correctly:
From: Tim Stevens [mailto:tim.stevens@intec.ugent.be] Sent: Tuesday, April 20, 2004 2:42 PM
Chapter 7 (p 167) of the IXP1200 programming book states that an SRAM memory read-lock can be obtained by the following command: *(unsigned int *)(SRAM_READ_LOCK + (sramLWAddr << 2)); where sramLWAddr is the physical address in longwords and SRAM_READ_LOCK is defined as follows: #define SRAM_READ_LOCK 0x12000000
Quite obviously, this results in a memory violation because the memory was not previously allocated (in the 0x12000000 range).
Your are confusing Physical and Virtual addresses. I don't have the IXP1200 book at hand but as far as I can guess, the 0x12000000 is a physical one. So you need to open a window, i.e. a virtual address to physical address translation, from a virtual address range of your user linux program to the 0x12000000 physical address range. The simplest way, in my humble opinion, is to mmap(2) the /dev/mem device that corresponds to physical address space. You'll find an example of such a program at: http://www.lart.tudelft.nl/lartware/port/devmem2.c
A related problem we face is that our addresses allocated in SRAM (by RmMalloc) seem to have a virtual address starting with 0xf400...., which does not correspond to the 10000000-->107fffff range presented in the "StrongARM Core Memory Map" (appendix C) from the "Microcode Programmer's Reference Manual".
I think that once again your are confusing physical and virtual addresses.
Yours,
david
--
David Mentré
participants (1)
-
David Mentre