Tool/software: TI C/C++ Compiler
Hello!
For Debugging-Purposes, I am writing binary-data from my MSP430FR5969 to the Console of Code Composer Studio.
I am using fwrite from the stdio-Library, sending everything to stdout.
This works, but the transmission will abort at the position where a NULL-Byte (0x00) should be send. As I know, this would be only an expected behavior when using fputs. Is this a bug, or am I doing s.th. wrong?
I can reproduce this with the following code. (To get any output on the console, I increased the system stack in Linker Options):
/*
* main.c
* Uses fwrite to output binary data via stdout to the console of Code Composer Studio, but fails when there are zero-bytes (0x00) in the stream and terminates.
* Expected result:
* fwrite should not stop when sending 0x00, this is normaly only done by fput. So the console-Output should be alwas the same length in the following example
*
*/
#include <stdio.h>
#include <msp430.h>
#define BUFFERLEN 16
unsigned char buf[BUFFERLEN];
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
int i=0;
int zeroBytePlace=0;
fwrite("Start", 1, 6, stdout);
while(1){
//Init the Buffer with 0xFF, but one Byte with 0x00
for(i=0; i<BUFFERLEN; i++){
if(i==zeroBytePlace)
buf[i]=0x00;
else
buf[i]=0xFF;
}
zeroBytePlace =(zeroBytePlace+1)%BUFFERLEN;
//Write to Output: Problem: Only the first part of the buffer will be written. At the zeroBytePlace, it will stop
fwrite(buf, 1, BUFFERLEN, stdout);
fflush(stdout);
}
}
My Compiler version:
TI v15.12.4.LTS
Best regards,
Eiko