FS Forth LXNET50 dev board and SAK82C900 device?

Hi All I’ve got a LxNET50 dev kit which has a Infineon SAK82C900 TwinCAN device as a 8-bit memory mapped peripheral using a multiplexed address/data bus via glue logic and buffering… The kit has no driver for the device… and even if it did, I’m not using Linux on the board… so I’m writing my own… However, the CAN device has a very strange scheme for accessing the internal registers: 1) The device is paged (No real problem) 2) The CAN RAM areas of the memory map need either very long gaps between accesses (not possible via the NET+50 chip select configuration as no way to insert post cycle null cycles) or in the case of reads n + 1 short reads to get n bytes of real data… with each read being the real data for the access immediately before… This scheme is implemented on the device to stop RAM access clashes between the CAN controllers and the external memory interface… Inter write null periods can be achieved in software by breaking the write up into byte slices in code and inserting NOPs after each individual write… The reading of the CAN RAM register should also be easy… However, I can not find a reliable general purpose method for reading a given 32-bit register as simply reading addresses n, n+1, n+2, n+3, n+4 and using the last four bytes (swapping byte order for endian mode accordingly) does not always work. This is because some ram registers have non-ram register after them in the memory map and so the read n+4 gives the first byte of the non-RAM register… Also the memory interface is very flakey and it appears every so often the SAK82C900 internal buffering logic doesn’t update the internal address and so the next read gives the data for the read two accesses ago and not the one immediately before… This causes read-modify-write operations to shaft the state of the registers… bang… code asserts… Being more of a hardware engineer, and having simulated the memory control logic to test timing etc, I suspect my code is driving the device badly and the flakiness in the reads is a result/side effect… Anyone got any experience with this device? and even better the one on the LxNET50 board? Any help you could give would be most appreciated… Thanks Dave