From 5a521236eddb8a9e3a61edebd2243a70c9ad52ab Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Fri, 29 Sep 2023 08:58:14 -0700 Subject: Actually have ctests run without hanging. --- stm32/unittest/scripts/run_stm32_prog | 5 +++- stm32/unittest/scripts/tst_ldpc_dec_check | 4 +-- stm32/unittest/src/tst_codec2_dec.c | 4 +-- stm32/unittest/src/tst_codec2_enc.c | 2 +- stm32/unittest/src/tst_ldpc_dec.c | 42 +++++++++++++++---------------- stm32/unittest/src/tst_ldpc_enc.c | 20 +++++++-------- stm32/unittest/src/tst_ofdm_demod.c | 6 ++--- 7 files changed, 43 insertions(+), 40 deletions(-) diff --git a/stm32/unittest/scripts/run_stm32_prog b/stm32/unittest/scripts/run_stm32_prog index 18b2c08..ac1e661 100755 --- a/stm32/unittest/scripts/run_stm32_prog +++ b/stm32/unittest/scripts/run_stm32_prog @@ -34,11 +34,13 @@ if [ ${ARGS[--qemu]+_} ]; then # QEMU cat <<-EEOOFF >> gdb_cmds shell killall qemu-system-arm - shell qemu-system-arm -M netduinoplus2 -s -S -semihosting -monitor null -serial null -nographic -kernel ${ELF} 2> >(tee stderr.log >&2) | tee stdout.log & + shell qemu-system-arm -M netduinoplus2 -s -S -semihosting -monitor null -serial null -nographic -kernel ${ELF} & shell sleep ${UT_SLEEP} target remote :1234 monitor arm semihosting enable monitor arm semihosting_fileio $UT_SH_FIO + set logging file stdout.log + set logging on EEOOFF SHUTDOWN="shell killall qemu-system-arm" elif [ ! ${ARGS[--st-util]+_} ]; then @@ -83,6 +85,7 @@ fi cat <<-EEOOFF >> gdb_cmds monitor reset halt monitor adapter speed 4000 + set breakpoint pending on break EndofMain break abort EEOOFF diff --git a/stm32/unittest/scripts/tst_ldpc_dec_check b/stm32/unittest/scripts/tst_ldpc_dec_check index a301798..4521192 100755 --- a/stm32/unittest/scripts/tst_ldpc_dec_check +++ b/stm32/unittest/scripts/tst_ldpc_dec_check @@ -55,9 +55,9 @@ if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "Pass"; else echo "Fail"; let Fails=($Fails + 1); fi # echo -e "\nTarget BER values" -n=$(grep 'Raw.*BER:' stderr.log | cut -d ' ' -f 7) +n=$(grep 'Raw.*BER:' stdout.log | cut -d ' ' -f 7) p1=$(echo $n '<=' ${BER_LIMIT_RAW} | bc) -n=$(grep 'Coded.*BER:' stderr.log | cut -d ' ' -f 7) +n=$(grep 'Coded.*BER:' stdout.log | cut -d ' ' -f 7) p2=$(echo $n '<=' ${BER_LIMIT_CODED} | bc) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "Pass"; else echo "Fail"; let Fails=($Fails + 1); fi diff --git a/stm32/unittest/src/tst_codec2_dec.c b/stm32/unittest/src/tst_codec2_dec.c index 406a84d..2c89ad0 100644 --- a/stm32/unittest/src/tst_codec2_dec.c +++ b/stm32/unittest/src/tst_codec2_dec.c @@ -128,14 +128,14 @@ int main(int argc, char *argv[]) { perror("Error opening input file\n"); exit(1); } - setvbuf(fin, fin_buffer,_IOFBF,sizeof(fin_buffer)); + //setvbuf(fin, fin_buffer,_IOFBF,sizeof(fin_buffer)); FILE *fout = fopen("stm_out.raw", "wb" ); if (fout == NULL) { perror("Error opening output file\n"); exit(1); } - setvbuf(fout, fout_buffer,_IOFBF,sizeof(fout_buffer)); + //setvbuf(fout, fout_buffer,_IOFBF,sizeof(fout_buffer)); frame = 0; diff --git a/stm32/unittest/src/tst_codec2_enc.c b/stm32/unittest/src/tst_codec2_enc.c index f799265..4597a9f 100644 --- a/stm32/unittest/src/tst_codec2_enc.c +++ b/stm32/unittest/src/tst_codec2_enc.c @@ -132,7 +132,7 @@ int main(int argc, char *argv[]) { perror("Error opening input file\n"); exit(1); } - setvbuf(fin, fin_buffer,_IOFBF,sizeof(fin_buffer)); + //setvbuf(fin, fin_buffer,_IOFBF,sizeof(fin_buffer)); FILE* fout = fopen("stm_out.raw", "wb"); if (fout == NULL) { diff --git a/stm32/unittest/src/tst_ldpc_dec.c b/stm32/unittest/src/tst_ldpc_dec.c index f177255..6248d1f 100644 --- a/stm32/unittest/src/tst_ldpc_dec.c +++ b/stm32/unittest/src/tst_ldpc_dec.c @@ -60,7 +60,7 @@ int main(int argc, char *argv[]) { uint8_t out_data[HRA_112_112_CODELENGTH]; struct LDPC ldpc; int data_bits_per_frame; - FILE *fout; + int fout; int iter, total_iters; int Tbits, Terrs, Tbits_raw, Terrs_raw; @@ -68,7 +68,7 @@ int main(int argc, char *argv[]) { semihosting_init(); - fprintf(stderr, "LDPC decode test and profile\n"); + fprintf(stdout, "LDPC decode test and profile\n"); PROFILE_VAR(ldpc_decode); machdep_profile_init(); @@ -113,30 +113,30 @@ int main(int argc, char *argv[]) { Tbits = Terrs = Tbits_raw = Terrs_raw = 0; } - FILE* fin = fopen("stm_in.raw", "rb"); - if (fin == NULL) { - fprintf(stderr, "Error opening input file\n"); - fflush(stderr); + int fin = open("stm_in.raw", O_BINARY | O_RDONLY); + if (fin < 0) { + fprintf(stdout, "Error opening input file\n"); + fflush(stdout); exit(1); } - setvbuf(fin, fin_buffer,_IOFBF,sizeof(fin_buffer)); + //setvbuf(fin, fin_buffer,_IOFBF,sizeof(fin_buffer)); - fout = fopen("stm_out.raw", "wb"); - if (fout == NULL) { - fprintf(stderr, "Error opening output file\n"); - fflush(stderr); + fout = open("stm_out.raw", O_BINARY | O_WRONLY); + if (fout < 0) { + fprintf(stdout, "Error opening output file\n"); + fflush(stdout); exit(1); } - setvbuf(fout, fout_buffer,_IOFBF,sizeof(fout_buffer)); + //setvbuf(fout, fout_buffer,_IOFBF,sizeof(fout_buffer)); float *input_float = calloc(CodeLength, sizeof(float)); nread = CodeLength; - fprintf(stderr, "CodeLength: %d\n", CodeLength); + fprintf(stdout, "CodeLength: %d\n", CodeLength); frame = 0; - while(fread(input_float, sizeof(float) , nread, fin) == nread) { - fprintf(stderr, "frame %d\n", frame); + while(read(fin, input_float, sizeof(float) * nread) == nread * sizeof(float)) { + fprintf(stdout, "frame %d\n", frame); if (testframes) { char in_char; @@ -164,7 +164,7 @@ int main(int argc, char *argv[]) { //fprintf(stderr, "iter: %d\n", iter); total_iters += iter; - fwrite(out_data, sizeof(char), data_bits_per_frame, fout); + write(fout, out_data, sizeof(char) * data_bits_per_frame); if (testframes) { for (i=0; i