aboutsummaryrefslogtreecommitdiff
path: root/readme.md
blob: e79b18611b7c092e436c5cb9f070c7b4bebf97d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
Readme
======

Copyright (c) 2011-2018, Arm Limited. All rights reserved.

References
----------

[1] Power Control System Architecture - DEN0050B (Please contact Arm directly to
obtain a copy of this document)

[2] [System Control and Management Interface - DEN0056A](http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/DEN0056A_System_Control_and_Management_Interface.pdf)

[3] Power Policy Unit - DEN0051C (Please contact Arm directly to obtain a copy
of this document)

[4] [System Guidance](https://developer.arm.com/products/system-design/system-guidance)

Introduction
------------

There is a strong trend in the industry to provide microcontrollers in systems
to abstract various power, or other system management tasks, away from
application processors (AP). The Power Control System Architecture (PCSA) [1]
describes how systems can be built following this approach.

The PCSA defines the concept of the System Control Processor (SCP), a dedicated
processor that is used to abstract power and system management tasks away from
application processors.

Similar to the SCP, the Manageability Control Processor (MCP) follows the same
approach with the goal of providing a management entry-point to the System on
Chip (SoC) where manageability is required, such as on a SoC targeting servers.

SCP-firmware provides a software reference implementation for the System Control
Processor (SCP) and Manageability Control Processor (MCP) components found in
several Arm Compute Sub-Systems.

Prerequisites (Tools)
---------------------

To properly build SCP/MCP firmware for a target product, the following tools are
required:

- Git
- [GNU Arm Embedded Toolchain ("6-2017-q2-update" or later)](https://developer.arm.com/open-source/gnu-toolchain/gnu-rm)
- GNU Make
- Python 3 (3.5.0 or later)

In addition, the following tools are recommended:

- Doxygen (1.8.0 or later): Required to build supporting documentation
- GCC (6.0 or later): Required to build framework tests that run on the build
    host

Prerequisites (CMSIS Libraries)
-------------------------------

SCP-firmware requires the use of components from the Cortex Microcontroller
System Interface Standard (CMSIS) Software Pack, specifically the CMSIS Core
and CMSIS Real-Time Operating System (RTOS) components. The CMSIS Software pack
is included as a Git submodule.

To retrieve the CMSIS Software pack, just initialize and update the submodule
of the repository.

    $> git submodule update --init

The required CMSIS components are now present and the correct version has been
selected.

Documentation
-------------

If Doxygen is available on the system containing SCP-firmware then comprehensive
documentation can be generated. The complete set of documentation is compiled
into bundles in HTML, LaTeX, and XML formats and placed in the *build/doc*
directory. This documentation includes:

- A *Readme* section (the content of this file)
- The BSD-3-Clause license under which this software and supporting files are
    distributed
- An overview of the framework on which SCP-firmware is written,
    including information on how components of the software must interact with
    the framework and with each other.
- An overview of the build system and the project directory structure
- The project's coding style
- Source documentation for the SCP-firmware framework
- Source documentation for modules that are distributed as part of the product

From within the SCP-firmware root directory Doxygen can be invoked using the
top-level Makefile:

    $> make doc

Building Products
-----------------
To build a product the basic command format for invoking 'make' is:

    $> make [TARGET] <PRODUCT=<name>> [OPTIONS]

It is not necessary to provide a target since the default target for the product
will build all the firmware contained within the product.

The 'help' target provides further information on the arguments that can be
given:

    $> make help

The framework includes a suite of tests that validate its core functionality.
These can be run on the build host using:

    $> make test

For more guidance on the build system, refer to the full set of documentation
that includes the 'Build System' chapter.

License
-------

The software is provided under a [BSD-3-Clause license](https://spdx.org/licenses/BSD-3-Clause.html).

Feedback and Support
--------------------

Arm welcomes any feedback on SCP-firmware. Please contact the maintainers (
see [maintainers.md](./maintainers.md)).

To request support please contact Arm by email at support@arm.com. Arm licensees
may also contact Arm via their partner managers.