Hello. I am trying to use GPMC with CS6 on a Mistral OMAP35x evm. I downloaded the mem_util.c program to access registers and it works fine for reading and writing the GPMC config registers. I want to set up the configuration to use a non-multiplexed device, 16 bits wide. I want to set up cs6 for address 0x30000000. I have no hardware connected to it at this time.
It seemed to me that for asynchronous access all default values apply, except I turn on LIMITEDADDRESS in GPMC_CONFIG1 by writing a 0x12 to 0x6E000050 and change GPMC_CONFIG7 by writng 0xF70 to 0x6E000198. This is intended to access memory 0x30000000 and turn on the CSVALID flag.
If I run the mem_util program from power up and read and write to 0x30000000, it reads and writes with no problem, reporting a legal value when reading.
After setting the GPMC_CONFIG7, and using the program to access 0x30000000, it reports a bus error like this:
-bash-3.1# ./reg-access 0x30000000
/dev/mem opened.Unhandled fault: external abort on non-linefetch (0x1018) at 0x40017000
Memory mapped at address 0x40017000.
just before 'w'
Bus error
-bash-3.1#
It seems I am missing in the config but I do not know what. Any suggestions would be appreciated.
I have put a scope probe on cs6 but it is low all the time. Anyone know if the mux pins are set correctly for these functions on the board?
Thanks in advance.
Dick