I can’t post a reply on this topic because it is locked, so I open a new one.
I have a Geode lx800 processor with a ite8888 pci-isa (pc104) bridge. In the future I will have two PC/104 boards. One with I/O ports access and another one with I/O ports and memory-mapped access.
I am able to read/write I/O ports with the first one :
ThreadCtl(_NTO_TCTL_IO, NULL);
out8(address, data);
// data = in8(address);
note : mmap_device_io() isn’t necessary on x86 systems
I have not the second board yet but still I’m trying PC/104 memory access with an oscilloscope (MEMW signal monitoring for PC/104 16 bits access).
Here’s my code:
Of course, my bios is configured to decode PC/104 memory address 0x0F0000.
There is no fluctuation on MEMW line…
I tried a 16-bits read also but with no more success.Same results with 8-bits read/write access (SMEMW, SMEMR).
This is not the answer you want, however…
You have proved that there is a problem the hard way.
As with software, when doing something directly in hardware, there is always the possibility that you have a bug, or rather a procedural error.
I would wait until you get your new board and see if you can’t access the memory on it.
A little update. I am now able to write memory.
There was a little bug in the code I posted earlier (2 mismatched parameters in mmap_device_memory and I didn’t dereference MyAddress ) :
If for *MyAddress = 0; you see the write for variable = *MyAddress you should see the read. If not then I’m pretty sure it’s hardware related, and not some config in the program.
I can eventually read the memory of my board. It seems that I just needed a response from a slave after all. Strange but functionnal.
Maybe the PCI/ISA bridge is designed like this.