24194

Программирование контроллеров с помощью J-FLASH Lite

Дата последнего изменения: 11.05.2021 17:03:44

Эта статья написана на основе темы "J-FLASH для 1986ВЕхх" (J-FLASH для 1986ВЕхх) (автор реализации R MAX)

Варианты прошивки МК с использованием других утилит приведены здесь: Программа для прошивки через JTAG/SWD для 1986ВЕ91Т

Часто возникает вопрос, как прошить микроконтроллер, не пользуясь средой KEIL. Компания SEGGER разработала утилиту J-FLASH, которая представляет собой программное обеспечение, работающее с Windows 2000 и старше, позволяющее программировать внутреннюю и внешнюю память контроллера, используя J-Flash или Flasher.

  • J-Flash поставляется с примерами проектов для наиболее популярных микроконтроллеров и отладочных плат.

  • J-Flash управляется через графический пользовательский интерфейс либо из командной строки.

Для работы с полной версией J-Flash необходимо купить лицензию или программатор, при покупке которого лицензия поставляется в комплекте. Урезанную версию J-Flash Lite можно скачать с сайта Segger. Программа входит в пакет J-link Software and Documentation Pack for Windows.

При работе с программой J-Flash (J-Flash Lite) допустимо использование только программатора J-Link

Порядок действий

1. Скачать программу J-FLASH: J-Flash download

Работа проверялась на версии 6.84a.

UPD. Также проверена работа на версии 6.34h от 2018-10-09. Микроконтроллеры успешно определяются программой

2. Распаковать архив.

3. В папке "Devices" создать папку "Milandr", в которую положить FLM-файлы тех контроллеров производства компании "Миландр", с которыми утилита будет работать.

Стандартные FLM-файлы можно найти в паке для Keil по пути C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5.3\Flash

4. В папке JLink_Vxxxx найти файл JLinkDevices.xml.

5. Открыть его блокнотом и добавить в конце перед </DataBase> :

 <Device>
      <ChipInfo Vendor="Milandr"
       Name="1986BE1T"
       WorkRAMAddr="0x20100000"
       WorkRAMSize="0x4000"
       Core="JLINK_CORE_CORTEX_M1" />
       <FlashBankInfo Name="1986BE1T Flash"
       BaseAddr="0x0"
       MaxSize="0x20000"
       Loader="Devices\Milandr\1986BE1T.FLM"
       LoaderType="FLASH_ALGO_TYPE_OPEN"
       AlwaysPresent="1"/>
 </Device>
 <Device>
       <ChipInfo Vendor="Milandr"
       Name="1986BE3T"
       WorkRAMAddr="0x20100000"
       WorkRAMSize="0x4000"
       Core="JLINK_CORE_CORTEX_M1" />
       <FlashBankInfo Name="1986BE3T Flash"
       BaseAddr="0x0" MaxSize="0x20000"
       Loader="Devices\Milandr\1986BE3T.FLM"
       LoaderType="FLASH_ALGO_TYPE_OPEN"
       AlwaysPresent="1"/>
 </Device>
 <Device>
       <ChipInfo Vendor="Milandr"
        Name="1986BE4"
        WorkRAMAddr="0x20000000"
        WorkRAMSize="0x4000"
        Core="JLINK_CORE_CORTEX_M0" />
        <FlashBankInfo Name="1986BE4 Flash"
        BaseAddr="0x0"
        MaxSize="0x20000"
        Loader="Devices\Milandr\1986BE4.FLM"
        LoaderType="FLASH_ALGO_TYPE_OPEN"
        AlwaysPresent="1" />
 </Device>
 <Device>
       <ChipInfo Vendor="Milandr"
        Name="1986BE9X"
        WorkRAMAddr="0x20000000"
        WorkRAMSize="0x8000"
        Core="JLINK_CORE_CORTEX_M3"/>
        <FlashBankInfo Name="1986BE9X Flash"
        BaseAddr="0x8000000"
        MaxSize="0x20000"
        Loader="Devices\Milandr\1986BE9x.FLM"
        LoaderType="FLASH_ALGO_TYPE_OPEN"
        AlwaysPresent="1" />
 </Device>

Отличие от кода, представленного на форуме, состоит в том, что в раздел <FlashBankInfo> добавлен параметр, который, согласно описанию на JLink, является опциональным: "AlwaysPresent". AlwaysPresent определяет, всегда ли присутствует флэш-банк (например, внутренняя флэш). Если этот элемент установлен в "1", то команда "erase" будет работать как команда "erase" и сотрет этот банк.
AlwaysPresent=“1”.

Обратите внимание, что после добавления микроконтроллера можно пользоваться как утилитой J-Flash Lite, так и утилитой Jlink.exe (для проверки работоспособности программатора).

Подготовка программы.

1. Программа для программирования микроконтроллера может быть написана в любой среде, например, KEIL или IAR, но затем должны быть получены файлы с расширением hex или bin, которые и будут загружены в память микроконтроллера.
Чтобы получить hex в среде Keil, нужно в опциях проекта Options for Target 'xxx' поставить галочку во вкладке 'Output' напротив пункта "Create HEX File". Файл будет лежать в папке Objects
Как получить bin рассказано здесь: Получение bin-файла


Запуск программы

1. Запустить J-Fash Lite. Появится окно с предупреждением, что J-Flash Lite является средством для разработки и не предназначен для производства (рисунок 1). Нажать "ОК"

Рисунок 1 - Окно с предупреждением

2. Откроется окно (рисунок 2). В нем в поле "Device" уже выбран микроконтроллер, который программировался/стирался при последнем выборе утилиты. 


Рисунок 2 - Окно утилиты SEGGER J-Flash Lite V6.84a

3. Выбрать новый микроконтроллер можно, кликнув на поле под надписью "Device" (рисунки 3 и 4).

Рисунок 3 - J-Flash Lite. Выбор устройства в общем списке

Рисунок 4 - J-Flash Lite. Выбор микроконтроллеров Milandr с использованием фильтра

4. Загрузить записываемый файл в формате hex или bin (рисунок 5). В поле установить адрес:

для микроконтроллера 1986ВЕ1Т: 0х00000000

для микроконтроллеров серии 1986ВЕ9х: 0х080000000

Важно отметить, что путь к файлу не должен содержать русских букв, иначе программа не увидит файл

Рисунок 5 - Выбор загружаемого файла

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

Рисунок 6 -  В секции "Log" отображены последовательно операции выбора загружаемого файла, стирания, программирования


Примечания 

1. Для 1986ВЕ4У стирание через J-Flash не выполняется, только через KEIL. Для программирования требуется выполнить "Program Chip" два раза.

2. Для того, чтобы запустить зашитый с помощью J-FLASH Lite проект на отладочной плате для микроконтроллера 1986ВЕ1Т, необходимо нажать кнопку "Reset". На отладочной плате микроконтроллера 1986ВЕ91Т запуск программы происходит сразу после программирования.

Сохранить статью в PDF

Теги

Была ли статья полезной?