Я давно работаю с STM32, программирую, дизассемблирую чужие прошивки, ну а прошить или считать содержимое такого микроконтроллера вообще не составляет труда. Но сегодня знакомый попросил помочь ему с вычитыванием и прошивкой микроконтроллера ST10. Это достаточно древний микроконтроллер, ранее мне не приходилось с ними работать. Но почитав документацию, предоставленную ST Microelectronics, я не увидел никаких препятствий, чтоб это сделать.
В отличии от STM32, у которого есть SWD и JTAG, у ST10 нет специализированного интерфейса для прошивки и отладки, все операции производятся через последовательный интерфейс UART или CAN. Для работы с памятью, микроконтроллер нужно перевести в режим загрузки встроенного стандартного bootloader-а. Делается это подтягиванием вывода P0L.4 к земле.
Вскрыв блок, я обнаружил основной микроконтроллер ST10F276-CFG. А так-же драйвер шины RS232, в виде микросхемы MAX3232. Она подключена как раз к RxD0 и TxD0 микроконтроллера. Значит этот блок можно напрямую подключить к COM-порту компьютера, P0L.4 также выведен на внешний разъем через ограничивающий резистор.
Получается для прошивки этого блока его даже не нужно разбирать, все необходимые сигналы доступны с внешнего разъема. Вот распиновка того, что нужно: +12V питание, GND_BOOTLOADER замыкаем с GND для переключения на стандартный загрузчик. RX->TX, TX->RX к COM порту, и не забывает соединить землю COM-порта.
Для работы с этим микроконтроллером в режиме bootloader понадобится специальное приложение, ST10 Flasher tool. Вначале я установил последнюю версию ST10 Flasher 2.4b, она как-то заработала, но при считывании дампа в файл выдает ошибку "Description: LoadExternalFlashMonitor: target Not found", вероятно вызвано тем, что эта версия не правильно определяет модель микроконтроллера. Так что рекомендую использовать ST10 Flasher 2.3g. Эта программа написана ещё в далёком 2002-м году, задолго до появления современных ОС, но она вполне корректно работает на Windows 7 x32. Для этого её нужно установить в "C:/ST10Flash", и выбрать режим совместимости "Windows XP SP3".При первом запуске нужно выбрать соответствующий COM-порт, по умолчанию выбран COM1, на скорости 9600. На такой скорости считывание и прошивка может длится десятки минут, но именно с этого режима стоит начинать, чтоб удостоверится, что всё подключено правильно, и микроконтроллер правильно определяется. В дальнейшем скорость можно будет поднят, если этого позволяет ваше соединение и частота осциллятора.Если всё подключено и настроено правильно, после нажатия кнопки "Reload Monitor", программа должна показать модель микроконтроллера и частоту на которой он работает.
С помощью кнопки "BlankCheck" можно определить какие области памяти пусты, а в каких содержаться данные. При считывании (кнопка "Dump") отмечаем только те блоки, в которых есть данные, это сократит время вычитывания и последующей прошивки дампа.
Bank 8 в моем случае всегда определяется не пустым, даже после стирания памяти, возможно это ошибка в программе, а возможно уже поврежденная ячейка памяти, напишите, кто столкнулся с этой проблемой.На скорости 57000bts понадобилась всего минута. Чтоб дополнительно удостоверится, что всё "прошилось" правильно можно воспользоваться кнопкой "Compare", выбрать нужные блоки и нажать "Verify"