Dear all:

We are doing a project on arm-linux-2.4.19

We didn't change the framework of board and kernel, so all the device can work correctly just as on demo board, but now we have to add a new device, so we define the physical address of it in kernel, and map it to virtual address for kernel to read and write.

map is ok, we can see the virtual address.(whether using ioremap function or just static mapping in map_table). But when read data from the virtual address, continuous error appear which is "external dataabort ignored!",

But other device is ok with the same method

But in the bootloader of arm(without OS), the physical address of this device can be readed and written.

So, now i doubt when the kernel start, it did some work on the device physical address, because we use the reserve address (described in datasheet) for the new device, maybe the kernel do some initial operation on the exist device physical address, and if we add some new device, besides define the address, we also have to do this operation. But i am not sure if it is the key to the point. And if it is, where is the most possible place for me to find the operation and add mine.

Thanks a lot!