1===============================================================================
2# mpfs_hal
3===============================================================================
4
5The PolarFire-SoC MSS HAL provides the initial boot code, interrupt handling,
6and hardware access methods for the MPFS MSS. The terms PolarFire-SoC HAL and
7MPFS HAL are used interchangeably but in the main the term PolarFire-SoC MSS HAL
8is preferred.
9The PolarFire-SoC MSS hal is a combination of C and assembly source code.
10
11The mpfs_hal folder is included in an PolarFire Embedded project under the
12platform directory.
13
14It contains :
15
16* Start-up code executing from reset
17* Interrupt handling support
18* Exception handling support
19* Memory protection configuration, PMP and MPU
20* DDR configuration
21* SGMII configuration
22* MSSIO setup
23
24## Inputs to the mss_hal
25There are two configuration sources.
26
271. Libero design
28
29   Libero input through header files located in the config/hardware under the
30   platform directory. These files are generated using the PF SoC embedded
31   software configuration generator. It takes an xml file generated in the Libero
32   design flow and produces header files based on the xml content in a suitable
33   form for consumption by the hal.
34
352. Software configuration
36   Software configuration settings are located in the mpfs_hal_config folder.
37
38
39### Example Project directory structure, showing where mpfs_hal folder sits.
40
41~~~~
42
43  +---------+
44  | project |
45  +----+----+ +---------+      +-----------+
46       +-----+| src     |----->|application|
47              +---------+  |   +-----------+
48                           |
49                           |   +-----------+
50                           +-->|boards     |
51                           +   +----+------+
52                           |        |          +---------------+
53                           |        +---------+|icicle-kit-es  |
54                           |                   +---+-----------+
55                           |                       |
56                           |                       |  +---------------+
57                           |                       +->|platform_config|
58                           |                       |  +---------------+
59                           |                       |
60                           |                       |         +---------------+
61                           |                       |---------|drivers_config |
62                           |                       |         +---------------+
63                           |                       |
64                           |                       |         +---------------+
65                           |                       |---------|linker         |
66                           |                       |         +---------------+
67                           |                       |
68                           |                       |         +---------------+
69                           |                       |---------|mpfs_hal_config|
70                           |                       |         +---------------+
71                           |                       |
72                           |                       |
73                           |                       | +---------------+
74                           |                       +>|soc_config     |
75                           |                       | +---+-----------+
76                           |                       |     |
77                           |                       |     |  +---------------+------------------------+
78                           |                       |     +->|multiple folders with fpga config for sw|
79                           |                       |        +----------------------------------------+
80                           |                       |
81                           |                       |
82                           |                       |
83                           |                       | +---------------+
84                           |                       +>|soc_fpga_design|
85                           |                         +--+------------+
86                           |                            |
87                           |                            |   +---------------+
88                           |                            +-->|libero_tcl     |
89                           |                            |   +---------------+
90                           |                            |
91                           |   +-----------+            |   +---------------+
92                           +--+|middleware +            +-->|xml            |
93                           |   +-----------+                +---------------+
94                           |
95                           +
96                           |   +-----------+
97                           +--+|platform   |
98                               +----+------+
99                                    |          +---------------+
100                                    +---------+|drivers        |
101                                    |          +---------------+
102                                    |
103                                    |          +---------------+
104                                    +---------+|hal            |
105                                    |          +---------------+
106                                    |
107                                    |          +---------------+
108                                    +---------+|mpfs_hal       |
109                                    |          +---------------+
110                                    |
111                                    |          +-------------------------+
112                                    +---------+|platform_config_reference|
113                                    |          +-------------------------+
114                                    |
115                                    |          +---------------------+
116                                    +---------+|soc_config_generator |
117                                               +---------------------+
118~~~~
119
120Please see the user guide for further details on
121use.
122