Перейти к содержанию
    

Замена FlashLoaderDemonstrator (STM32)

Всем привет!

Кому не лень потестируйте программу для обновления памяти программ микроконтроллеров STM32F10x с объемом памяти до 128-ми килобайт с использованием встроенного в микроконтроллер аппаратного загрузчика. Байты опций не записывает, только читает. Программа открывает HEX-файл, проверяет его на соответсвие формату IntelHex, при соответствии определяет диапазон стираемых секторов, стирает, пишет, читает, верифицирует, выводит необходимые сообщения для отчета в окно. Отчет представлен "для пользователя", его можно сохранить через меню. Имеются настройки: COM-порт, скорость, таймаут, байт данных (в пакете на запись).

Последовательность действий:

1) Настройки -> Настройки связи (выбрать порт, скорость, таймаут, количество байт).

2) Файл -> Открыть (выбираем HEX-файл);

3) Команды -> Поиск устройств.

4) Команды -> Обновить ПО устройства.

В каталоге с программы файл настроек Settings.ini, других файлов программа не создает, никуда не лазит, вирусов нет, тестировалась с STM32F100C4 (PID=0x0420), скриншот Pic01.png. Заявлена поддержка PID= 0x0410, 0x0412 (но не тестировалась ввиду отсутствия микроконтроллеров). Если микроконтроллер не поддерживается, то записывать не будет, скриншот Unknown MCU.png.

PS: Windows XP, NetFramework 3.5 и более новые системы.

blstm32f10x.zip

post-62159-1474447868_thumb.png

post-62159-1474447874_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

респект, как доберусь до контроллера тестону. только исходник бы еще.

как я понимаю она еще под линухом в mono может работать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

респект, как доберусь до контроллера тестону. только исходник бы еще.

как я понимаю она еще под линухом в mono может работать?

Исходник там на C#, написан и собран в Microsoft Visual Studio Express 2010, в системе Windows XP. Протокол известен, он описан в документации к STM32, и даже исходникик в Интернете есть, только на C++ и для консольной версии программы, есть еще три DLL-ки (API) для C под Windows. С DLL и исходниками на С++ моно поближе познакомиться после установки программы Flash Loader Demonstrator v.2.8.0 (последняя версия программы от ST). Отличительной особенностью исходников для C++ (по мнению разработчиков ПО) является то, что проект Flash Loader Demonstrator v.2.8.0 собран в Visual Studio 2013. Они не упоминают, что предыдущая версия v.2.6.0 была для Visual Studio 6. Т.е. старый проект перенесли в новую IDE, которая даже на Windows XP не устанавливается (при установке Visual Studio 2013 требует наличия Windows 7). Т.е. нельзя открыть проект для VSE2013 в VSE2010.

И зачем это они так делают? Не знаю. Может, маркетинговый ход какой. Кстати, исходные коды производителя (на C++) не требуют вообще никакого Net Framework, поэтому могут работать даже под Windows Me и 98, но, вряд ли это можно считать достоинством, скорее - недостатком. Скорее это показывает уровень разработчиков (чем владели) или реальную дату разработки оригинальной версии проекта или - около 15 лет назад.

Можно много говорить, но, если вам понадобились исходники, то вы - программист, поэтому вы легко можете воссоздать программу на основе логики её работы и документации производителя. Возможно, вы даже сможете чем-то со мной поделиться.

PS: И еще один момент: у вас слишком мало сообщений с момента регистрации (т.е. вы - наблюдатель, а не производитель в данном случае), поэтому вам никак не может быть предоставлен исходный код.

Изменено пользователем Pridnya

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробовал, шьет вобщем без проблем

 

из плюсов проги

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

 

из минусов

-нет скорости 256к

-все приходится делать через меню, надо бы вынести кнопки на все операции

-открыть исходник, чтобы другие не изобретали велосипедов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно просто добавить command line options и хоть в оконном, хоть в командном режиме.

Ну и конечно исходники на github

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробовал, шьет вобщем без проблем

 

из плюсов проги

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

 

из минусов

-нет скорости 256к

-все приходится делать через меню, надо бы вынести кнопки на все операции

-открыть исходник, чтобы другие не изобретали велосипедов

Я её тестировал с физическим COM-портом, а он работает до 115200, поэтому совсем забыл, что виртуальный COM-порт в отличии от физического может работать на скоростях, превышающих 115200. Спасибо! Попробую добавить.

Хотел сделать без лишних кнопок - получились лишние действия (лишние клики мышкой). Спасибо и за это.

Исходники раскрывать рановато. Исходников на C# даже у производителя нет. :) Я их исходники на старом C++ и DLL-ки Си-шные пытался приспособить к работе на C# (на C# написать обертку для работы с их тремя штуками Си-шных DLL-к) - немного стало получаться, но гемор страшный, как кал в доллары заворачивать и назвать конфетой. Бросил и переписал все на C#.

Можно просто добавить command line options и хоть в оконном, хоть в командном режиме.

Ну и конечно исходники на github

У меня только GUI-версия. Я пока даже не знаю, как писать программы, чтобы была и GUI и Console одновременно. Спасибо за совет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

stm32flash видели?

Не видели еще. Сейчас посмотрел, так этот опенсорц на Си больше для Linux, там в примерах и синтаксис для Linux, а я работаю только с Windows.

Можно, конечно, попробовать собрать программу в Linux (я только с Ubuntu раньше работать пробовал), используя исходники на C# и IDE SharpDevelop, теоретически должно работать, если NetFramework портировали (в виде Mono). Но я не пробовал еще.

Usage: ./stm32flash [-bvngfhc] [-[rw] filename] /dev/ttyS

...

Вы какую мысль хотели донести? Всегда удивляет немногословность. Можно было и после ссылки знак ? напечатать. :rolleyes:

Изменено пользователем Pridnya

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интрига ))

Хотел показать, что есть возможность использовать уже существующие наработки, чтобы с нуля всё не делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интрига ))

Хотел показать, что есть возможность использовать уже существующие наработки, чтобы с нуля всё не делать.

IMHO: Неудачный у вас пример получился. Там несколько десятков Си-шных файлов, причем синтаксис не самый удачный:

- многоуровневые типы данных без необходимости;

- функции длиной до нескольких сотен строк (например в файле main.c);

- привязка к консольному вводу-выводу.

Для работы с последовательным портом в файле serial_w32.c используются функции CreateFile(). Этот синтаксис мне напоминает WinAPI, я лет 10 назад начинал с их использования, когда работал с последовательным портом, хотел свой класс для последовательного порта написать (обертку для функций WinAPI), но дело так и не дошло, классы для последовательного порта уже были. Вообще классы - полезная вещь, с ними код короче и понятнее, все лишнее скрыто. Короче: этот пример мне не нравится, он слишком старый(ему лет 15-20), хотя и выложен пару лет назад.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PS: И еще один момент: у вас слишком мало сообщений с момента регистрации (т.е. вы - наблюдатель, а не производитель в данном случае), поэтому вам никак не может быть предоставлен исходный код.

 

Хорошо же вы оцениваете собеседника лишь по количеству сообщений на форуме ;)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо же вы оцениваете собеседника лишь по количеству сообщений на форуме ;)

И не только по количеству сообщений, но и по количеству созданных тем. Эта мысль сформировалась за долгие годы общения на разных форумах.

Ведь есть пользователи, которые все 10 лет пребывания на форуме:

1) только читают;

2) постоянно спрашивает, но не отвечает другим;

3) только советует, но не создает тем, по крайней мере в последние лет 5 лет (как бы мудрец);

4) задает множество вопросов начального уровня;

5) и читает, и пишет, т.е. в теме и не потерял квалификацию.

 

Т.е. должен быть "фильтр" ,который позволяет отсеить тех, кто не входит в 90% и тех, кто вчера зарегистрировался, а сегодня уже хочет исходники и лезет в друзья.

 

Реальный пример: человек за 10 лет создал 6 тем, две из которых "анекдоты" и "вопрос о любезностях", две темы с нулем ответов - заданы не на тематическом форуме, одна с одним ответом, и одна на общефизические вопросы. Совет такого пользователя может быть крайне вреден, т.к. может создаться впечатление об авторитетности источника. Не зря же на форуме есть кнопка "темы пользователя".

Изменено пользователем Pridnya

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вдруг пригодится:

https://habrahabr.ru/post/305800/

Спасибо! Не видел этой статьи. Ознакомился.

Чтобы воспользоваться этим способом, нужно:

1) добавить к микроконтроллеру мост USB-UART на микросхеме CP2103 (SiLabs), т.е. виртуальный COM-порт;

2) предварительно записать в FLASH-память программ STM32 нестандартный программный загрузчик;

3) с помощью EXE-шника (который сделан с использованием Delphi) записать оставшуюся память микроконтроллера.

4) и что-то EXE-шник предлагает выбрать не HEX, а BIN-файл, там даже фильтра нет *.*, похоже, что он не понимает IntelHex формат.

Это я еще протокол обмена не ковырял. Будет время - посмотрю. Есть люди, которые о достоверности передачи данных не слышали,

им только скорость нужна высокая.

 

А вот с этим не согласен

Штатная утилита и AN3155 не рекомендовали шить на скорости выше 115200 бод,

Моя же программа могла шить даже 1000к бодах, но это давало прибавку к скорости всего в 2 раза (по сравнению с 115200).

Последняя версия FlashLoaderDemonstrator v2.8.0 по сравнению с v2.6.0 имеет две дополнительные скорости 128000 и 256000, и при использовании виртального COM-порта (USB-RS232, или USB-RS485 при наличии в схеме микросхемы драйвера RS485 AutoDirection - MAX13412, не требующая третьей линии - управления направлением передачи данных) вполне нормально работает на скорости 256000 килобит

 

И с этим тоже не согласен

Стирать надо всю флеш, даже если размер прошивки 10к из доступных 1024к байт — в некоторых кристаллах были баги с частичным стиранием.

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

 

Итого: нестандартный программный загрузчик плюс мост USB-UART на CP2103, плюс ПО для Windows с поддержкой протокола нестандартного программного загрузчика, к аппаратному загрузчику микроконтроллера (протокол описан в AN3155) отношения не имеют.

post-62159-1478521092_thumb.png

post-62159-1478521820_thumb.png

Изменено пользователем Pridnya

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...