Simulide невозможно загрузить hex файл

Обновлено: 04.07.2024

flash loader или как загружать hex(axf) файлы?

Я наверное торможу, но возник вопрос:
Создан .axf ну или .hex файл.
Как его загружать на других рабочих местах, не загружая весь проект?
Если проект открыт - загрузка работает, если нет, то кнопка load не активна.
А не хотелось бы таскать весь проект на другие рабочие места. Я наверное торможу, но возник вопрос:
Создан .axf ну или .hex файл.
Как его загружать на других рабочих местах, не загружая весь проект?
Если проект открыт - загрузка работает, если нет, то кнопка load не активна.
А не хотелось бы таскать весь проект на другие рабочие места. да и для передачи на серийный завод изделий неужели заставлять их покупать MDK-ARM для заливки флеша?
неужели так и не придумали ничего через чего и как шить? во всему форуму какие то обсуждения а воз и ныне там )) еще и Olimex для milprog необходим ндааааа - похоже для серийного производства микроконтроллеры Миландра не предусмотрены

Последний раз редактировалось Denisyuk 2013-ноя-06 08:30, всего редактировалось 1 раз.

Уважаемый Миландр, можете вы все же сказать однозначно - чем и как можно и нужно прошить FLASH 1986ВЕ9x и 1986ВЕ1Т без средств разработки?! Уважаемый Миландр, можете вы все же сказать однозначно - чем и как можно и нужно прошить FLASH 1986ВЕ9x и 1986ВЕ1Т без средств разработки?!

На текущий момент - только средства разработки. (Кейл, Иар, Кодемастер) - гарантируются Миландром
Либо самопальные, искать на формуме, но нами не гарантируются.

Периодически возникают вопросы - о промышленных средствах программирования, но официальных запросов на вот это (viewtopic.php?f=22&t=989) так в конечном итоге не получено. Если вопрос стоит остро то стоит сформировать эти требования и передать нам.

Я наверное торможу, но возник вопрос:
Создан .axf ну или .hex файл.
Как его загружать на других рабочих местах, не загружая весь проект?
Если проект открыт - загрузка работает, если нет, то кнопка load не активна.
А не хотелось бы таскать весь проект на другие рабочие места. да и для передачи на серийный завод изделий неужели заставлять их покупать MDK-ARM для заливки флеша?
неужели так и не придумали ничего через чего и как шить? во всему форуму какие то обсуждения а воз и ныне там )) еще и Olimex для milprog необходим ндааааа - похоже для серийного производства микроконтроллеры Миландра не предусмотрены На текущий момент - только средства разработки. (Кейл, Иар, Кодемастер) - гарантируются Миландром

В папке C:\Keil\ARM\Flash\MDR32F9x в файле FlashProg.c код

int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf)

3; /* Adjust size for Words */

FMC->KEY = (FL_KEY);
FMC->CMD |= (FL_CON);

while (sz) FMC->ADR = adr;
Delay(10); /* Wait for 10 us */
FMC->CMD |= (FL_PROG | FL_XE);
Delay(5); /* Wait for 5 us */
FMC->CMD |= (FL_NVSTR);
FMC->DI = *((u32 *)buf);
FMC->CMD |= (FL_WR);
FMC->CMD &=

(FL_WR);
Delay(15); /* Wait for 15 us */
FMC->CMD |= (FL_YE);
Delay(50); /* Wait for 50 us */
FMC->CMD &=

(FL_PROG);
Delay(5); /* Wait for 5 us */
FMC->CMD &=

(FL_NVSTR | FL_XE);
Delay(5); /* Wait for 5 us */

adr += 4; /* Go to next Word */
buf += 4;
sz -= 4;
>

(FL_CON);
FMC->KEY = 0;
Delay(1); /* Wait for 1 us */

return (0); /* Finished without Errors */
>
Вопросы к Миландру:
1. Для чего Delay(10); после FMC->ADR = adr;?
2. Для чего FMC->CMD |= (FL_WR);
FMC->CMD &=

(FL_WR);?
3. Для чего бит FL_RD?
В спецификации в разделе Контроллер Flash про это ничего не сказано.

После долгих упражнений и медитации набрел следующую мысль.
Прошивать HEX через JLink Comander с помощью скрипта.
Технология простая (но не красиво)
1. Создается прошивка для МК (RAM-загрузчик)
2.HEX файл RAM-загрузчика конвертируется в бинарник.
3.HEX-файл основной программы - конвертируется в бинарник и разбивается на файлики (скажем по 4К)
4.Создается скрипт для JLink (например LoadFile.jlinkscript (другое расширение файла не пробовал, это взято по аналогии с файлами настройки)
5.Запускаем утилиту от Segger Jlink указав в качестве параметра наш скрипт ждем окончания процесса.
Примерное содержание скрипта (коментарии добавляю сейчас, в реальном файле возможно их надо будет убить) Все команды взяты из подсказки по Jlink (если из командной строки запустить и знак вопроса ввести, большой список получается.)
Бинарник RAM-загрузчика прилагаю.Исходники под KEIL чуть позже, когда в порядок приведу.
Про волшебные цифры.
0x20004010 - адрес буфера для данных, размер буфера 4096 байт или 1024 слова
0x20005010 - адрес переменной, в которой храниться адрес для записи блока
0x20005014 - адрес переменной, в которой храниться размер блока
0x20005018 - рабочий флаг (сделано типа if (Flag!=0xFFFFFFFF)
PS
Можно ко всему этому "Окна" прикрутить или консольку состряпать. Дело вкуса.
На макетке работает. Использовал софт от Segger V4.5 V4.68 аппаратноая часть от Segger V9.1 Прошивать HEX через JLink Comander с помощью скрипта. Отлично! У меня вот все руки не доходили. Теперь осталось найти человека с фирменным J-Link, чтобы попросить Segger включить этот алгоритм в J-Flash, а то читать-читает, а писать-увы. Для прошивки 1986ВЕ1Т с помощью J-link без установки Кейла. Разархивировать. Добавить firmware.bin с прошивкой. Запустить start.bat . После прошивки происходит верификация. Размер бинарника до 32К (можно увеличить). Для прошивки 1986ВЕ1Т с помощью J-link без установки Кейла. Разархивировать. Добавить firmware.bin с прошивкой. Запустить start.bat . После прошивки происходит верификация. Размер бинарника до 32К (можно увеличить).

R0 = 00000000, R1 = 20005010, R2 = 0007A120, R3 = 08006000
R4 = 00000010, R5 = 2000501C, R6 = 00000000, R7 = 00000000
R8 = 00000000, R9 = 3CDF4189, R10= 2000084C, R11= 00000000
R12= 2000505C, R13= 20006830, MSP= 20006830, PSP= 00000000
R14(LR) = 200003EB, R15(PC) = 2000039A
XPSR 61000003, APSR 60000000, EPSR 01000000, IPSR 00000003
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00

Loading binary file. [firmware.bin.part07]
Writing bin data into target memory @ 0x20004010.


Writing 08007000 -> 20005010

Writing 00000400 -> 20005014

Writing 00000000 -> 20005018

R0 = FFFFFFFF, R1 = 20005010, R2 = 0007A120, R3 = 08007000
R4 = 00000010, R5 = 2000501C, R6 = 00000000, R7 = 00000000
R8 = 00000000, R9 = 3CDF4189, R10= 2000084C, R11= 00000000
R12= 2000505C, R13= 20006830, MSP= 20006830, PSP= 00000000
R14(LR) = 200003EB, R15(PC) = 20000360
XPSR 61000003, APSR 60000000, EPSR 01000000, IPSR 00000003
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00

Доступен для скачивания новый симулятор. Размер папки с запускным значком после разархивирования 51.1Мб. Без установки на диск компа.
Пишут что моделирует контроллеры. Правда до программирования в самой программе не дошел пока. Компилятор есть. Но уже готовую прошивку в контроллеры вставлять можно. И подцеплять обвязку. Перед железом. Сам смотрел пока инструментарий.
Все работает. Позже буду выводить наработку.
Была пробная версия немного раньше. Много было недоработок. Сделали вторую.

__________________
С Уважением Александр Владимирович
г. Москва

Последний раз редактировалось цифровик; 29.06.2018 в 10:16 .

В заголовке действительно много букв перепутано и лишние есть.
Зовут пакет таки SimulIDE. Живет он тут, присутствует и на github.
Есть порты и под Windows (только 32), и под Linux (32 и 64)
А с начинкой и работой - это уже отдельная тема для исследований

__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при малом числе вариантов…

jump, я его просто помню среди пакетов, не пробовал, может уважаемый цифровик что-то выяснит…

__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при малом числе вариантов…

Я эту программу наверное месяц назад нашел. Надо было какую-то альтернативу найти попроще проте. Просто не охота с этим интерфейсом в проте дело иметь лишний раз. Даже зарегистрировался на сайте. Вот сегодня по почте пришла эта версия. Вы такой в этих делах спец я смотрю. Это только плюс вам. Хотите я скину ее вам. Вы поставите ее и посмотрите по моделированию этих вами названных кучек микроконтроллеров. А заодно и скажите все ее минусы.
Я даже заинтересован. Подскажите по контроллерам.
Или не хотите. Тогда это просто бесполезный разговор. Так же как и c программой генезис, я помню.
В любом деле нужно практику иметь. А у нас тут портал по электроники. И общие выражения конечно полезны при первом взгляде на любую программу или тему. А изъясняться лозунгами как то
не хорошо. Не на трибуне выступаешь. Где красиво говорят и мало это относиться к делу. На то они и есть ораторы.

__________________
С Уважением Александр Владимирович
г. Москва

Прошивка является популярным способом распространения программ для ардуино и микроконтроллеров.

Здесь описана процедура загрузки прошивки микроконтроллера платы Arduino.

Данная инструкция позволит вам установить прошивку на наиболее популярные платы такие как Nano, UNO, Leonardo, Mini, Pro Micro и другие, собранные на микроконтроллере atmega328p, atmega168, atmega32u4 и других.

О прошивках Arduino

Не стоит путать прошивку со скетчем!

Скетч – это исходный код прошивки.

Прошивка ардуино – это скомпилированный (бинарный) файл, загружаемый в плату Arduino (в микроконтроллер). Прошивка не является исходным кодом программы (скетча). Файл прошивки обычно имеет расширение HEX.

Преимущество прошивки – это простота ее использования:

  • Не нужны никакие библиотеки,
  • Легко загрузить и выгрузить,
  • Можно перенести с одного устройства на другое.

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

Вместе с прошивкой часто может поставляться и копия памяти ПЗУ (EEPROM), в которой хранятся данные, необходимые для работы устройства.

Способы прошивки Arduino

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

Рассмотрим пару наиболее популярных программ прошивки.

XLoader

Самая простая и лаконичная программа, которая подойдет любому, кому просто надо загрузить hex на популярную Arduino.

Загрузка прошивки интуитивно понятна:

  • Выбираем…
    • файл прошивки
    • плату ардуино
    • COM-порт
    • Скорость передачи данных

    Последняя версия – 1.0.

    Не может загружать EEPROM.

    SinaProg

    SinaProg – это уже более профессиональная и универсальная программа, разработанная неизвестными иранскими программистами. Однако сразу надо сказать, что данная программа – не более чем графическая оболочка для утилиты AVRDude, о которой пойдет речь дальше.

    1. Выбираем файл прошивки
    2. Настраиваем программатор: выбираем…
    3. Arduino,
    4. Порт
    5. Скорость передачи

    Avrdude

    Большинство всех загрузчиков используют одну и ту же утилиту – AVRDude (AVR Downloader-Uploader), которая давно вошла во многие среды разработки для ардуино, в т.м. числе и в Arduino IDE.

    Это мощнейшая утилита для работы с чипами AVR, но все-таки это утилита командной строки, что многим неудобно.

    Загрузка HEX прошивки в Arduino

    Читайте в следующем параграфе как прошить ардуино и с его помощью.

    Последняя версия – 6.3.

    Arduino IDE, AVRDude

    Рассмотрим как загрузить прошивку, имея только Arduino IDE на компьютере с Windows.

    Напомню, что вместе с Arduino IDE ставится и AVRDude, с помощью которого мы и загрузим прошивку.

    Установка программного обеспечения

    • Установить программу Arduino IDE, если она не установлена
      • В ряде случаев потребуется установить дополнительный драйвер вашей платы (если плата – китайский клон). Драйвер нужен только в случае если вы не видите вашу плату в Arduino IDE.

      Подготовка

      • Подключить плату к компьютеру
      • Запустить Arduino IDE
      • Определить к какому порту подключена Arduino, через меню, как показано ниже:
      • Определите в какой папке установлена Arduino IDE

      Загрузка прошивки ардуино

      • Открываете командную строку и вводите следующую команду, предварительно скорректировав ее под свои условия:

      Обратите внимание на:

      • Путь к Arduino IDE ( желтым ),
      • Номер порта ( голубым ),
      • Скорость передачи данных ( зеленым )
      • Название (путь) файла прошивки ( фиолетовым )

      Если при выполнении команды вы увидите ошибку как ниже

      Ошибка avrdude, avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xd2

      , значит ваша плата не может работать со скоростью 115200, и необходимо установить скорость 57600.

      Нажмите CTRL+C, чтобы прервать процесс.

      Получение помощи

      Если у вас что-то не получилось, и вы являетесь нашим клиентом, обратитесь на страницу поддержки.

      Часто задаваемые вопросы о прошивке

      Какой COM-порт выбирать?

      Такой вопрос возникает обычно, когда программа не может автоматически выбрать COM-порт, к которому подключена Arduino.

      Прежде всего, чтобы ардуино определялась, необходимо, чтобы на компьютере были установлены ее драйвера. Они ставятся вместе с Arduino IDE. Для китайских удешевлённых колонов может понадобится поставить драйвер CH340.

      Итак, драйвера установлены, теперь выберем правильный порт.

      Порт можно посмотреть в Arduino IDE…


      Выбор COM-порта в Arduino IDE

      … или, если вы на Windows, в диспетчере устройств:


      Определение COM-порта, к которому подключена Arduino через диспетчер устройств Windows.

      Однозначно, это не COM1. Поэтому, в моем случае это будет COM3.

      Какую скорость выбрать?

      Скорость передачи зависит от версии платы. Если мы говорим о популярных Nano или UNO, то скорость будет 115200. Однако, если вы имеете дело с китайский клоном, то, возможно, придется выбрать 57600.

      В общем, рецепт прост: если не получается с одной скоростью, тут же пробуете другую.

      5 Replies to “Как загрузить HEX прошивку Ардуино”

      Чем регулируется частота и амплитуда , Какой кабель нужен для прошивки Arduino nano ?

      Она вводится через последовательный порт, аналогично тому как загружается прошивка.
      Кабель нужен mini-USB data

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

      Во всех вышеописанных платах используется микроконтроллер ATmega328 (в более старых версиях ATmega168).

      Одной из главных причин выбора платы Arduino для проекта робота была возможность записывать прошивку устройства в МК не применяя программатора и каких либо дополнительных устройств. Все что нужно для прошивки микроконтроллера Arduino – это стандартный USB шнур (который входит в комплект Arduino).


      Это значит, если Вы имеете Ардуину – Вы имеете любое устройство ZiChip!

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

      Начнем, конечно, с моей программы загрузчика
      GC-Uploader



      Это все! Ничего сложного. Прошивка через несколько секунд будет записана в МК и автоматически запустится. Один минус – программа никак не сообщает о том, что прошивка уже записана, но это можно увидеть по прекращению мерцания светодиодов RXD и TXD на Ардуине.

      XLoader использует для записи прошивки AVR Dude и в качестве протокола программирования используется STK500. Но, похоже, в настройках AVR Dude, произведена коррекция, так как использование стандартного AVR Dude с такими же настройками не дает результатов.

      Автоматизация XLoader.


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

      Автоматизация ARP Uploader.
      ARP Uploader как и XLoader работает через AVR Dude, но, в отличие от XLoader, показывает командную строку. Это дает возможность использовать AVR Dude напрямую в Make или Bat файле.

      Дополнительные материалы.
      Драйвера Arduino.

      Считаю не лишним напомнить, что для связи Arduino с компьютером в последнем должны присутствовать драйвера. Оставляю здесь архив с драйверами для Arduino (включая и старые драйвера в Old_Arduino_Drivers.zip и драйвера для FTDI-чипа в папке «FTDI USB Drivers»

      Стали появляться недорогие китайские Ардуины с драйвером CH340G
      Driver-CH340G.zip (9832 Загрузки)

      Загрузчики Arduino

      Если Вы решите собрать свою плату Arduino (а сложного там ничего нет, фактически, это голый ATmega328 или ATmega168), Вам понадобится загрузчик Bootloader который должен содержать МК для работы со средой (или программками для заливки Hex-файлов). Конечно, Вам для записи Hex-файлов в чистый МК понадобится программатор и придется выставить фьюзы.

      ATmegaBOOT_168_atmega328.zip (Одна Загрузка)
      Для правильной работы нужно установить фьюзы следующим образом Low: FF High: DA Ext: 05

      Схемы Arduino

      Фьюзы установленные по умолчанию в Arduino (только с ATmega328)
      Arduino Uno
      Low Fuse 0xFF
      High Fuse 0xDE
      Extended Fuse 0x05

      Arduino Duemilanove or Nano w/ ATmega328
      Low Fuse 0xFF
      High Fuse 0xDA
      Extended Fuse 0x05

      Arduino BT w/ ATmega328
      Low Fuse 0xFF
      High Fuse 0xD8
      Extended Fuse 0x05

      LilyPad Arduino w/ ATmega328
      Low Fuse 0xFF
      High Fuse 0xDA
      Extended Fuse 0x05

      Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
      Low Fuse 0xFF
      High Fuse 0xDA
      Extended Fuse 0x05

      Читайте также: