STM32 загрузка приложения / программного обеспечения через Ethernet

Есть ли способ загрузки приложений на плату STM32 через Ethernet?

Мне нужно иметь возможность загружать код на ~200 плат Nucleo F429ZI, которые связаны только с ПК через локальную сеть.

3 ответа

У меня проект, который я делал в прошлом, имел следующую настройку.

  • Одна внешняя вспышка
  • Boot-loader (первый проект STM32 в моей IDE), выполняющий следующую загрузку
    • Есть ли новое изображение во внешней вспышке? Я даже добавил подпись RSA к этому шагу
    • Если образ подтверждает, что все в порядке, удалите STM32-flash, за исключением первого 64K, на котором установлен загрузчик, и перепишите его, используя данные из внешней флэш-памяти. И очистите первый сектор во внешней флэш-памяти, когда это будет сделано, чтобы избежать перепрошивки STM32 при каждой загрузке.
    • Прыгнуть в полезную нагрузку
  • Полезная нагрузка (второй проект STM32 в моей IDE). Я настроил свою среду IDE для размещения изображения 64K во флэш-памяти STM32. Моя полезная нагрузка использует LwIP в качестве своего IP-стека (последняя версия git и взяла аппаратный клей-код, необходимый из другого примера STM32)
  • Сделал небольшой инструмент, который может читать файл.hex, который генерирует моя IDE, подписывать его моим ключом RSA и выводить файл, который мое управляющее программное обеспечение понимает и может передать на мой STM32, когда он работает в обычном режиме.

Вы можете найти примеры кодов для плат STM324xG_EVAL и STM324x9I_EVAL на STMCubeF4 в папке LWIP_IAP, и вы можете следить за документами UM1709 и AN3968. Вы должны адаптировать примеры кодов в соответствии с вашей платой.

Я не использовал LwIP_IAP - как отметил Гюртач Кадем - но это кажется самым простым решением.

Другим способом (также применимым к платам не-ST, в случае, если кто-то еще ответит на этот вопрос) будет добавление загрузчика mbed в ваш проект. Затем запустите на своей плате TCP-сервер, дайте компьютеру подключиться к плате и запишите новое приложение на плате. Сохраните новый двоичный файл во флэш-памяти, и загрузчик может загрузить новый двоичный файл при перезагрузке.

Требуется немного кодирования, хотя. Также вам необходимо добавить доверительные отношения между компьютером и платой, возможно, подписав новый двоичный файл с помощью закрытого ключа и удерживая открытый ключ на плате. mbed TLS способен на это (например, через X509).

Другие вопросы по тегам