You could use the static functions (xTaskCreateStatic for example) of FreeRTOS where you supply a buffer yourself, again as @rtel said, you will need a linker script or compiler directives to place these buffers at known locations, you won’t be able to use the functions that allocate memory internally as you won’t be able to control specific fragment locations.
Thats from the FreeRTOS side.
From the linux side, you have multiple options as well. linker scripts are one of them, memory mapping mmap(2) of /dev/mem, or a module device file that you will have to write yourself.
Needless to say that these buffers needs to be volatile as they could change outside the control of the program.
The challenge I would see is avoiding data corruption and synchronization of this shared buffer. The way I suggest is to use atomics and lock free algorithms that do not count on any os feature from both sides (linux and FreeRTOS) .