I have a custom-designed SoC implemented on FPGA, based on an ARM-processor clone, on which I am trying to boot Linux (kernel 3.10).
I have successfully added support to my custom peripherals (an USART, Interrupt Controller and Timer), allowing me to see the printk messages displayed by the kernel up to the point of trying to mount root filesystem.
I have a 2GB custom non-volatile memory, random-access, read write, mapped from address 0 to 0x7FFFFFFF from which the bootloader executes, and which contains the kernel and the filesystem partition. The bootloader copies kernel to RAM (256Mb, from 0x80000000 to 0x8FFFFFFF) and then passes control to Linux, which fails at the point: "Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)".
From my debugging and internet searches, it seems the kernel cannot recognize my non-volatile memory, therefore cannot mount the filesystem.
How do I tell the kernel that it should boot from that memory, and which code must be added to the kernel? For example, would it be possible to make the kernel think my memory is a Nand, and modify Nand drivers to access it correctly?
Thank you in advance for all help and sugestions.