LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

Применимо не ко всем контроллерам. Некоторые имеют загрузчик в специальной неперезаписываемой памяти. То есть умеют самопрошиваться прямо с завода.

STM32 как раз такой случай (что-то похожее есть ещё как минимум у MSP430, правда называется иначе - BSL). Для попадания в режим загрузчика нужно подать правильное напряжение на BOOT0 (не помню точно, то ли высокий, то ли низкий логический уровень) в момент сброса или включения МК. На некоторых отладочных платах специально для этого предусмотрен джампер или переключатель.

На STM32F103 интерфейс загрузчика будет доступен лишь на USART1. На более крутых чипах (например, STM32F407) вариантов больше - несколько USART, USB.

Через USART умеет шить OpenSource-утилита stm32flash. Через USB - dfu-util. В первом случае потребуется переходник USB-UART, во втором случае ничего кроме платы с МК и USB-шнурка не нужно.

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

В варианте с UART можно повесить RESET и BOOT0 на сервисные линии последовательного порта, таким образом обеспечив перепрошивку без необходимости ручных действий (программно уронить RESET в низкий уровень, выставить нужное значение на BOOT0, отпустить RESET). Таким образом сделано на Arduino, только там для прошивки нужно лишь манипулировать RESET AVR-микроконтроллера. Но это уже для эстетов.

Ещё можно попасть в системный загрузчик из обычного кода. Для этого нужно прыгнуть по определённому адресу (фактически у STM32 и системная память, и пользовательский Flash всегда доступны, но по ненулевому смещению, просто в зависимости от состояния BOOT0 на нулевые адреса маппится что-то одно). Точно в последовательности действий не уверен. Возможно, нужны дополнительные действия (скажем, объяснить NVIC, что таблица прерываний теперь в другом месте, но есть вероятность, что загрузчик и так это делает).

Исправление KivApple, :

Применимо не ко всем контроллерам. Некоторые имеют загрузчик в специальной неперезаписываемой памяти. То есть умеют самопрошиваться прямо с завода.

STM32 как раз такой случай (что-то похожее есть ещё как минимум у MSP430, правда называется иначе - BSL). Для попадания в режим загрузчика нужно подать правильное напряжение на BOOT0 (не помню точно, то ли высокий, то ли низкий логический уровень) в момент сброса или включения МК. На некоторых отладочных платах специально для этого предусмотрен джампер или переключатель.

На STM32F103 интерфейс загрузчика будет доступен лишь на USART1. На более крутых чипах (например, STM32F407) вариантов больше - несколько USART, USB.

Через USART умеет шить OpenSource-утилита stm32flash. Через USB - dfu-util. В первом случае потребуется переходник USB-UART, во втором случае ничего кроме платы с МК и USB-шнурка не нужно.

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

В варианте с UART можно повесить RESET и BOOT0 на сервисные линии последовательного порта, таким образом обеспечив перепрошивку без необходимости ручных действий. Таким образом сделано на Arduino, только там для прошивке нужно лишь манипулировать RESET AVR-микроконтроллера. Но это уже для эстетов.

Ещё можно попасть в системный загрузчик из обычного кода. Для этого нужно прыгнуть по определённому адресу (фактически и системная память, и пользовательский Flash всегда доступны, но по ненулевому смещению, просто в зависимости от состояния BOOT0 на нулевые адреса маппится что-то одно). Точно в последовательности действий не уверен. Возможно, нужны дополнительные действия (скажем, объяснить NVIC, что таблица прерываний теперь в другом месте, но есть вероятность, что загрузчик и так это делает).

Исправление KivApple, :

Применимо не ко всем контроллерам. Некоторые имеют загрузчик в специальной неперезаписываемой памяти. То есть умеют самопрошиваться прямо с завода.

STM32 как раз такой случай (что-то похожее есть ещё как минимум у MSP430, правда называется иначе - BSL). Для попадания в режим загрузчика нужно подать правильное напряжение на BOOT0 (не помню точно, то ли высокий, то ли низкий логический уровень) в момент сброса или включения МК. На некоторых отладочных платах специально для этого предусмотрен джампер или переключатель.

На STM32F103 интерфейс загрузчика будет доступен лишь на USART1. На более крутых чипах (например, STM32F407) вариантов больше - несколько USART, USB.

Через USART умеет шить OpenSource-утилита stm32flash. Через USB - dfu-util. В первом случае потребуется переходник USB-UART, во втором случае ничего кроме платы с МК и USB-шнурка не нужно.

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

В варианте с UART можно повесить RESET и BOOT0 на сервисные линии последовательного порта, таким образом обеспечив перепрошивку без необходимости ручных действий. Таким образом сделано на Arduino, только там для прошивке нужно лишь манипулировать RESET AVR-микроконтроллера.

Исправление KivApple, :

Применимо не ко всем контроллерам. Некоторые имеют загрузчик в специальной неперезаписываемой памяти. То есть умеют самопрошиваться прямо с завода.

STM32 как раз такой случай (что-то похожее есть ещё как минимум у MSP430, правда называется иначе - BSL). Для попадания в режим загрузчика нужно подать правильное напряжение на BOOT0 (не помню точно, то ли высокий, то ли низкий логический уровень) в момент сброса или включения МК. На некоторых отладочных платах специально для этого предусмотрен джампер или переключатель.

На STM32F103 интерфейс загрузчика будет доступен лишь на USART1. На более крутых чипах (например, STM32F407) вариантов больше - несколько USART, USB.

Через USART умеет шить OpenSource-утилита stm32flash. Через USB - dfu-util. В первом случае потребуется переходник USB-UART, во втором случае ничего кроме платы с МК и USB-шнурка не нужно.

Исправление KivApple, :

Применимо не ко всем контроллерам. Некоторые имеют загрузчик в специальной неперезаписываемой памяти. То есть умеют самопрошиваться прямо с завода.

STM32 как раз такой случай (что-то похожее есть ещё как минимум у MSP430, правда называется иначе - BSL). Для попадания в режим загрузчика нужно подать правильное напряжение на BOOT0 (не помню точно, то ли высокий, то ли низкий логический уровень) в момент сброса или включения МК. На некоторых отладочных платах специально для этого предусмотрен джампер или переключатель.

На STM32F103 интерфейс загрузчика будет доступен лишь на USART1. На более крутых чипах (например, STM32F407) вариантов больше - несколько USART, USB.

Через USART умеет шить OpenSource-утилита stm32flash. Через USB - dfu-util.

Исходная версия KivApple, :

Применимо не ко всем контроллерам. Некоторые имеют загрузчик в специальной неперезаписываемой памяти. То есть умеют самопрошиваться прямо с завода.

STM32 как раз такой случай (что-то похожее есть ещё как минимум у MSP430, правда называется иначе - BSL). Для попадания в режим загрузчика нужно подать правильное напряжение на BOOT0 (не помню точно, то ли высокий, то ли низкий логический уровень) в момент сброса или включения МК. На некоторых отладочных платах специально для этого предусмотрен джампер или переключатель.

На STM32F103 интерфейс загрузчика будет доступен лишь на USART1. На более крутых чипах (например, STM32F407) вариантов больше - несколько USART, USB.