Ik ben bezig aan een programma voor een op ARM7-gebaseerde microcontroller. Als compiler gebruik ik de gcc compiler. (arm-elf-gcc versie 3.4.2).
Bedoeling van mijn stukje code: bestaande string inladen, opschuiven om er vervolgens een aantal tekens voor te plaatsen.
Ik had al deze nogal uitgebreide, maar in mijn ogen juiste, code geschreven:
Ik gebruik op een andere plaats van het programma al gelijkaardige code, en daar werkt het zonder problemen. In dit stukje code loopt de microcontroller vast van zodra ik schrijf naar string (ding1 is de laatste uitvoer die ik zie).
Zelfs een super eenvoudige routine als {string[0] = 'a';} (wat dan "aest" zou moeten geven) resulteert in een vastloper.
Identieke stukjes code (hulp van ander forum) met gebruikmakende van pointers of bestaande string-routines resulteren steeds in een vastloper. Zie hier niet direct wat er foutloopt, zeker omdat gelijkaardige code op een andere plaats wel werkt.
Kdacht eventueel nog aan een geheugenprobleem (geheugen vol ofzo), maar weet niet hoe dit te controleren.
Bedoeling van mijn stukje code: bestaande string inladen, opschuiven om er vervolgens een aantal tekens voor te plaatsen.
Ik had al deze nogal uitgebreide, maar in mijn ogen juiste, code geschreven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| Uart0_WriteString(av_BuildString("test")); //routine oproepen
u8* av_BuildString(u8 string[])
{
u8 hoog,laag,len;
len = 0;
while (string[len] != '\0') len++;
len++;
while (len > 0)
{
Uart0_WriteString("ding1");
string[len+2] = string[len-1];
Uart0_WriteString("ding2");
len--;
Uart0_WriteString("ding3");
}
HexToAscii(&hoog, &laag, adres);
string[0] = '!';
string[1] = hoog;
string[2] = laag;
Uart0_WriteString("ding4");
return string;
} |
Ik gebruik op een andere plaats van het programma al gelijkaardige code, en daar werkt het zonder problemen. In dit stukje code loopt de microcontroller vast van zodra ik schrijf naar string (ding1 is de laatste uitvoer die ik zie).
Zelfs een super eenvoudige routine als {string[0] = 'a';} (wat dan "aest" zou moeten geven) resulteert in een vastloper.
Identieke stukjes code (hulp van ander forum) met gebruikmakende van pointers of bestaande string-routines resulteren steeds in een vastloper. Zie hier niet direct wat er foutloopt, zeker omdat gelijkaardige code op een andere plaats wel werkt.
Kdacht eventueel nog aan een geheugenprobleem (geheugen vol ofzo), maar weet niet hoe dit te controleren.