Как получить код ARM на реальное устройство JTAG?Можно ли сделать экспромт JTAG с Arduino? - PullRequest
12 голосов
/ 17 января 2011

Хорошо, я немного запутался в программировании для процессоров ARM. Заграждение вопросов времени:

  • Как получить скомпилированный двоичный файл в процессор ARM?
  • Является ли JTAG нормальным методом (я думаю, именно на это указывает мое исследование ...)?
  • Это единственный метод?
  • Если это допустимый метод, как именно вы используете его таким образом?
  • Если нет, то что / как мне это сделать?

Кроме того, можно ли использовать что-то вроде Arduino для создания импровизированного интерфейса JTAG (если это действительно то, что нужно для программирования устройств ARM). , .

Я уже настроил QEMU для тестирования кода и тому подобного, но я не уверен, как на самом деле получить мой код в физическом мире.

Я в основном спрашиваю: является ли JTAG программистом в мире ARM? Могу ли я подделать один с Arduino (Arduino wiggler Clone o.o)? Если JTAG нет, что это такое, и могу ли я подделать его?

Ох ... И мне может понадобиться лучшее объяснение того, как именно работает JTAG.

Теперь немного справочной информации:
У меня есть старое устройство Palm ( LifeDrive ), в котором есть процессор XScale PXA270 , как мне кажется. Похоже, что больше не ведется активная разработка сообщества, и я уже мало пользуюсь ею, поэтому я просто хочу поиграть с этим. По сути, это может быть хорошим способом поэкспериментировать с массой датчиков и другими разными входами и выходами, а также привыкнуть к ARM Assembly.

Не стесняйтесь сообщать мне, если я выбрал неправильный подход, но, по крайней мере, предоставьте альтернативы (хотя я довольно склонен специально связываться с LifeDrive, если бы я просто хотел поиграть со встроенным программированием, я бы сделал это на вместо моего Arduino.)

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

Ответы [ 3 ]

15 голосов
/ 18 января 2011

Это много вопросов!Вот несколько ответов:

Как получить скомпилированный двоичный файл в процессор ARM?

Это зависит от ряда факторов.

Является ли JTAG нормальным методом (я думаю, именно на это указывает мое исследование ...)?

Большинство (возможно, все) современных устройств на базе ARM включают интерфейс JTAG (программные ядра).на ПЛИС возможно исключен).Обычно это можно использовать для программирования встроенной или внешней флэш-памяти или загрузки непосредственно в оперативную память.Интерфейс JTAG также является интерфейсом для функций отладки и трассировки на кристалле.Некоторые устройства имеют дополнительные интерфейсы отладки / программирования, например, ARM SWD.

Это единственный метод?

В некоторых случаях.Некоторые основанные на ARM микроконтроллеры включают встроенное ПЗУ загрузчика, которое может поддерживать последовательный интерфейс, USB, NAND Flash или другие средства программирования встроенной флэш-памяти.Иногда такое средство очень просто и предназначено только для загрузки и запуска вторичного загрузчика, который выполняется из ОЗУ и выполняет фактическое программирование флэш-памяти.

Если это допустимый метод, как именно вы его используете?таким образом?

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

Если это не так, что / как мне сделатьсделать это?

Если ваша цель - COTS , она вполне может включать в себя загрузчик, уже позволяющий обновлять ПО, например, через USB, последовательный порт или Ethernet.

Кроме того, можно ли использовать что-то вроде Arduino для создания импровизированного интерфейса JTAG (если это действительно то, что нужно для программирования устройств ARM).,.?

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

Я в основном спрашиваю: является ли JTAG программистом устройства?мира ARM?

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

Могу ли я подделать один с Arduino (Arduino wiggler Clone oo)?Если JTAG нет, что это такое, и могу ли я его подделать?

Это не вопрос "подмены", интерфейс может быть реализован многими способами.То, как вы это реализуете, в первую очередь влияет на скорость интерфейса.Можно достичь 16 МГц, но более простой вигглер с параллельным портом, вероятно, выдержит не более 500 кГц.Это синхронный интерфейс, поэтому переменные тактовые частоты не являются проблемой.

О ... И мне может понадобиться лучшее объяснение того, как именно работает JTAG.

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

У меня есть старое устройство Palm ( LifeDrive ), которое имеет XScale PXA270 процессор, как мне кажется.

"Верить", вероятно, недостаточно; вам нужно будет знать Пины JTAG даже выставлены на плате? На потребительском продукте было бы обычным опустить фактический JTAG-разъем. Даже если он есть, он, скорее всего, будет проприетарным разъемом и распиновкой (сам JTAG не определяет ни того, ни другого, а определен для ARM, но то, что вы можете найти на плате разработки, может не быть включено в конечный потребительский продукт.

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

Вероятно, лучше получить готовую плату для разработки с открытыми выводами ввода / вывода и интерфейсами. В потребительском продукте могут быть доступны только те контакты, которые требуются целевому приложению, и даже в этом случае они могут быть недоступны, если они подключены к устройствам BGA . Кроме того, XScale находится на сложном конце устройств ARM (приблизительно между ARM9 и ARM11 ), если вы не знакомы с такими устройствами и такими вещами, как управление часами PLL, управление SDRAM и время и конфигурация MMU, вы можете посмотреть на что-то более простое. Не только это, но и то, что и флэш-память, и оперативная память будут работать вне кристалла, вам потребуются подробные сведения об отображении адресов памяти и других внешних устройств, а также необходимые сведения о синхронизации SDRAM. Будучи потребительским устройством, такие детали могут быть недоступны, кроме как путем обратного инжиниринга.

Теперь, что касается более раннего комментария о загрузчиках, Palm предоставляет устанавливаемое пользователем обновление ROM для устройства, поэтому оно должно иметь загрузчик. Тем не менее, вам все равно потребуются детали формата файла изображения и протокола передачи данных. Они вряд ли будут опубликованы, и, вероятно, их трудно будет реконструировать.

если бы я просто хотел поиграть со встроенным программированием, я бы сделал это на своем Arduino.)

Существует множество недорогих плат разработки ARM. Попробуйте, например, Olimex : у них даже есть недорогой клоновый JTAG-адаптер Wiggler .

1 голос
/ 18 января 2011

JTAG - это самый простой способ попасть на плату, чтобы выполнить ее из ОЗУ или флэш-памяти.Это инструмент отладки, который позволяет вам читать и записывать все внутренние регистры ЦП, а также управлять всеми выводами ввода / вывода.Большинство современных процессоров поддерживают JTAG.

Это может быть простой битрейнер параллельного порта (Wriggler) или дорогое оборудование для сборки.Я бы купил маленькое USB-устройство, чтобы начать, как этот один . Этот парень использовал его с PXA270.

Для всех вещей OpenOCD связанных идут здесь Это поможет с отладкой и программированием, и они перечисляют все виды простого оборудования JTAG.

Замечание о вашем процессоре.Похоже, что он не получил широкой поддержки.Возможно, вам стоит взглянуть на недорогую плату разработки с более широко поддерживаемым процессором.

0 голосов
/ 17 января 2011

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

Поэтому вам понадобится способ перенести информацию на носитель, на котором может работать ваш Palm, или вам понадобится программный эмулятор для тестирования. Хотелось бы, чтобы я знал больше о Palm, но я больше разбираюсь в разработке игр :) Похоже, JTAG может быть эмулятором x86, так что я бы, вероятно, начал там.

...