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