Некоторые семейства микроконтроллеров имеют от одного до нескольких различных начальных адресов и / или используют один и тот же адрес и переключают декодирование адресов на входе и выходе, основываясь на выводах ремешка, так что вы можете загружаться с одного загрузчика, созданного, например, поставщиком,или загрузчик пользователей или пользовательское приложение.(позволяя вам восстановить то, что обычно было бы кирпичной системой).
Вы можете представить себе то же самое.Подумайте о том, как работают эти микроконтроллеры, выполняя работу вне ядра, чтобы изменить флэш-банк, используемый для загрузки.Используя этот пин-код на ядре, вы можете иметь альтернативный загрузчик по другому адресу, этот загрузчик можно использовать для перезаписи / управления / разработки / восстановления основного приложения.
Вы также можете избежатьrom / ram векторная вещь адреса.скажем, например, вы загружаетесь с флэш-памяти на старшем векторе и имеете значение ram в 0, затем вы можете загрузить программу в ram или, по крайней мере, таблицу векторов, специфичных для времени выполнения, а затем переключить бит (может потребоваться отскочить от батута, чтобы попасть тудаЯ не помню, чтобы мы не использовали старший вектор в нашей микросхеме.
Не говорю, что именно поэтому ARM сделал это, но если ничего другого, это делает простую схему спасения для поставщиков.некоторые схемы спасения поставщиков или альтернативные методы загрузки слишком сложны.Мне бы очень хотелось, чтобы рука и другие имели несколько, по крайней мере, два сигнала, дающих четыре адреса: 0x00000000, 0x40000000, 0x80000000, 0xC0000000, что-то подобное или 0x00000000, 0x80000000, 0xFFFF0000, 0xFFFF8000.Сделайте что-то подобное на нескольких ядрах, особенно на cortex-m, и вы можете увидеть, что производители чипов начнут использовать это вместо своих собственных схем, и это будет меньше проблем при переходе от одного чипа к другому между поставщиками илив рамках одной и той же линейки продуктов поставщиков.