We are in the process of testing some code on the EVM in big-endian. It all works just fine on little-endian. We're using 7.3.11 of the compiler and compiling against bare-metal. Our code writes to files using fprintf, which naturally end up on the host. However, the output is full of NULL's, where we expect characters to be. If we fprintf to stderr, we get proper output.
With the Big-Endian code (and 7.3.11 compiler) I am frequently getting nulls written to the files instead of data; and I have added debug code to the system at the point of writing to ensure I did not write nulls to the file.
For some reason, data is not getting flushed, or is being overwritten with nulls on the way to the host file system. The nulls are leading nulls in the file, in the current case that roadblocks me, it is exactly 30 nulls (0x00) and that is precisely how many non-null characters I expect in that position. We do fclose() the file after writing.
I do not have a way to circumvent a faulty file system. If there is something about "fprintf" that is different for big-endian versus little-endian code, I am not aware of it. One of the outputs producing nulls is just
fprintf(fpout, " %d %d", 3, 0);
and this works just fine in little-endian code, and if I add a debug line and fprintf(stderr, " %d %d \n", 3, 0); I get the right output on the screen (nulls still end up in the file).
The only difference on the hardware is SW3-1 flipped, and all the code is being compiled with --big_endian flag.