I’m bringing up toolchain at our company to run model inference on Ethos-U85. I was able to build and run the use cases in ml-embedded-evaluation-kit on FVP SSE-320. Our internal testing framework requires parameter passing to the executable running on the bare metal, so I used the following to pass arguments in command line:
FVP_Corstone_SSE-320 \
-C mps4_board.visualisation.disable-visualisation=1 \
-C vis_hdlcd.disable_visualisation=1 \
-C mps4_board.telnetterminal0.start_telnet=0 \
-C mps4_board.uart0.out_file=- \
-C mps4_board.uart0.shutdown_on_eot=1 \
-C mps4_board.subsystem.cpu0.semihosting-enable=1 \
-C mps4_board.subsystem.cpu0.semihosting-cwd=/tmp \
-C mps4_board.subsystem.cpu0.semihosting-cmd_line="/tmp/model_runner arg1 arg2" \
--stat \
-a /tmp/model_runner
But the arguments (arg1 arg2) are not passed to the main function. Not only it doesn’t work in our internal code, it doesn’t work in the example code in ml-embedded-evaluation-kit, either. If I add the following code in the main function
info("argc = %d\n", argc);
for (int i = 0; i < argc; i++) {
info("argv[%d] = %s\n", i, argv[i]);
}
The output on FVP SSE-320 is
INFO - argc = 0
No output of argv[]
.
Any clue on how to solve this issue?
Parameter passing on FVP SSE-300 works fine for us. The command line used is:
FVP_Corstone_SSE-300 \
-C mps3_board.visualisation.disable-visualisation=1 \
-C mps3_board.telnetterminal0.start_telnet=0 \
-C mps3_board.uart0.out_file=- \
-C mps3_board.uart0.shutdown_on_eot=1 \
-C cpu0.semihosting-enable=1 \
-C cpu0.semihosting-cwd=/tmp \
-C cpu0.semihosting-cmd_line="/tmp/model_runner arg1 arg2" \
--stat \
-a /tmp/model_runner