Kinetis Bootloader  2.0.0
Common bootloader for Kinetis devices
bl_app_crc_check.h
1 /*
2  * Copyright (c) 2014 - 2015, Freescale Semiconductor, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * o Redistributions of source code must retain the above copyright notice, this list
9  * of conditions and the following disclaimer.
10  *
11  * o Redistributions in binary form must reproduce the above copyright notice, this
12  * list of conditions and the following disclaimer in the documentation and/or
13  * other materials provided with the distribution.
14  *
15  * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #ifndef __APP_CRC_CHECK_H__
32 #define __APP_CRC_CHECK_H__
33 
34 #include <stdint.h>
35 #include "bootloader_common.h"
36 
39 
41 // Declarations
43 
46 {
50  MAKE_STATUS(kStatusGroup_AppCrcCheck, 2),
52  MAKE_STATUS(kStatusGroup_AppCrcCheck,
53  3),
55  MAKE_STATUS(kStatusGroup_AppCrcCheck, 4)
56 };
57 
59 typedef struct _crc_checksum_header
60 {
61  uint32_t tag;
62  uint32_t crcStartAddress;
63  uint32_t crcByteCount;
64  uint32_t crcExpectedValue;
66 
68 // Prototypes
70 
71 #if __cplusplus
72 extern "C" {
73 #endif
74 
76 
77 
78 #if BL_FEATURE_CRC_ASSERT
81 #endif
82 
84 void init_crc_check_status(property_store_t *propertyStore);
85 
88 
90 uint32_t calculate_application_crc32(crc_checksum_header_t *header, uint32_t crcHeaderStart);
91 
93 
94 #if __cplusplus
95 }
96 #endif
97 
99 
100 #endif // __APP_CRC_CHECK_H__
101 // EOF
_crc_check_status
Application crc check status codes.
Definition: bl_app_crc_check.h:45
uint32_t crcByteCount
[08:0b]
Definition: bl_app_crc_check.h:63
uint32_t crcStartAddress
[04:07]
Definition: bl_app_crc_check.h:62
uint32_t tag
[00:03] Tag value used to validate the bootloader configuration data. Must be set to &#39;kcfg&#39;...
Definition: bl_app_crc_check.h:61
void restore_crc_check_failure_pin(void)
Restore crc check failure pin to default state.
Definition: bl_app_crc_check.c:62
Crc check is valid but failed.
Definition: bl_app_crc_check.h:48
uint32_t crcExpectedValue
[0c:0f]
Definition: bl_app_crc_check.h:64
Crc check is invalid, As the BCA is invalid or crc parameters are unset (all 0xff bytes)...
Definition: bl_app_crc_check.h:51
Crc check is inactive, Needs to be verified.
Definition: bl_app_crc_check.h:49
Application crc check status group number (104).
Definition: bootloader_common.h:147
bool is_application_crc_check_pass(void)
Compare the CRC on a range of flash(specified in BCA) against a precomputed CRC value(stored in the B...
Definition: bl_app_crc_check.c:152
uint32_t calculate_application_crc32(crc_checksum_header_t *header, uint32_t crcHeaderStart)
Calculate CRC checksum according to specified checksum header.
Definition: bl_app_crc_check.c:91
Crc check is valid but addresses are out of range.
Definition: bl_app_crc_check.h:54
Crc check is valid and passed.
Definition: bl_app_crc_check.h:47
CRC Checksum Header.
Definition: bl_app_crc_check.h:59
void init_crc_check_status(property_store_t *propertyStore)
Initialize crc check status property based on BCA related fields.
Definition: bl_app_crc_check.c:75
Structure of property store.
Definition: property.h:276