Problem z kompilacją programu dla ARM

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ł

Reply to
Paweł
Loading thread data ...

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ł

Reply to
Paweł

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

Reply to
asterie.n

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

A używasz float lub double ?

Adam

Reply to
Adam Górski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.