No soy nuevo en el gestor de arranque y el sistema SW, pero no sé el origen de la razón por la cual el programa general comienza en 0x8000
. Ya sé que la dirección 0x8000
se ha utilizado como dirección de inicio en el programa C/C++ normal.¿Por qué el programa general generalmente comienza en 0x8000?
¿El tamaño mínimo del gestor de arranque para un programa general toma hasta 0x8000
? ¿O es el tamaño de bloque mínimo de la ROM que se debe asignar al cargador de arranque de 32 KB? ¿O hay otra razón?
Me gustaría saber sobre esto, histórica o lógicamente, y desde el punto de vista de una dirección virtual.
Agradezco a todos, su tiempo y ayuda con esto. Para hacer la pregunta más clara, la pregunta está relacionada con la dirección virtual, no con la física.
Básicamente estoy de acuerdo con la opinión de R desde el punto de vista de la dirección de memoria física.
Sin decir un sistema específico que sea diverso, por ejemplo Linux (incluso en Android), RTOS general (núcleo y los demás, especialmente la sección del enlazador ARM), todos usan la dirección 0x8000 como programa general de la dirección de inicio. llamados crt_begin.o, crt.o, etc. ubicados en 0x0 con cargador existen en esta área.
Por lo tanto, supongo que el tamaño mínimo del gestor de arranque para el programa general es de 32 KB, teniendo en cuenta el tamaño del bloque si se encuentra en BootROM durante el arranque (arranque en frío).
Ummm, pero no estoy seguro ...
¿De qué sistema está hablando aquí? –
No tengo ninguna fuente confiable para esto, pero puedo hacer una suposición calificada. Históricamente, muchos procesadores, en particular los de 8 bits, tienen la función denominada [página cero] (http://en.wikipedia.org/wiki/Zero_page), lo que significa que las celdas de memoria en las direcciones 0x00 - 0xFF tienen soporte de instrucciones para ejecuta más rápido. Creo que esto fue introducido por Motorola en aquellos días, ya que tenían registros de E/S mapeados en memoria en los antiguos MCU como 6800. -> – Lundin
Por lo tanto, querría que esta primera área de memoria estuviera ocupada por celdas RAM o registros especiales . Entonces tiene sentido que la parte del espacio de direcciones que viene después de la página cero sea de la misma naturaleza: RAM y/o registros. Esto tomaría mucho kb, tal vez hasta 0x6000 o algo así. Supongo que era conveniente colocar la ROM (memoria de programa) en una dirección pareja y 0x8000 era conveniente. Estoy bastante seguro de que la respuesta a esta pregunta se puede encontrar en los primeros diseños de procesadores Motorola. – Lundin