2009-08-18 5 views
4

У меня проблема, возможно, с моей ручкой toolchain, но, возможно, есть что-то другое, что я делаю неправильно. У меня есть китайский изготовитель dev board qq2440 с использованием Samsung s3c2440 ARM9 uC. Я использую Ubuntu x86 с нативной GCC (4.3.3) и кросс-компилировать версии рычажного неизвестно-Linux-uclibc-GCC (crosstool-NG-1.3.2) 4.3.2ARM linux и cross toolchain issue

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

Я общаюсь с моей доской через RS232 (последовательный порт), и у меня есть последовательный терминал, настроенный на целевой Linux. Я использую Leshak's Изображение uboot. Для того, чтобы сконфигурировать ядро, я использую следующую команду:

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

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

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

Любые идеи, что мне делать дальше?

Благодаря & уважением,

Chris

+2

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

+1

Получили ли вы готовое изображение для загрузки и загрузки? Если да, попробуйте создать демонстрационное приложение с помощью цепочки инструментов и запустите его с помощью предварительно созданных изображений. Если простое тестовое приложение не запускается, в настройке инструментальной цепочки есть что-то не так, и изображение может быть неправильно построено. – simon

+0

Ubuntukernel делает множество корректировок на ядрах ванили; вы, возможно, захотите проверить несоответствия, которые являются специфичными для архитектуры, вероятно, вы должны иметь какой-то/var/log/boot, который должен показывать вывод. – amaterasu

ответ

2

Есть много разных вещей, которые можно было бы здесь происходит.

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

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

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

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

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

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

+0

Ваш вопрос об управлении uboot для ядра. Командная строка ядра выглядит отлично. Я использую ту же конфигурацию. Правильный макет Memmory. Я проверю установку endiannes, когда вернусь домой, и дам вам знать. –

0

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

picocom -b 115200/DEV/ttyS0 --send-CMD "-vv SX"

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

  2. Вы можете проверить, передаете ли вы правильные параметры UART, т.е. Serial Port Name, это скорость в бодах и т. Д. Это будет предоставлено производителем платы - Samsung

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

  4. Также лучшим вариантом было бы использовать NFS, но да, это зависит от вашего выбора и цели вашего приложения. Чтобы использовать NFS, ваша сеть должна быть UP &, и ваша файловая система должна быть общей.

Как уже указывал ретрокат, «Endianness» может быть точкой для изучения!

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

Надеется, что это помогает.

-hjsblogger