У меня есть специализированный SoC, реализованный на FPGA, основанный на клоне ARM-процессора, на котором я пытаюсь загрузить Linux (ядро 3.10).
Я успешно добавил поддержку своих пользовательских периферийных устройств (USART, Interrupt Controller и Timer), что позволяет мне видеть сообщения printk, отображаемые ядром, вплоть до попытки монтировать корневую файловую систему.
У меня есть 2 ГБ пользовательской энергонезависимой памяти, произвольного доступа, чтения и записи, сопоставленной с адресом от 0 до 0x7FFFFFFF, с которой выполняется загрузчик и которая содержит ядро и раздел файловой системы. Загрузчик копирует ядро в ОЗУ (256 МБ, от 0x80000000 до 0x8FFFFFFF), а затем передает управление Linux, который завершается с ошибкой в момент: «Паника ядра - не синхронизируется: VFS: невозможно смонтировать root fs на unknown-block (0,0) ».
Судя по моим отладкам и поискам в Интернете, ядро не может распознать мою энергонезависимую память, поэтому не может смонтировать файловую систему.
Как мне сообщить ядру, что оно должно загружаться из этой памяти, и какой код нужно добавить в ядро? Например, можно ли заставить ядро думать, что моя память является Nand, и изменять драйверы Nand для правильного доступа к нему?
Заранее благодарю за любую помощь и предложения.