Non sono nuovo al bootloader e al sistema SW, ma non conosco l'origine del motivo per cui il programma generale inizia da 0x8000
. So già che l'indirizzo 0x8000
è stato utilizzato come indirizzo iniziale nel normale programma C/C++.Perché il programma generale di solito inizia da 0x8000?
La dimensione minima del bootloader per un programma generale è pari a 0x8000
? O è la dimensione minima del blocco della ROM che dovrebbe essere allocata al bootloader 32KB? O c'è un'altra ragione?
Mi piacerebbe sapere questo, storicamente o logicamente, e da un punto di vista di indirizzo virtuale.
Apprezzo tutto, il vostro tempo e l'aiuto con questo. Per rendere più chiara la domanda, la domanda è correlata all'indirizzo virtuale non fisico.
Sono sostanzialmente d'accordo con l'opinione di R dal punto di vista dell'indirizzo di memoria fisica.
Senza dire un sistema specifico che è diverso, per esempio linux (anche in Android), RTOS generale (nucleo, e gli altri, in particolare sezione linker ARM), tutti usano l'indirizzo 0x8000 come programma generale di indirizzo iniziale. di nome crt_begin.o, crt.o, ecc. Localizzato a 0x0 con il caricatore esistono in quest'area.
Quindi suppongo che la dimensione minima del bootloader per il programma generale sia di 32 KB considerando la dimensione del blocco se si troverebbe in BootROM in fase di avvio (avvio a freddo).
Ummm, ma non sono sicuro ...
Di quale sistema stai parlando qui? –
Non ho alcuna fonte affidabile per questo, ma posso fare una supposizione qualificata. Storicamente molti processori, in particolare 8 bit, hanno avuto la funzione chiamata [zero page] (http://en.wikipedia.org/wiki/Zero_page) il che significa che le celle di memoria agli indirizzi 0x00 - 0xFF avevano supporto di istruzioni per eseguire più velocemente. Credo che questo sia stato introdotto da Motorola in quei giorni, poiché avevano i registri I/O mappati in memoria sui vecchi MCU come 6800. -> – Lundin
Perciò vorrai che questa prima area di memoria sia occupata da celle RAM o registri speciali . Ha quindi senso che la parte dello spazio degli indirizzi che viene dopo la pagina zero sia della stessa natura: RAM e/o registri. Ciò richiederebbe molto kb, forse fino a 0x6000 o alcuni di questi. Suppongo quindi che fosse comodo inserire la ROM (memoria di programma) in un indirizzo pari e 0x8000 era conveniente. Sono abbastanza sicuro che la risposta a questa domanda possa essere trovata nei primi progetti dei processori Motorola. – Lundin