Проблема с ARM Linux и кросс-инструментальной цепочкой

У меня, вероятно, проблема с цепочкой инструментов для руки, но, возможно, я делаю что-то еще не так. У меня китайская плата разработчика qq2440 с использованием Samsung s3c2440 ARM9 uC. Я использую Ubuntu x86 с собственным gcc (4.3.3) и кросс-компилируемой версией arm-unknown-linux-uclibc-gcc (crossstool-NG-1.3.2) 4.3.2

Я следовал руководствам из http://blog.leshak.ru/english/pages/how-to-install-u-boot-linux-2629-rootfsjffs2-busybox-1132-into-nand-qq2440/ и использовал патчи ядра Leshak для этой платы. Проблема в том, что его двоичные файлы работают отлично, а мои - нет ...

Я общаюсь со своей платой через RS232 (последовательный порт), и у меня есть последовательный терминал, настроенный на целевой Linux. Я использую образ uboot Лешака. Для настройки ядра я использую следующую командную строку:

qq2440> setenv bootargs 'noinitrd root=/dev/mtdblock2 rootfstype=jffs2 rw console=ttySAC0,115200'

В качестве целевой я использую исходные тексты ванильного Linux версии 2.6.29 с патчами, созданными Leshak. Честно говоря, я не верю, что это когда-либо будет официально поддерживаться Linux, поскольку это не основной продукт.

Мой образ ядра начинает загружаться, но он, вероятно, изменяет полосу пропускания (или частоту процессора) на какое-то нестандартное значение (уже перепробовал все стандартные). Вместо точек, указывающих на загрузку ядра в память, у меня только хлам. К сожалению, это, вероятно, не завершает процесс загрузки, так как сетевой интерфейс и файловая система не работают. Итак, я понял, что паника находится где-то посередине.

Есть идеи, что мне делать дальше?

С уважением,

Крис


person Chris Ciesielski    schedule 18.08.2009    source источник
comment
Возможно, вам придется опубликовать некоторые из фактических выходных данных терминала, чтобы получить какие-либо полезные отзывы.   -  person simon    schedule 19.08.2009
comment
У вас есть готовый образ для загрузки и загрузки? В таком случае попробуйте создать демонстрационное приложение с помощью своей цепочки инструментов и запустить его с предварительно созданными образами. Если простое тестовое приложение не запускается, значит, что-то не так с настройкой инструментальной цепочки, и ваше изображение, возможно, построено неправильно.   -  person simon    schedule 19.08.2009
comment
Ubuntukernel вносит много изменений в ядра ванили; возможно, вы захотите проверить несоответствия, зависящие от архитектуры, вам, вероятно, понадобится какой-то / var / log / boot, в который вы должны показывать вывод.   -  person amaterasu    schedule 19.08.2009
comment
@simon: скомпилирует простое тестовое приложение (например, led test) с моей цепочкой инструментов, чтобы проверить, работает ли оно   -  person Chris Ciesielski    schedule 19.08.2009
comment
@simon: Я добавлю вывод, как только вернусь домой   -  person Chris Ciesielski    schedule 19.08.2009


Ответы (3)


Здесь может происходить много разных вещей.

Похоже, вы говорите о последовательном порте, и он, похоже, выдает мусор, когда управление передается ядру из uboot. Я правильно понимаю?

Посмотрите, как указать скорость передачи, четность и т. Д. Для последовательной консоли в командной строке ядра.

О, и IIRC, в дереве ARM Linux была некоторая вещь 'early_printk', которая могла помочь вам отладить проблемы с последовательной консолью. (Но предупреждаю - прошло пару лет с тех пор, как я занимался этим, поэтому моя память нечеткая.)

Еще раз проверьте, что расположение адресов памяти (расположение всех различных устройств) соответствует тому, что есть на вашей плате. (Я думаю, что проблема не в этом, но я хотел бы упомянуть об этом для полноты картины.)

Вы говорите, что у вас есть бинарное ядро, которое работает правильно; сравните конфигурацию ядра этого ядра с конфигурацией, которую вы используете для сборки ядра. Изучите все различия, особенно те, которые относятся к ARM.

Возможно, вы захотите дважды проверить последовательность байтов в вашей инструментальной цепочке по сравнению с тем, что ожидает ваша плата. Некоторые процессоры ARM / XScale могут быть сконфигурированы с прямым или обратным порядком байтов в программном обеспечении, поэтому, возможно, стоит перепроверить.

person retracile    schedule 19.08.2009
comment
Вы правы о передаче управления ядру через uboot. Командная строка ядра выглядит нормально. Я использую тот же конфиг. Макет памяти правильный. Я проверю порядок байтов, когда вернусь домой, и дам вам знать. - person Chris Ciesielski; 19.08.2009

  1. Просто включите отладочную сборку ядра [при сборке uImage], чтобы вы получили более ясное представление о сценарии [это лишь несколько замедлит вашу загрузку, поскольку все printk будут включены].

  2. Можете ли вы проверить, передаете ли вы правильные параметры в UART, т.е. Имя последовательного порта, его скорость передачи данных и т. Д. Это будет предоставлено производителем платы - Samsung.

  3. WRT сеть вместо DHCP, вы можете просто назначить статический IP-адрес вашей системе, поскольку возможно, что процесс DHCP все еще не включен.

  4. Также лучшим вариантом было бы использовать NFS, но да, это зависит от вашего выбора и цели вашего приложения. Чтобы использовать NFS, ваша сеть должна быть ИСПОЛЬЗУЕТСЯ и работать, а файловая система должна быть общедоступной.

Как уже отмечалось в retracile, "Endianness" может быть тем, на что стоит обратить внимание !!!

Вы можете использовать эту ссылку, которая может вам помочь из, поскольку он специфичен для S3C2440

Надеюсь это поможет.

-hjsblogger

person hjsblogger    schedule 12.10.2009

Однажды у меня была аналогичная проблема, когда я пропустил --send-cmd из picocom. Это команда, которую я посылаю picocom для последовательной связи uBoot с mini2440.

picocom -b 115200 / dev / ttyS0 --send-cmd "sx -vv"

person Community    schedule 25.09.2009