реклама на сайте
подробности

 
 
> Запуск linux at91sam9x25, Ядро зависает после распаковки
Vull
сообщение Jul 16 2012, 10:08
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 16-09-08
Из: Екатеринбург
Пользователь №: 40 230



Добры день!

Пытаюсь запустить ядро linux на своей плате.

Исходные данные
Плата на основе процессора at91sam9x25-cu, память DDR2 1 Gbit шина данных 16 бит (64 МБайта), схема в части подключений памяти взята из кита Atmel.
Подключения NAND, Dataflash, Sdcard аналогично

ПО
at91Bootstrap_5seriez_1.2 - взято с at91com/linux4sam - добавлены небольшие изменения для копирования файла образа с sd-карты в оперативную память
u-boot-2010.06 - взято с at91com/linux4sam - по их инструкции наложены патчи для поддержки процессора и кита
linux-2.6.39 - взято с at91com/linux4sam - по их инструкции наложены патчи для поддержки процессора и кита - внесены изменения в конфиг для отключени
не используемого оборудования (lcd, isi и т.д.).

Для отладки я не стал использовать SAM-BA, а решил использовать sd-карту, благо теперь процессор позволяет
загружать bootstrap и с нее. Порядок такой:

1. Стартует ROM код процессора и начинает обходить устройства с которых может загрузиться
2. Доходит до SD-карты копирует bootstrap в sram и передает управление туда
3. Стартует bootstrap инициализирует процессор и оперативную память, отладочную консоль и mmc, копирует ядро в ОЗУ, настраивает теги для
корректного старта ядра linux и передает управление ядру.
4. Ядро начинает распаковку...

Первоначально планировалась загрузка ядра только с использованием bootstrap, однако ядро останавливается после начала распаковки.
Используется формат сжатия ядра gzip.
Опции early_printk и low_level_debug включены

Uncompressing Linux...

uncompression error

-- System halted


Если изменить формат упаковки ядра на lzo то ядро успешно распаковывается и после этого нет ни одного вывода

Uncompressing Linux... done, booting the kernel.

Все теги для загрузки ядра из bootstrap'a устанавливаются корректно и в памяти сохраняются нормально, образ ядра
копирутеся тоже полностью (проверяю путем подсчета crc32)

Я попробовал скомпилировать u-boot, т.к. в основном все загружают ядро через него.
Вот вывод из отладочного порта

оU
B-oo t02010. 6J(lu1 40221- 1 :0511:)2

пDRAM: ЯоiM
BoNAND: *** Warning - bad CRC, using default environment

In: #reai
lOut: #reai
lErr: Net: ,
)tia ynk yet otspoa tubooo:t н
н
U-Boot> ?

U-Boot> ?

U-Boot> help

U-Boot>

На команды он не реагирует, очень похоже на несовпадение скоростей по отладочному порту,
но непонятно почему символы меняются местами, такое впечетление что они так в памяти лежат,
но при этом часть слов выводится нормально, а часть нет.

И еще один момент, когда bootstrap копирует ядро в ОЗУ, если последний блок образа ядра
меньше сектора sd-карты (512 байт), то все слова в двойном слове развернуты

Пример:
Так байты лежат на sd карте
AA BB CC DD

После копирования в ОЗУ
BB AA DD CC

Самое интересное что такая ситуация наблюдается только с последним блоком,
поэтому его приходится специально разворачивать восстанавливая порядок байт.

После обнаружения вышеописанного, был добавлен тест памяти в bootstrap,
все тесты прошли успешно для всего адрессного пространства.

Используемые компиляторы

ELDK-4.2 он основан на gcc-4.2.2, компилятор старый, но я его использ0овал для сборки системы для процессора at91sam9260 (bootstrap+linux+programms)
и все работает без проблем.

g++ arm-2010q1-202
g++ arm-2011.09-70
Все компиляторы выдают один и тот же результат


Прошу помочь, может кто сталкивался с подобным поведением? Или знает где я ошибся?
Заранее спасибо!
Прикрепленные файлы
Прикрепленный файл  kernel_linux_config.txt ( 34.05 килобайт ) Кол-во скачиваний: 43
 
Go to the top of the page
 
+Quote Post



Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.05146 секунд с 7
ELECTRONIX ©2004-2016