zephyr/tests/boards/intel_s1000_crb/main
Andy Ross 64cf33952d arch/xtensa: Add non-HAL caching primitives
The Xtensa L1 cache layer has straightforward semantics accessible via
single-instructions that operate on cache lines via physical
addresses.  These are very amenable to inlining.

Unfortunately the Xtensa HAL layer requires function calls to do this,
leading to significant code waste at the calling site, an extra frame
on the stack and needless runtime instructions for situations where
the call is over a constant region that could elide the loop.  This is
made even worse because the HAL library is not built with
-ffunction-sections, so pulling in even one of these tiny cache
functions has the effect of importing a 1500-byte object file into the
link!

Add our own tiny cache layer to include/arch/xtensa/cache.h and use
that instead.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-03-08 11:14:27 -05:00
..
src arch/xtensa: Add non-HAL caching primitives 2021-03-08 11:14:27 -05:00
CMakeLists.txt
README.txt
prj.conf
testcase.yaml

README.txt

Title: Intel S1000 CRB tests

Description:

This test illustrates the various features enabled on Intel S1000 CRB.

Features exhibited in this test set
============================

GPIO toggling
  - GPIO_23 configured as input
  - GPIO_24 configured as output and interrupt capable
  - GPIO_23 and GPIO_24 are shorted
  - Upon toggling GPIO_23, GPIO_24 also changes state appropriately and
    also calls its callback function if interrupt is configured

I2C slave communication
  - Intel S1000 CRB I2C configured as master, 7 bit mode, standard speed
  - 2 LED matrices are configured as slaves
  - The LED matrices are written over I2C to emit blue light and red
    light alternately
  - Read functionality verified by reading LED0 after every write and
    dumping the result on to the console

Interrupt handling
  - All peripheral interrupts are enabled by default
  - Each peripheral interrupt can be disabled by calling irq_disable().
    For e.g. GPIO IRQ can be disabled by calling "irq_disable(GPIO_DW_0_IRQ);"

UART prints
  - Displays the various prints dumped to the console by the above modules

---------------------------------------------------------------------------

Building and Running Project:

This project outputs to the console.  It can be built and executed
on Intel S1000 CRB using the flyswatter2 as follows:

    make flash

---------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    make clean          # discard results of previous builds
                        # but keep existing configuration info
or
    make pristine       # discard results of previous builds
                        # and restore pre-defined configuration info

---------------------------------------------------------------------------

Sample Output:

***** BOOTING ZEPHYR OS v1.9.99-intel_internal - BUILD: Oct 31 2017 14:48:57 *****
Sample app running on: xtensa Intel S1000 CRB
Reading GPIO_24 = 0
LED0 = 10
GPIO_24 triggered
Reading GPIO_24 = 1
LED0 = 41