Ответ 1
Это много вопросов! Вот несколько ответов:
Как получить скомпилированный двоичный файл в ARM-процессор?
Он варьируется в зависимости от ряда факторов.
Является ли JTAG обычным методом (я думаю, это то, что показали мои исследования...)?
Большинство (возможно, все) современных устройств на базе ARM включают в себя интерфейс JTAG (возможно, soft-core на FPGA). Обычно это можно использовать для программирования встроенной или внешней вспышки или загрузки непосредственно в ОЗУ. Интерфейс JTAG также является интерфейсом для встроенных функций отладки и трассировки. Некоторые устройства имеют дополнительные интерфейсы отладки/программирования, например ARM SWD.
Это единственный метод?
В некоторых случаях. Некоторые микроконтроллеры на базе ARM включают в себя встроенное ПЗУ с загрузчиком, которое может поддерживать последовательный, USB, NAND Flash или другие средства программирования встроенной вспышки. Иногда такое средство очень простое и предназначено только для загрузки и запуска дополнительного загрузчика, который выполняется из ОЗУ и выполняет фактическое программирование вспышки.
Если это допустимый метод, как именно вы используете его таким образом?
Используя соответствующее хост-программное обеспечение. JTAG - очень простой интерфейс, и он не определяет какую-либо конкретную функциональность, а только средство передачи данных. Как правило, программному обеспечению необходимо знать, с каким устройством оно взаимодействует, и если флэш-память не встроена, ему необходимо знать флеш-устройство и его адрес. Часто инструментарий разработки включает поддержку программирования устройств, особенно для устройств с встроенной памятью. Если вы используете инструментальную цепочку GNU, вы можете использовать OpenOCD как для программирования устройства, так и для интерфейса отладчика GNU.
Если это не то, что это/как это сделать?
Если ваша цель - COTS, она может включать загрузчик, который уже позволяет обновлять программное обеспечение по USB, serial или Ethernet для пример.
Кроме того, может быть что-то вроде Arduino использоваться для создания импровизированного интерфейса JTAG (если это действительно то, что необходимо для программирования ARM-устройств).,.
Возможно, поскольку я сказал, что сам JTAG тривиально прост в реализации, проблема заключается в том, что он совместим с любым используемым программным обеспечением хоста (или совместимым с ним программным обеспечением). Простейший " wiggler" Адаптеры JTAG реализованы с использованием параллельного порта ввода/вывода ПК - не особенно быстрые, но функциональные.
Я в основном спрашиваю: является ли JTAG устройством-программистом мира ARM?
Первоначально он был определен как интерфейс проверки границ сканирования, но теперь широко используется на большинстве микропроцессоров и микроконтроллеров, которые включают отладку на чипе и программирование.
Могу ли я подделать один с Arduino (Arduino wiggler Clone o.o)? Если JTAG нет, что есть, и могу ли я его подделать?
Это не вопрос "спуфинга", интерфейс может быть реализован многими способами. Как вы имплементируете его, прежде всего, влияет на скорость интерфейса. 16 MHz может быть достигнута, но более простой параллельный порт-вигглер, вероятно, будет поддерживать не более 500 кГц. Это синхронный интерфейс, поэтому переменные тактовые частоты не являются проблемой.
О... И мне может понадобиться лучшее объяснение того, как работает JTAG.
Я уверен, что я не могу сделать лучше, чем объяснение в Википедии JTAG. Но для реализации на вашем целевом устройстве вы должны обратиться к руководству по спецификации детали/к спецификации.
У меня есть старое устройство Palm (LifeDrive), у которого есть XScale PXA270, который я считаю.
"Верить", вероятно, недостаточно; вам нужно будет знать. Являются ли контакты JTAG даже выставлены на доске? Обычно на потребительском продукте будет отсутствовать фактический разъем JTAG. Даже если он есть, он, скорее всего, будет проприетарным коннектором и коннектором (сам JTAG не определяет ни одного, и для ARM определено несколько, но то, что вы можете найти на доске разработки, может не включаться в конечный потребительский продукт.
В принципе, это может быть хорошим способом поиграть с тем, что по существу является массой датчиков, а также другими различными входами и выходами, а также привыкнуть к ассемблеру ARM.
Вероятно, лучше получить плату разработки с открытыми выводами и интерфейсами ввода/вывода. На потребительском продукте могут отображаться только те контакты, которые требуются целевому приложению, и даже тогда они могут быть недоступны, если они подключены к BGA. Кроме того, XScale находится на сложном конце устройств ARM (падая примерно между ARM9 и ARM11), если вы не знакомы с такими устройствами и вещами, такими как управление синхронизацией PLL, управление и синхронизация SDRAM, а также конфигурация MMU, вы можете посмотреть на что-то более простое. Не только это, но так как Flash и RAM будут отключены, вам потребуются детали адресного сопоставления памяти и других внешних устройств, а также необходимые данные синхронизации SDRAM. Будучи потребительским устройством, такие детали могут быть недоступны, кроме как при обратном проектировании.
Теперь, говоря о более раннем комментарии о загрузчиках, Palm предоставляет установочное обновление для пользователя на ПК для устройства, поэтому оно должно иметь загрузчик. Однако вам понадобятся детали формата файла изображения и протокола передачи данных. Они вряд ли будут опубликованы и, вероятно, сложно перепроектировать.
Если бы я просто хотел играть со встроенным программированием, я бы сделал это на моем Arduino.)
Существует множество недорогих плат разработки ARM. Попробуйте Olimex например: у них даже есть низкая стоимость "Wiggler" клон JTAG-адаптера.