Я не новичок в загрузчике и системном ПО, но я не знаю причины, по которой основная программа начинается с 0x8000
. Я уже знаю, что адрес 0x8000
использовался в качестве начального адреса в обычной программе C/C++.
Минимальный размер загрузчика для обычной программы составляет 0x8000
? Или минимальный размер блока ПЗУ, который должен быть выделен для загрузчика 32КБ? Или есть другая причина?
Я хотел бы знать об этом, исторически или логически, и с точки зрения виртуального адреса.
Я ценю все, ваше время и помощь в этом. Чтобы сделать вопрос более ясным, вопрос связан с виртуальным адресом, а не с физическим.
Я в основном согласен с мнением R с точки зрения адреса физической памяти.
Не говоря уже о конкретной системе, которая отличается, например, linux (даже в android), общая RTOS (nucleus и другие, особенно раздел компоновщика ARM), все они используют адрес 0x8000 в качестве начального адреса общей программы. такие как crt_begin.o, crt.o и т. д., расположенные по адресу 0x0 с загрузчиком, существуют в этой области.
Поэтому я предполагаю, что минимальный размер загрузчика для общей программы составляет 32 КБ, учитывая размер блока, если он будет расположен в BootROM во время загрузки (холодная загрузка).
Эммм, но я не уверен...