Ho cercato in lungo e in largo per come farlo e non sono riuscito a trovare una risposta.Linker Script - Posizionamento di una sezione alla fine di un'area di memoria
mio layout di memoria è la seguente:
Fake Address | Section
0 | text
7 | relocate
15 | bss
23 | stack
Alla fine dello stack pongo mucchio. Che cresce e lo stack è uno stack discendente completo per il chip ARM che sto usando.
Ora, quello che voglio fare è posizionare una singola sezione, chiamiamola .persist
, nella mia memoria ram. Voglio che risieda alla fine della RAM e voglio programmarlo nel mio script linker. Tuttavia, questa dimensione della sezione .persist
non è stata definita da me ma è calcolata dal compilatore dai simboli che contiene.
Finora non ho trovato un buon modo per farlo. Dal momento che conosco l'indirizzo di inizio RAM e SIZE sarebbe banale calcolare dove dovrebbe andare la sezione se conoscessi la dimensione della sezione. Tuttavia, secondo the GNU linker documentation (pg 74) sembra che:
SIZEOF (sezione) restituisce la dimensione in byte del sezione denominata, se tale sezione è stato assegnato. Se la sezione non è stata assegnata quando viene valutata, il linker emetterà un errore .
quindi non riesco a calcolare la dimensione della sezione nello script linker (poiché voglio calcolare la dimensione PRIMA che lo metti/lo alleni).
Qualcuno sa un buon modo per farlo?
Ho lo stesso problema. Questo ti aiuta? http://stackoverflow.com/a/19348569/911550 – parvus
È una soluzione parziale, ma non è quello che sto cercando. È ancora il più vicino a cui chiunque altro sia venuto ad aiutare. Grazie! – nonsensickle