Да, вы должны написать свой собственный загрузчик, вы можете использовать любого из GPIO штифтов (не загрузочные штифтов) как ремень шпильки к вашему загрузчику (в том, как загрузочные штырьках ремешки к ст загрузчику), чтобы сообщить загрузчику, как загружать или где искать вещи. Затем, основываясь на этом решении, ваш загрузчик либо загружает приложение откуда-то в пользовательскую флешку, либо обращается к некоторому подключенному медиа или переходит в режим ожидания на хосте для загрузки через некоторый интерфейс.
Независимо от того, нужно ли вам копировать данные в sram, а затем записывать до вспышки или нет, зависит от дизайна интерфейса вспышки, может быть буфер с размером страницы, который вы просто записываете. Вполне вероятно, что ваша реализация захочет использовать sram в качестве хранилища и пересылки в любом случае, скажем, извлечение данных с внешнего устройства с использованием sram для хранения данных в единицах размера с этого устройства. затем пишут на флэш, используя единицы размера, необходимые для периферийного устройства вспышки.
Бутылки для загрузки определяют, используется ли флеш-память пользователя или используется флэш-память загрузчика ST. ST-загрузчик прослушивает один или несколько интерфейсов (usb, uart, spi, i2c, независимо от того, что они поддерживают), как подчиненный какой-либо ведущий, чем может запрограммировать пользовательскую вспышку. Пока ваш дизайн платы таков, что требуемые загрузочные контакты и интерфейс остаются доступными, эта опция всегда присутствует, но перемещение запрограммированных данных выполняется внешним мастером, фактическое программирование вспышки из этих данных выполняется загрузчиком. Вы также можете реализовать один из них самостоятельно, в своей схеме загрузчика.
Вы можете использовать свои собственные загрузчики, шпионы gpio или убедиться, что у вас могут быть данные во флеше, которые управляют процессом загрузки, это похоже на то, как работает компьютер или работает uboot, где говорят, что на вашем компьютере работает linux у вас есть grub с конфигурацией в энергонезависимой памяти (например, на жестком диске), которая управляет загрузкой по умолчанию, после того как вы загрузили эту энергонезависимую память. u-boot есть где-то флеш-память, в которой есть переменные системной среды, некоторые из которых являются параметрами загрузки, после загрузки или если вы остановились в u-boot, находящемся на консоли, вы можете изменить эти параметры загрузки для следующей загрузки. gpio-ремни похожи на загрузочные штифты для загрузчика st, вы определяете столько контактов, сколько требуется для разных опций, привязывайте их/сокращайте их высоко или низко, чтобы выбрать комбинацию, соответствующую требуемой загрузке, чтобы изменить параметр загрузки вместо того, чтобы мигать что-то вы меняете ремни. Например, вы можете обнаружить какое-то присутствие на слоте SD-карты, если оно есть, а затем загрузиться из загруженной в другом месте из другого места. В этом случае вам не нужно на самом деле записывать программу с SD-карты на флеш-память, чтобы запустить ее, если у вас достаточно ресурсов, которые вы можете скопировать в ram и запустить из ram. Что верно для любой из выбранных вами параметров загрузки, вы можете записать их на флэш, а затем запустить оттуда или просто скопировать в ram, зависит от того, насколько велики программы и если вы хотите использовать их другой силовой цикл и не нужно читать с носителя.
Короче говоря, вы можете делать все, что захотите, если у вас достаточно ресурсов (интерфейсы и хранилище (энергозависимые и энергонезависимые). Нет, это не значит, что вы можете напрямую выполнить с SD-карты, но это означает вы можете вытащить программу с SD-карты, затем выполнить или вытащить ее часть с SD-карты, выполнить ее, натягивая еще немного наложения.
Не было и речи: P Ваша идея звучит разумно. может также использовать несколько областей вспышки, которые обновляются отдельно, поэтому вы предотвращаете проблемы, когда во время обновления отключается питание, а ваш рабочий код находится только в SRAM. – domen
Уважаемый SzybkiSasza, вы совершенно правы. У меня нет прямого вопроса. новичок в загрузчике. Я просто потратил несколько часов на изучение предмета т. И мне было интересно, правильно ли я это понял. Спасибо за ваш комментарий. Это действительно помогает. – Fardo
в прикладном программировании означает, что приложение, работающее на микроконтроллере, может запрограммировать флеш-память на этом чипе ... Так что вы можете написать приложение или загрузчик, которые могут запрограммировать встроенную флеш-память с любого другого ресурса, который вам нужен. Просто напишите эту программу. –