Перейти к содержанию
    

Поселение на ARM ОС Linux

Здравствуйте. У меня есть данная плата.Пытаюсь залить на нее свою ОС. С платы все было удалено. Залил на Dataflash bootstrap, u-boot и kernel.

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

Заранее благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. У меня есть данная плата.Пытаюсь залить на нее свою ОС. С платы все было удалено. Залил на Dataflash bootstrap, u-boot и kernel.

В гипертерминале при загрузку платы загружается u-boot и пишет, что ядро не найдено...Насколько я понимаю надо прописать u-boot адрес расположения ядра. Но как это сделать?

все было бы проще, если перед "С платы все было удалено" в юбуте дали команду printenv

из ее вывода можно было бы подчерпнуть адрес расположения ядра во флеше

если остался бинарник юбута, то можно внутри поискать содержимое переменных окружения по словам cp.b или bootm (если бинарников не осталось, то снимаю шляпу..)

как вариант - написать производителю платы - пусть вышлет карту расположения бинарников во флеше

 

а если рассуждать здраво, то пользователь может сам разложить бинарники во флешах и внешних накопителях в любое место. за исключением bootstrap. и разумеется проследить, чтобы все адреса были взаимоувязаны и не пересекались. и оставить место под переменные окружения uboot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дайте команду printenv

а там есть переменная окружения bootcmd в которой записана команда загрузки ос, она как правило bootm <адрес откуда взять ядро> [адрес откуда взять initrd диск], flinfo команда u-bootа выдает адреса и разбивку flash как их видит u-boot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо большое! оказывается в команде загрузки bootm все правильно прописано...причина в другом: образ, собственноручно собранного ядра, в виде zImage, а должен быть uImage, потому что u-boot выводит следующее сообщение: Can't get kernel image.

Так что мне нужно собрать ядро в формате uImage. А как это сделать я не знаю...вроде бы можно утилитой mkimage, но как я пока не разобрался..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так что мне нужно собрать ядро в формате uImage. А как это сделать я не знаю...вроде бы можно утилитой mkimage, но как я пока не разобрался..

make uImage

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

но все равно предварительно надо было установить эту утилиту mkimage...

Изменено пользователем stas17

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собрал ядро (командой make uImage), записал на плату, но с него все равно не стартует...Пишет, что начинается загрузка с него (booting kernel from Legacy Image....), определяет версию, размер, пишет, что оно распаковано и т.д., а потом все равно выдает: Can't get kernel image.

Удалил и записал заново теперь грузится с него, но теперь другая проблема...пишет:

Starting Kernel

Uncompressing linux...done. Booting the kernel

и все...

после того, как я записал rootfs, опять вернулся к Can't get kernel image.

Изменено пользователем stas17

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

*** Warning - bad CRC, using default environment

 

In: serial

Out: serial

Err: serial

Net: macb0

macb0: Starting autonegotiation...

macb0: Autonegotiation timed out (status=0x7849)

macb0: link down (status: 0x7849)

Hit any key to stop autoboot: 0

## Booting kernel from Legacy Image at 22000000 ...

Image Name: Linux-2.6.36-my_by_RDM

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 2020160 Bytes = 1.9 MB

Load Address: 70008000

Entry Point: 70008000

Verifying Checksum ... OK

Loading Kernel Image ... OK

OK

 

Starting kernel ...

 

Uncompressing Linux... done, booting the kernel.

 

вот именно такое сообщение получаю в гипертерминале...

Разве ни у кого нет мыслей по этому поводу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разве ни у кого нет мыслей по этому поводу?

 

У вас есть возможность достать скомпилированное под эту платформу ядро? Попробуйте его записать вместо вашего и проверить загрузку.

Убедиться, что вы используете правильный тулчейн. Ну и тд

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Судя по "*** Warning - bad CRC, using default environment" у Вас может быть неверная строка параметров ядра. Войдите в коммандную строку u-boot и сделайте printenv. Найдите параметр bootargs, в нем console=... и проверьте, что стоит верный порт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сначала залил скомпилированное под эту плату ядро (скачал с сайта производителя) и оно отлично работает.

Команда printenv выводит у меня довольно мало информации...только информацию о переменно bootcmd и еще о чем-то..

 

 

 

Строку параметров ядра редактировал при конфигурации ядра и там: console=ttyS0, 115200. Вроде так и должно быть...

Изменено пользователем stas17

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Напишите полностью что выводит команда printenv.

1. У вас может в u-boot и ядре линуха разные MACHINE_ID указаны.

2. Второй вариант это неправильно отработала утилита mkimage. Ее надо использовать той же версии что и загрузчик u-boot.

3. В конфиге ядра у вас указан неправильный UART для вывода логов.

Попробуйте залить для начала чужое zImage ядро и добейтесь его загрузки..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

## Booting kernel from Legacy Image at 22000000 ...

Image Name: Linux-2.6.36-my_by_RDM

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 2020160 Bytes = 1.9 MB

Load Address: 70008000

Entry Point: 70008000

Verifying Checksum ... OK

Loading Kernel Image ... OK

OK

посмотрите в оригинальном ядре, они такиеже как у Вас

Load Address: 70008000

Entry Point: 70008000

после того что она Вам выдала далжна начаться выдача ядра, booargs должна быть такой же

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Строку параметров ядра редактировал при конфигурации ядра и там: console=ttyS0, 115200. Вроде так и должно быть...

А галку "Always use the default kernel command string" Вы поставили? Иначе используется то, что передает u-boot (это, кстати, правильней). Плюс у некоторых архитектур/машин есть параметр "UART to use for low-level messages". Если код машины, переданный у-бутом и код в ядре не совпадают, вероятно, что сообщение об этом вывалится именно в этот порт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...