I am working on a board which has two processors; an ARM9, and a TI's DaVinci processor. ARM9 has Linux running on it and DaVinci is running without operating system. There is a shared memory space between them and I want to use a small portion of this shared memory as communication channel between the two processors. In order to do so I have to access the physical memory directly from Linux so that I can write to it from Linux (ARM9) and then read it from DaVinci.

Can I do it using mmap()?
or will I have to write a driver for it?

How can I make sure that this small portion of memory is not allocated to some other process by the kernel on ARM9?