Problem z kompilacją programu dla ARM

Aug 08, 2009 3 Replies

Witam !



Piszę program dla AT1SAM7S256 w C w środowisku CrossStudio Programie potrzebuję użyć jedną dużą tablicę i kilka mniejszych umieszczonych w pamięci flash. Łącznie to będzie około 70KB czyli znacznie mniej od zasobów uP



Program kompiluję dla "ARM Flash Debug".



Tą największą tablicę zadeklarowałem tak: const short CS_DATA[32752]={....



Jednak gdy jest ona tak duża to pojawia się błąd linkera (dla mniejszych tablic jest OK):



section .data overlaps absolute placed section .setup c:/program files/rowley associates limited/crossworks for arm



1.7/gcc/bin/ld: section .setup [0010ff80 -> 0010ffff] overlaps section .rodata [00100680 -> 0011072b]

Czy ktoś może mi poradzić jak rozwiązać powyższy problem ?



Paweł


Sekcja .setup ma na sztywno ustawiony adres 0x10ff80. Więc nic dziwnego, że sekcja .rodata się nie mieściła. Gdy zmienię adres .setup np. na

0x13ff80 wszytko kompiluje się prawidłowo. Moje doświadczenie z procesorami ARM jest niewielkie i nie bardzo wiem do czego służy ta sekcja .setup. Jakie skutki przyniesie zmiana jej adresu ? Z jakiego powodu dla AT91SAM7S256 adres domyślnie ustawiony jest na wartość 0x10FF80 ?

Paweł

Hello it looks like 8 have the same problem, did you find the solution?

W dniu 2013-12-04 16:57, snipped-for-privacy@gmail.com pisze:

A używasz float lub double ?

Adam

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required