J'ai un SoC personnalisé conçu sur FPGA, basé sur un clone de processeur ARM, sur lequel j'essaie de démarrer Linux (noyau 3.10).
J'ai ajouté avec succès le support de mes périphériques personnalisés (un USART, un contrôleur d'interruptions et un minuteur), ce qui me permet de voir les messages printk affichés par le noyau jusqu'au moment où j'essaie de monter le système de fichiers racine.
J'ai une mémoire non volatile personnalisée de 2 Go, en accès aléatoire, en lecture/écriture, mappée de l'adresse 0 à 0x7FFFFFFF à partir de laquelle le chargeur de démarrage s'exécute, et qui contient le noyau et la partition du système de fichiers. Le chargeur de démarrage copie le noyau dans la RAM (256 Mo, de 0x80000000 à 0x8FFFFFFF) puis passe le contrôle à Linux, qui échoue au point : "Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)".
D'après mes débugs et mes recherches sur internet, il semble que le noyau ne reconnaisse pas ma mémoire non volatile, et donc ne peut pas monter le système de fichiers.
Comment puis-je dire au noyau qu'il doit démarrer à partir de cette mémoire, et quel code doit être ajouté au noyau ? Par exemple, serait-il possible de faire croire au noyau que ma mémoire est un Nand, et de modifier les pilotes Nand pour y accéder correctement ?
Merci d'avance pour toute aide et suggestions.