Skip to content

Latest commit

 

History

History
240 lines (193 loc) · 10.1 KB

software_support.rst

File metadata and controls

240 lines (193 loc) · 10.1 KB

Software Support

The Open Hardware Group's Software Task Group supports the software ecosystem.

Software Validation System

The core-v-mcu project has a FreeRTOS/Eclipse based project that runs software on the emulation system to verify the correct operation of the system. The software validation system is in the core-v-mcu-cli-test repo. There are two components:

  • a FreeRTOS/Eclipse app called cli-test that uses a Command Line Interface to exercise features
  • a Python script that automates using the cli-test to validate correct system operation

Goals of the System Validation Tests

The goals of the whole product tests are to:

  • Confirm that the entire address space is accessible by the core
    • All of the TCDM
    • All of the peripheral registers
    • All special registers
  • Confirm that gdb can:
    • halt and resume the core
    • can single step the core
    • access entire addressable memory space
      • memories
      • peripherals
      • CSRS
    • NOTE: for performance reasons, may use gdb for sampling test and another mechanism for exhaustive testing
  • Confirm that the interrupts work as expected:
    • All sources
    • Masking
  • Confirm that the timers work as expected:
    • TBD
  • Confirm that the clock trees & divisors work as expected:
    • Can set FLL to desired frequency
    • Clock tree enables work
    • Clock tree divisors work
  • uDMA
    • Covered by peripheral tests
  • Peripherals (details later in document)
    • UART
    • I2Cm
    • I2Cs
    • SPIm
    • QSPIm
    • CAMI
    • GPIO
    • PWM
  • EFPGA
    • TCMD
    • APB
    • Math blocks
    • IO
    • Configuration
    • Test mode
  • Confirm I/O control works as expected:
    • Peripherals can access I/O
    • GPIO can access all I/O
    • EFPGA can access all I/O
    • Mux select works properly
    • All IO configurations can be set properly
  • Test modes
    • Confirm JTAG can be set in scan mode
    • Confirm JTAG can be set in mem BIST mode
    • Confirm JTAG can be set in EFPGA test mode
  • Significant application
    • TfLu person detection application reading from HiMax camera and using eFPGA acceleration

Peripheral tests

Peripheral tests use the specified peripherals (typically PMOD) to confirm correct system operation.

UART tests

Pmod used for regression testing: PmodUSBUART

Type Mode Notes
Blocking    
  Set config baud, stop, bits, parity
  Read char  
  Write char  
  Read N char  
  Write N char  
  Read through '\n'  
  Rx empty  
  Tx empty  
  Wait for idle  
Non-blocking    

I2Cmaster

Pmod used for regression testing: PmodRTCC (has small SRAM)

Type Mode Notes
Blocking    
  Set clock frequency  
  Wait for idle  
  Read register  
  Read non-existant register Test NAK handling
  Write register  
  Write non-existant register Test NAK handling
  Read N of M registers, M >= N  
  Read N of M registers, M < N Test NAK handling
  Write N of M registers, M >= N  
  Write N of M registers, M < N Test NAK handling
Not tested    
  Clock stretching  

I2Cslave

Note: APIs are on host, so used for purposes of describing tested functionality

Type Mode Notes
  Read register  
  Read non-existant register Test NAK handling
  Write register  
  Write non-existant register Test NAK handling
  Read N of M registers, M >= N  
  Read N of M registers, M < N Test NAK handling
  Write N of M registers, M >= N  
  Write N of M registers, M < N Test NAK handling

QSPImaster

Pmod used for regression testing: PmodSF3 (serial NOR flash memory)

Type Mode Notes
Blocking    
  Set configuration clock rate, cpol, cpha, endianness, cs#
  Wait for idle  
Non-blocking    
  Write N bytes in single bit mode  
  Write N bytes in dual bit mode  
  Write N bytes in quad bit mode  
  Read N bytes in single bit mode  
  Read N bytes in dual bit mode  
  Read N bytes in quad bit mode  
  Write/Read N bytes in single mode  

CAMI

GPIO

PWM