MAS Software Development
This page primarily contains useful and miscellaneous information to a verification engineer (me). However, some of this information is useful for software development as well.
Useful Links
- C++ References:
- Assembly:
Build Code (regress)
Refer to Regress Howto for more detailed information about the regress tool to build and execute test procedures.
Clean the Temporary Files
Component Level:
rm -rf output
OR
common/build-utils/build -c
Tests Level:
rm -rf aarch64-deos arm-deos autom4te.cache config.log config.status configure desk Makefile ppc-deos x86-deos results
OR
common/test-utils/regress reallyClean
Touch Command (to force a rebuild)
Often during test development, the object files may get out of sync with each other. To force a recompile, you can use the ‘touch’ command through a BASH window to update the date stamp which will trigger a recompile. Example:
touch ./databases/tp0054/config.653.xml
Common Build Errors/Warnings
Unused Parameter
If you have a function where one or more arguments are not used, then the compiler will flag it as a warning. To resolve the warning, comment out the unused parameter name as shown below:
void myFunction (uint32_t paramName1, size_t /* paramName2 */, size_t paramName3)
Disable a Known/Acceptable Build Warning
When there is a build warning that is intentional and acceptable, use the following approach to disable the warning:
#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-but-set-variable" Elf32_Word jmpTableEnd = 0; #pragma GCC diagnostic pop
NOTE: Use the actual build warning given in the build.log file. The above is specific for the [-Wunused-but-set-variable] for the intercept-a653.cpp file.
systemTickInUsec
Error message:
pi: Error #5: Feature set (deos653UserGroup), feature (oncePerPlatform) has an assert action that returned false: Table.field (platformAttributes.systemTickInUsec), value (25000), scope () has a value of (12500)
Solution:
Modify the platreg associated with the given platform to use the 25ms tick rate (25000). Example of platreg location: desk/platform/qemu-arm/etc/platreg.pi.xml
ioi-feature-set
Error message:
pi: Error #1: Process Template (tp0047b) uses feature set (ioi-feature-set), which is not present.
pi: Error #2: Process Template (tp0047a) uses feature set (ioi-feature-set), which is not present.
make: *** [../../../common/test-utils/test-makefile.mk:758: tp0047_platreg.s_in] Error 1
Solution:
The test procedure is using ports (sampling/queuing), but the test makefile does not link in the IOI config binary. Find another test that uses sampling or queuing ports and copy the missing part from the makefile. Use BeyondCompare to make this task easier.
Test Harness
Increase/Modify the Test Harness Time
If you want to change the test harness timeout for ALL of the test procedures, then modify the ABORT_TIMEOUT value in the /code/makefile.mk file:
ABORT_TIMEOUT = 120
If you want to change the timeout for a specific test procedure, then modify the TIMEOUT value in the specific makefile:
tp0000_TIMELIMIT = 240
Increasing the value will add additional time to the test harness timeout. This can be useful on platforms (such as qemu) where the tests often take significantly longer than tests executing on the actual hardware.
Assembly
Show Disassembly Code
From a BASH window, navigate to a directory containing the exe and object files. Use the following command:
arm-eabi-objdump -dr x.exe.dbg > x.dis
(where ‘x.exe.dbg’ is the filename in question)