On 3/12/2015 12:45 PM, Gedare Bloom wrote: > On Thu, Mar 12, 2015 at 1:41 PM, Joel Sherrill > <joel.sherr...@oarcorp.com> wrote: >> Hi >> >> Many BSPs can link a test but don't actually have enough memory >> to run the test. They will fail in the first few lines when the requested >> memory for the RTEMS work area is not available. I hacked together >> a script which adds together the code, data, bss, work space and >> stack space requested. If this exceeds physical memory on the board, >> then the test will fail. It is possible to come close and still run out of >> memory during initialization (e.g. malloc, etc) but this approach could >> detect some tests which will fail by inspecting them on the host. >> >> This is a shell script but would be better built into the rtems-tools >> and using the gdb/mi. Combined with information on the >> available memory on the target, we could throw out some obvious >> failure cases without touching hardware. >> >> Thoughts? >> > Would it be worthwhile to instrument our build (post-link) to do > something like this? I think it is worth doing something with this. We need to know a few things about a BSP to do this in the general case:
+ Is code loaded into RAM? If not, it doesn't need to be taken into account. + How much RAM is there? + In some cases, the program may not load at offset 0 of RAM and there could be a reserved area. One case is m68k BSPs which sometimes load at 0x3000 or 0x4000 to leave space for a ROM monitor. We could ignore this factor and just take a hit when it is run. But it definitely could avoid running some tests which are guaranteed to fail. Consider this output: $ sh ../rtsize v850 ./v850-rtems4.11/c/v850sim/testsuites/fstests/fsdos*/*.exe 216338 ./v850-rtems4.11/c/v850sim/testsuites/fstests/fsdosfsformat01/fsdosfsformat01.exe 1259536 ./v850-rtems4.11/c/v850sim/testsuites/fstests/fsdosfsname01/fsdosfsname01.exe There is only 1MB RAM for the simulator. The second test is doomed. It will not run. The first may run. >> =============================== >> #! /bin/sh >> >> if [ $# -le 2 ] ; then >> echo "Usage: $0 ARCH EXE ..." >> exit 1 >> fi >> >> ARCH=$1 >> shift >> >> target=${ARCH}-rtems4.11 >> type ${ARCH}-rtems4.11-size >/dev/null 2>&1 >> if [ $? -ne 0 ] ; then >> echo "${ARCH} does not appear to have RTEMS 4.11 tools installed" >> exit 1 >> fi >> >> >> extract_size() >> { >> ( echo "p Configuration.work_space_size" ; \ >> echo "quit" ) | ${target}-gdb ${exe} 2>&1 | grep "\$1" | \ >> cut -d'=' -f2 >> } >> >> for exe in $* >> do >> image_size=`${target}-size ${exe} | tail -1 | cut -f4` >> wkspace_size=`extract_size Configuration.work_space_size` >> stackspace_size=`extract_size Configuration.stack_space_size` >> >> #echo ${image_size} ${wkspace_size} ${stackspace_size} >> >> total=`echo ${image_size} ${wkspace_size} + ${stackspace_size} + p | dc` >> echo ${total} ${exe} >> done >> >> exit 0 >> >> =============================== >> >> -- >> Joel Sherrill, Ph.D. Director of Research & Development >> joel.sherr...@oarcorp.com On-Line Applications Research >> Ask me about RTEMS: a free RTOS Huntsville AL 35805 >> Support Available (256) 722-9985 >> >> >> _______________________________________________ >> devel mailing list >> devel@rtems.org >> http://lists.rtems.org/mailman/listinfo/devel -- Joel Sherrill, Ph.D. Director of Research & Development joel.sherr...@oarcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel