Hardware/Software Co-Design
Integrated circuits, simulation, drivers, applications and compilers specific to a purpose are often described as the main aspects of co-designing1 hardware and software.
In PSI spec, however, we look at a different dimension: How are hardware and software combined as platforms and systems?
Platforms and Systems
There are multiple kinds of patforms and systems. In PSI spec, we are concerned with hardware and software platforms that are based on application processors with peripherals and designed as a System on Chip. We look at aspects of such platforms and how they provide interfaces for versatile operating systems.
Note
The two terms are closely related, often viewed as the same thing, and very abstract. In the following, a platform is more specific.
A system is a set of rules and multiple components that work together2.
A compute platform is a system with a specific set of interfaces3.
Hardware
A hardware system comprises processing units, memories and peripherals connected via buses and/or networks.
A hardware platform is a specific implementation of instruction sets and interfaces, such as processing unit control registers, shared memory, peripheral register blocks and mailboxes, e.g. the Allwinner D14. In a broader sense, this may include a board or an entire product.
Software
A software system is a kernel or firmware runtime with its drivers and libraries communicating via APIs.
A software platform is a software system, such as an operating system or firmware, with its interfaces applied to a specific instruction set, e.g., FreeBSD on RISC-V5.