1Title: Shared Floating Point Support 2 3Description: 4 5The Shared Floating Point Support test uses two tasks to: 6 7 1) load and store floating point registers and check for corruption 8 2) independently compute pi and check for any errors 9 10This tests the ability of tasks to safely share floating point hardware 11resources, even when switching occurs preemptively (note that both sets of 12tests run concurrently even though they report their progress at different 13times). 14 15The demonstration utilizes semaphores, round robin scheduling, and floating 16point support. 17 18-------------------------------------------------------------------------------- 19 20Building and Running Project: 21 22This project outputs to the console. It can be built and executed 23on QEMU as follows: 24 25 make run 26 27-------------------------------------------------------------------------------- 28 29Troubleshooting: 30 31Problems caused by out-dated project information can be addressed by 32issuing one of the following commands then rebuilding the project: 33 34 make clean # discard results of previous builds 35 # but keep existing configuration info 36or 37 make pristine # discard results of previous builds 38 # and restore pre-defined configuration info 39 40-------------------------------------------------------------------------------- 41 42Advanced: 43 44Depending upon the board's speed, the frequency of test output may range from 45every few seconds to every few minutes. The speed of the test can be controlled 46through the variable PI_NUM_ITERATIONS (default 700000). Lowering this value 47will increase the test's speed, but at the expense of the calculation's 48precision. 49 50 make run PI_NUM_ITERATIONS=100000 51 52-------------------------------------------------------------------------------- 53 54Sample Output: 55 56*** Booting Zephyr OS build zephyr-v2.2.0-845-g8b769de30317 *** 57Running test suite fpu_sharing 58=================================================================== 59starting test - test_load_store 60Load and store OK after 0 (high) + 63 (low) tests 61Load and store OK after 100 (high) + 6540 (low) tests 62Load and store OK after 200 (high) + 12965 (low) tests 63Load and store OK after 300 (high) + 19366 (low) tests 64Load and store OK after 400 (high) + 25756 (low) tests 65Load and store OK after 500 (high) + 32128 (low) tests 66PASS - test_load_store 67=================================================================== 68starting test - test_pi 69Pi calculation OK after 50 (high) + 10 (low) tests (computed 3.141598) 70Pi calculation OK after 150 (high) + 31 (low) tests (computed 3.141598) 71Pi calculation OK after 250 (high) + 51 (low) tests (computed 3.141598) 72Pi calculation OK after 350 (high) + 72 (low) tests (computed 3.141598) 73Pi calculation OK after 450 (high) + 92 (low) tests (computed 3.141598) 74PASS - test_pi 75=================================================================== 76Test suite fpu_sharing succeeded 77=================================================================== 78PROJECT EXECUTION SUCCESSFUL 79