405EP peripheral bus
Paul Miller
pmiller9 at users.sourceforge.net
Thu Nov 20 07:43:16 EST 2003
Has anyone messed around with accessing the peripheral bus on a 405EP PPC? I've already written a driver to allow me to read/write to the EBC (external bus control) registers from userspace, but I can't seem to toggle CS0\, OE\, R/W, etc. Is there anything special about CS0\ (after boot)?
By default, Intrinsyc/Linux sets ups the EBC registers as follows:
EBC0_B0CR : 0xffe3a000
EBC0_B1CR : 0x60018000
EBC0_B2CR : 0x00000000
EBC0_B3CR : 0x00000000
EBC0_B4CR : 0x00000000
EBC0_B0AP : 0x04002480
EBC0_B1AP : 0x04005480
EBC0_B2AP : 0x00000000
EBC0_B3AP : 0x00000000
EBC0_B4AP : 0x00000000
EBC0_BEAR : 0x00000000
EBC0_BESR0 : 0x00000000
EBC0_BESR1 : 0x00000000
EBC0_CFG : 0x80400000
and I changed B0CR to 0x0043a000 and I'm trying to use mmap like:
#define MAP_BASE (0x00400000)
#define MAP_LENGTH 0x10
#define MAP_PROT (PROT_READ | PROT_WRITE)
#define MAP_FLAGS (MAP_SHARED)
volatile unsigned char *init_map(int *file)
{
volatile unsigned char *map;
if ((*file = open("/dev/mem", O_RDWR | O_SYNC)) == -1) {
puts("Failure opening device.");
return NULL;
}
map = (unsigned char *) mmap(NULL, MAP_LENGTH, MAP_PROT, MAP_FLAGS, *file, MAP_BASE);
if (map == (void *) -1) {
puts("Failure mapping memory.");
close(*file);
return NULL;
}
return map;
}
then reading/writing to the returned map address. ... any suggestions?
I have an oscilloscope and digital logical analyzer available to probe signals.
Thanks!
-Paul
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list