Используете ли вы собственный USB-порт Due (SAM3X8E) для программирования?

Я хотел бы создать свою собственную версию Arduino Due.

На что я не могу найти ответа, так это: Могу ли я запрограммировать пустой SAM3X8E, используя собственный порт USB из Arduino IDE, или мне сначала нужно запрограммировать какой-то загрузчик или что-то подобное?

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

, 👍0

Обсуждение

Независимо от ответа на этот вопрос, было бы крайне неразумно проектировать плату серии ARM Cortex-M, которая не сделала бы выводы SWD доступными хотя бы на крошечных тестовых площадках; они просто слишком полезны на ранних этапах разработки и являются ключом к отладке точек останова с аппаратной поддержкой (особенно если ваша плата когда-либо будет использоваться для целей, не связанных с Arduino). Около 4 сквозных отверстий размером с переходную щель позволят вам зацепить их с помощью провода для накрутки или чего-то подобного., @Chris Stratton

Я решил пойти по пути SAMD21 и установил на своей плате разъем SWD. Я использую свой Segger, чтобы поместить загрузчик Arduino в чип, и все готово., @gjt211


2 ответа


-1

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

Наладить надлежащую связь через USB — не самая простая задача, и существует множество различных протоколов для отправки программы загрузчику, который затем отвечает за размещение программы во флэш-памяти в нужном месте и последующее управление ею.

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

,

1

SAM3X8E поставляется с загрузчиком в ПЗУ.

  • Воспоминания
    • 256–512 Кбайт встроенной флэш-памяти, 128-битный доступ, ускоритель памяти, двойной банк
    • 32–100 Кбайт встроенной SRAM с двумя банками
    • 16 Кбайт ПЗУ со встроенными процедурами загрузчика (UART, USB) и процедурами IAP
    • Контроллер статической памяти (SMC): поддержка SRAM, NOR, NAND. NFC с буфером RAM объемом 4 Кбайт и ECC

Поскольку этот загрузчик делает все, что от него требует Arduino IDE, и имеет свободно доступный кроссплатформенный инструмент командной строки загрузки (bossac), IDE просто использует его. Не нужно изобретать колесо, когда колесо делает все, что вам нужно, и даже идет с банкой смазки Axel.

Хотя технически возможно использовать свой собственный загрузчик в сочетании с существующим (используйте существующий для установки своего, а затем используйте свой для загрузки эскизов), это требует глубоких знаний как чипа, так и скриптов компоновщика GCC («ld»), чтобы выделить блок памяти для вашего загрузчика и правильно переместить скомпилированный код вокруг него. Слишком много работы, когда уже существующий загрузчик делает то, что вам нужно.

Однако другие чипы либо не имеют загрузчика (например, M0 в Feather), либо не имеют загрузчика, который работает так, как нужно (например, загрузчик DFU в ATMega32U4), поэтому в них используется специальный загрузчик.

Сама IDE довольно глупая. У нее просто есть файл конфигурации, в котором написано «Выполнить эту команду с этими параметрами для загрузки HEX-файла». Она не знает и не заботится о том, какой загрузчик на другом конце соединения, и как он работает. Пока есть исполняемый файл командной строки для выполнения работы, она просто передает ему эту работу.

,