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).