I am fairly new to Linux especially to device drivers but I come from the world of porgramming microcontrollers or microprocessors with no operating system or memory management system running on them. I am using the Keystone II processor on the TCI6638K2K EVM and am trying to add read/write functionality to a new device on the EMIF bus. Currently the Linux Kernel only has one registered and it is the NAND flash memory that the board boots from. I would like to set up another device (and FPGA) using a separate chipselect that can be read and written too from my userspace application. I am wondering what to do to get started. I have started by adding a new node in the device tree that should set up the proper registers in the driver but am lost on how I will communicate either with the driver or with the devices memory. I am familiar with the difference between virtual and physical memory so I have tried to mmap() the EMIF register sections to virtual memory in my userspace code but get a segmentation fault every time. Thanks for all your help.