Ich habe hier den DP83848 als externen Ethernet Chip. Wie kommt es zu diesem Fehler? build/default/production/_ext/867694782/ETHPIC32IntMac.o: Link Error: Could not allocate section .bss, size = 15608 bytes, attributes = bss Link Error: Could not allocate data memory collect2: ld returned 1 exit status make[2]: *** [dist/default/production/pm-eth.X.production.hex] Error 1 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2 Ich hab schon ne Menge raus genommen in der TCP config aber in den PIC32 muss doch mehr rein passen als in den PIC18F97J60 :-)
Was mich auch wundert das er _inline_ nicht kennt, wo wird das normalerweise eingestellt?
Was mich echt wundert der selbe Stack passt in einen PIC18F97J60 mit gerade mal ~3k SRAM aber nicht in einen PIC32 mit 65k SRAM ? Gibt es hier irgendwelche Schalter etc... die hier was optimieren? Dazu musste ich einen HEap Speicher beim Linker eingeben, wieviel benötige ich da und vorallem auch für was wird dieser im TCP Stack verwendet? Das hier alleine gab mir 16kb Speicher //#define STACK_USE_DYNAMICDNS_CLIENT Kann ich irgendwie sehen in welchen Dateien soviel Speicher benötigt wird?
Gast
#3229338
Schau mal in der TCPIP STack Guide nach, da gibt ein Kapitel zu.
Da gibts sogar optionen fuer den Linker, aber er generiert einfach keine Map file. In welcher TCP Stack Hilfe? der Helpfile? der AN833? The map file shows information relating to where objects were positioned in memory. It is useful for confirming that user-defined linker options were correctly processed, and for determining the exact placement of objects and functions. The option to create a map file in the linker is -Map file (or -Wl,-Map=file if passed to the driver),
Ich hab mir mal PIC18 Projekte angesehen da wird das so gemacht: -m"$(BINDIR_)$(TARGETBASE).map" mich wundert nur das es der XC8 macht aber der XC32 scheinbar nicht. Es muss irgendwo eine Einstellung dafür geben also gut es ist einfach nur -M dann schreibt ers aus.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
Man beachte wieviel er hier belegt: .bss 0xa000027c 0x3c60 15456 Uninitialized data
Was ich hier einfach nicht verstehe warum der TCP Stack in einen kleinen PIC18F97J60 passt, und ein bei einem großen PIC32 auf einmal nicht mehr. Ich kann irgendwie auch nur die ersten 50% belegen, danach nicht mehr, irgendwie verwendet er nur den "near" Speicher. Beim 16 Bit compiler konnte man noch das Speicher Model ändern, nur das kann man beim XC32 nicht mehr. Gerade der PIC32MX664 wäre doch komplett nutzlos wenn nichtmal der TCP Stack rein passt. Geschweige den von der USB Lib
Also ich bin ein Tick weiter, scheinbar kann man die Vitrual Memory Map Umstellen das mehr near speicher zur Verfügung steht. Es muss doch da irgend wer eine Idee haben.
Gast
#3230811
David Mueller schrieb: > mehr near speicher zur Verfügung steht. Gibt es das Konzept "near" bei einer MIPS-Architektur überhaupt? MfG Klaus
Gast
#3230851
Servus David, benutzt Du die aktuellste IDE mit aktuellstem Compiler? Vielleicht hilft es, die Heap-Size zu verkleinern, so dass mehr RAM übrig bleibt (bei mir reichen 1024) Sonst würde ich mal die Optionen "Remove unused sections" und "Allow overlapped sections" ausprobieren. Evtl. schaust Du mal in das Linker File unter C:\Program Files\Microchip\xc32\v1.21\pic32mx\lib\proc\32MX664F128H\procdefs.ld oder erstellst eine Kopie und gibts das unter "Linker Files" an. Bei kseg1_data_mem sollte 0x8000 stehen (also 32k RAM).. Sonst fällt mir vorerst auch nichts mehr ein.. Viele Grüße Florian
Gast
#3230858
anyway: Mein RAM ist mit TCP/IP Stack, USB und ein bisschen Drumherum bei 0x7FBC, also in Deinem Fall wäre das schon am Anschlag.. Das Map-File wird wohl erst nach erfolgreichem Linken generiert, dafür brauche ich zumindest keine Extra-Option.
Flo schrieb: > Bei kseg1_data_mem sollte 0x8000 stehen (also 32k RAM).. ja Das steht da, hab auch schon versucht die procdefs.ld zu kopieren und darin rum zu spielen aber ohne Erfolg. > Vielleicht hilft es, die Heap-Size zu verkleinern, so dass mehr RAM > übrig bleibt (bei mir reichen 1024) Ich habe bei Heap nur 64 in den Einstellungen in MPLABX eingetragen. Das kann doch nicht sein das ich erst den TCP Buffer verkleinern muss damit das funktioniert und compiled. TCPIPConfig.h...
1 | |
2 | |
nur noch 2kb Buffer für nen PIC32? Da wären doch die PIC32MX664 viel zu klein um da jemals TCP und USB gemeinsam nutzen zu können, aber für irgendwas müssen die dinger doch verkauft werden ?? Ich habe gesehen das es ein Virtuellen speicher gibt den man sich umgestalten kann, z.B. mit BMX..... Register. Aber kann das echt sein das ich da erst so ein Aufwand treiben muss um einfach nur TCP da rein zu bekommen?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
