Пишу загрузчик Linux для xscale.
Сначала написал рам-версию загрузчика. В ней выполняется запись ядра и рамдиска из флеши в озу, формирование тагов, отключение прерываний и кешей, старт линукса. Эту рам-версию загружал с редбута, все работает.
Приступил к написанию ром-версии, в задачу которой входит начальная инициализация, копирование рам-загрузчика из ром в рам, старт рам-загрузчика.
Тут появилась проблема. При загрузке выдается строка Uncompressing Linux...........................................................................
.............. done, booting the kernel. И все. В командной строке консоль прописана.
Предполагаю, что проблема в начальной инициализации.
Процедура инициализации: установка big-endian, инициализация флеши, озу, ремапинг флеши, инициализация стека, отключение прерываний, инициализация GPIO.
Вопрос:
1. Процедура обработки прерываний не написана. Т.е. в стартап файле перевая команда - переход на метку ресета, далее забил нулями. После нулей - метка ресета.
Обязательно ли инициализировать обработчики прерываний?
2. Обязательно ли проводить инициализацию блоков PCI, Ethernet, таймеров и других блоков?