Microchip® Advanced Software Framework

icm.h File Reference

SAM Integrity Check Monitor (ICM).

Copyright (c) 2013-2018 Microchip Technology Inc. and its subsidiaries.

#include "compiler.h"
#include "status_codes.h"

Data Structures

struct  icm_config
 Basic configuration for ICM. More...
 
struct  icm_region_descriptor_main_list
 ICM region descriptor in main list. More...
 
struct  icm_region_descriptor_sec_list
 ICM region descriptor in secondary list. More...
 
struct  icm_region_descriptor_main_list::rcfg
 The configuration value of the region. More...
 

Typedefs

typedef void(* icm_callback_t )(uint8_t)
 Interrupt event callback function type. More...
 

Enumerations

enum  icm_algo {
  ICM_SHA_1 = 0,
  ICM_SHA_224 = 4,
  ICM_SHA_256 = 1
}
 The SHA Algorithm definition. More...
 
enum  icm_interrupt_source {
  ICM_INTERRUPT_RHC = 0,
  ICM_INTERRUPT_RDM,
  ICM_INTERRUPT_RBE,
  ICM_INTERRUPT_RWC,
  ICM_INTERRUPT_REC,
  ICM_INTERRUPT_RSU,
  ICM_INTERRUPT_URAD,
  _ICM_NUM_OF_INTERRUPT_SOURCE,
  ICM_INTERRUPT_ALL = 0x1FFFFFFF
}
 ICM interrupt source type. More...
 
enum  icm_region_num {
  ICM_REGION_NUM_0 = 0,
  ICM_REGION_NUM_1,
  ICM_REGION_NUM_2,
  ICM_REGION_NUM_3,
  _ICM_NUM_OF_REGION
}
 The region number definition. More...
 

Functions

void icm_disable (Icm *p_icm)
 Disable ICM. More...
 
static void icm_disable_interrupt (Icm *p_icm, uint32_t ul_sources)
 ICM disable interrupt. More...
 
void icm_enable (Icm *p_icm)
 Enable ICM. More...
 
static void icm_enable_interrupt (Icm *p_icm, uint32_t ul_sources)
 ICM enable interrupt. More...
 
static uint32_t icm_get_interrupt_mask (Icm *p_icm)
 Get ICM interrupt mask. More...
 
static uint32_t icm_get_interrupt_status (Icm *p_icm)
 Get ICM interrupt status. More...
 
static uint32_t icm_get_status (Icm *p_icm)
 Get the ICM status. More...
 
static uint32_t icm_get_urat (Icm *p_icm)
 Get ICM Undefined Register Access Trace. More...
 
void icm_init (Icm *p_icm, struct icm_config *icm_cfg)
 Initialize ICM with specified configuration. More...
 
static void icm_region_disable_monitor (Icm *p_icm, enum icm_region_num reg_num)
 Disable Region Monitoring. More...
 
static void icm_region_enable_monitor (Icm *p_icm, enum icm_region_num reg_num)
 Enable Region Monitoring. More...
 
status_code_t icm_region_recompute_hash (Icm *p_icm, enum icm_region_num reg_num)
 Recompute internal hash. More...
 
static void icm_reset (Icm *p_icm)
 Reset ICM. More...
 
void icm_set_algo (Icm *p_icm, enum icm_algo algo)
 Set hash algorithm. More...
 
void icm_set_callback (Icm *p_icm, icm_callback_t callback, enum icm_region_num reg_num, enum icm_interrupt_source interrupt_source, uint8_t irq_level)
 ICM interrupt callback function. More...
 
static void icm_set_hash_area_addr (Icm *p_icm, uint32_t addr)
 Set Hash Area Start Address. More...
 
void icm_set_hash_value (Icm *p_icm, uint32_t *p_value)
 Set Initial Hash Value. More...
 
static void icm_set_reg_des_addr (Icm *p_icm, uint32_t addr)
 Set Descriptor Area Start Address. More...