есть ли какие-нибудь настоящие эмуляторы arduino (чтобы я мог загружать и запускать на нем машинный код)

Я играю с Arduino Micro. Я пишу свои программы непосредственно в машинном коде, в двоичных редакторах (да, я знаю, что есть более простые способы программирования Arduino, я делаю это для удовольствия и обучения). Часто мои программы работают, но если нет, то я хотел бы запустить их на эмуляторе, чтобы понять, что именно происходит под капотом. Есть ли какой-нибудь эмулятор Arduino, который принимает шестнадцатеричные файлы с скомпилированной программой и может ее выполнить? Я уже смотрел инструменты, упомянутые в разделе " Могу ли я программировать для Arduino, не имея реальной платы?". но , насколько я вижу, это скорее симуляторы, чем эмуляторы, и я не могу использовать в них скомпилированные двоичные программы.

, 👍0

Обсуждение

Вы уверены, что не пишете [Opcode](https://en.wikipedia.org/wiki/Opcode)? Как машинный код буквально набирает цифры. Например, нет "ярлыков", не говоря уже о "ярлыках гото". При записи в машинном коде, как правило, все ветви должны быть рассчитаны на относительный или абсолютный адрес памяти., @st2000

Да, я уверен, что пишу не опкоды, а машинный код - вот почему я упомянул, что использую двоичный редактор (я старался быть ясным)., @user983447

Ладно, понял. Продолжая, я ответил на ваш вопрос обобщенно. Но я вижу, вы спрашивали о [ATmega32U4](https://www.microchip.com/wwwproducts/en/ATmega32u4). Если бы я был Микрочипом, я бы не стал публиковать, как работает мой процессор. Это интеллектуальная собственность. Поэтому было бы удивительно найти работающий программный эмулятор, доступный для этого конкретного процессора. Как я уже писал в ответе, большинство разработчиков просто работают с реальным процессором, используя его интерфейс JTAG., @st2000

Подсказка: Поищите в github пример симулятора, над которым вы могли бы продолжить работу: https://github.com/buserror/simavr, @Mikael Patel


2 ответа


1

Существует множество различных процессоров, используемых при изготовлении различных типов плат Arduino. Таким образом, нет единого способа написать машинный код Arduino.

Есть эмулятор для более простых процессоров, доступных по запросу. Но, хотя они и работают, я не верю, что они утверждают, что они абсолютно точны.

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

В настоящее время большинство процессоров построены с дополнительной внутренней схемой и интерфейсом для прерывания выполнения программы в целях отладки. JTAG является одним из таких отраслевых стандартов / примеров.

Таким образом, хотя вопрос имеет смысл, общепринятая практика, скорее всего, заключается не в запуске кода на эмуляторе, а в его запуске на процессоре с использованием интерфейса JTAG и среды IDE, работающей на хост-компьютере / рабочей станции.

,

Встроенные эмуляторы были очень дорогими и никогда не были точными на 100% (например, различное время для внешних сигналов), в то время как JTAG уже находится в микроконтроллере бесплатно., @Jot

Хорошие моменты @Jot. И я могу засвидетельствовать трудности со сроками., @st2000


3

Отказот ответственности : У меня нет связи с Wokwi (на основе opensource AVR8js engine), за исключением того, что я многому у него научился.

Я только что попробовал его на бесплатном симуляторе Wokwi Arduino(мой любимый симулятор Arduino для обучения), и он сработал в мгновение ока!

Вот что я сделал чтобы загрузить шестнадцатеричный файл в симулятор Arduino

  1. Перейдите в Arduino IDE и откройте базовый пример blink
  2. Измените задержку включения на 100 мс (чтобы убедиться, что шестнадцатеричный файл действительно загружен в симулятор Arduino и убедиться, что он работает.
  3. Как только измененный пример будет скомпилирован, перейдите в папку %temp%
  4. Найдите файлы *.hex и найдите тот, который является только самым последним (это единственный способ, который я нашел, чтобы захватить нужный шестнадцатеричный файл).
  5. Перейдите в Wokwi Arduino Simulator с любым примером Arduino
  6. Нажмите на вкладку редактор слева
  7. Нажмите функциональную клавишу F1
  8. Выберите опцию Загрузить шестнадцатеричный файл и НАЧНИТЕ моделирование
  9. Готово - симуляция должна работать так, как и ожидалось.

Я создал короткий GIF-файл, и я надеюсь, что он вам понравится (лениво показывать шаг за шагом)

,

Какова ваша связь с Wokwi?, @StarCat

Привет @starCat Я следил за этим симулятором для моего обучения Arduino, но не участвовал в разработке. Мне очень помогли тренинги и учебные пособия по Wokwi, в то время как я изучаю и разрабатываю другие проекты., @ArduinoFan

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