1 /* 2 $License: 3 Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. 4 $ 5 */ 6 7 /****************************************************************************** 8 * 9 * $Id:$ 10 * 11 *****************************************************************************/ 12 13 /** 14 * @defgroup ML_LOAD_DMP 15 * 16 * @{ 17 * @file ml_load_dmp.c 18 * @brief functions for writing dmp firmware. 19 */ 20 #include <stdio.h> 21 22 #undef MPL_LOG_TAG 23 #define MPL_LOG_TAG "MPL-loaddmp" 24 25 #include "ml_load_dmp.h" 26 #include "log.h" 27 #include "mlos.h" 28 29 #define LOADDMP_LOG MPL_LOGI 30 #define LOADDMP_LOG MPL_LOGI 31 32 #define NUM_LOCAL_KEYS (sizeof(dmpTConfig)/sizeof(dmpTConfig[0])) 33 #define NUM_LOCAL_KEYS (sizeof(dmpTConfig)/sizeof(dmpTConfig[0])) 34 #define NUM_LOCAL_KEYS (sizeof(dmpTConfig)/sizeof(dmpTConfig[0])) 35 #define DMP_CODE_SIZE 2943 36 #define FIFO_SIZE 1024 37 #define RESERVED_SIZE 32 38 #define MEMORY_SIZE 1024*4 39 #define DMP_SIZE_AVAILABLE (MEMORY_SIZE - FIFO_SIZE - RESERVED_SIZE - DMP_CODE_SIZE) 40 #if DMP_SIZE_AVAILABLE < 0 41 #error "DMP image size is larger than available memory" 42 #endif 43 44 static const unsigned char dmpMemory[DMP_CODE_SIZE] = { 45 /* bank # 0 */ 46 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 47 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x10, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x0a, 48 0x06, 0xb8, 0x81, 0xa1, 0xe1, 0x89, 0xb2, 0x78, 0x37, 0xf8, 0x5a, 0x9c, 0xcf, 0xdd, 0x85, 0x3b, 49 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 50 0x01, 0xf0, 0x19, 0x80, 0x40, 0x00, 0x00, 0x00, 0x02, 0xca, 0xe3, 0x09, 0x3e, 0x80, 0x00, 0x00, 51 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 52 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x6e, 0x00, 0x00, 0x06, 0x92, 0x0a, 0x16, 0xc0, 0xdf, 53 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 54 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x2b, 0x00, 0x00, 0x16, 0x57, 0x00, 0x00, 0x03, 0x59, 55 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xfa, 0x00, 0x02, 0x6c, 0x1d, 0x36, 0x66, 0x66, 0x66, 56 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 57 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 58 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 59 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdb, 0xe2, 0xb9, 0x3b, 0x7b, 0x11, 0x7b, 0x32, 0x57, 0x83, 0x7b, 60 /* bank # 1 */ 61 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xeb, 0x85, 0x3f, 0xae, 0x14, 0x7b, 62 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 63 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 64 0x00, 0x00, 0x10, 0x72, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 65 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xff, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 66 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x58, 0x05, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 67 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 68 0x08, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x80, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 69 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 70 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 71 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 72 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x6a, 0x00, 0x00, 0x00, 0x00, 73 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 74 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 75 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 76 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 77 /* bank # 2 */ 78 0x00, 0x00, 0x00, 0x00, 0x01, 0x47, 0xae, 0x14, 0x3e, 0xb8, 0x51, 0xec, 0x00, 0x0f, 0x00, 0x00, 79 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 80 0x00, 0x00, 0x00, 0x14, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 81 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 82 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 83 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 84 0x00, 0x06, 0x74, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 85 0x0e, 0x41, 0x28, 0x14, 0xc5, 0xaf, 0x3e, 0xf2, 0x59, 0xd9, 0x4a, 0x5f, 0xc2, 0x36, 0xd9, 0x51, 86 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 87 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 88 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 89 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 90 0x00, 0x1b, 0x00, 0x00, 0x00, 0xd9, 0xe8, 0x3e, 0x30, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 91 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 92 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 93 0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 94 /* bank # 3 */ 95 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 96 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x18, 0x74, 0x70, 97 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x10, 0x00, 0x96, 0x00, 0x3c, 98 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 99 0x0c, 0xb3, 0x12, 0xb4, 0xcc, 0x0f, 0x1e, 0x1b, 0x51, 0xa0, 0xa3, 0x45, 0xc5, 0xad, 0x1e, 0x16, 100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 101 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 103 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 104 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x18, 0x85, 0x00, 0x00, 0x40, 0x00, 105 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 106 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 107 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 108 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 109 0x00, 0x00, 0x00, 0x00, 0x67, 0x7d, 0xdf, 0x7e, 0x72, 0x90, 0x2e, 0x55, 0x4c, 0xf6, 0xe6, 0x88, 110 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 111 112 /* bank # 4 */ 113 0xd8, 0xb0, 0xb5, 0xb9, 0xf3, 0xa6, 0xf8, 0xf9, 0xd1, 0xd9, 0x81, 0x96, 0xf8, 0xf7, 0x3e, 0xd8, 114 0xf3, 0xb1, 0x86, 0x96, 0xa3, 0x31, 0xd1, 0xda, 0xf1, 0xff, 0xd8, 0xb9, 0xb1, 0xb4, 0xa7, 0x87, 115 0x9d, 0xd0, 0xf7, 0x4a, 0xf3, 0x40, 0xb8, 0xb0, 0xf7, 0xa8, 0x8d, 0x91, 0x6a, 0x8d, 0x90, 0x5f, 116 0x98, 0x4a, 0xb9, 0xf2, 0xa6, 0xd0, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4, 0x07, 0xd8, 0xf3, 0xb8, 0xa8, 117 0xf9, 0xdb, 0xfb, 0xf7, 0xb9, 0xb1, 0xa7, 0x87, 0x9d, 0xd0, 0x4a, 0xd8, 0xb3, 0xb7, 0xbb, 0x8e, 118 0x9e, 0xae, 0xf1, 0x32, 0xf5, 0x1b, 0xf1, 0xb4, 0xb8, 0xb0, 0x80, 0x97, 0xf1, 0xa9, 0xdf, 0xdf, 119 0xdf, 0xaa, 0xdf, 0xdf, 0xdf, 0xf2, 0xaa, 0xc5, 0xcd, 0xc7, 0xa9, 0x0c, 0xc9, 0x2c, 0x97, 0xf1, 120 0xa9, 0x89, 0x26, 0x46, 0x66, 0xb2, 0x89, 0x99, 0xa9, 0x2d, 0x55, 0x7d, 0xb0, 0x8a, 0xa8, 0x96, 121 0x36, 0x56, 0x76, 0xd8, 0xf1, 0xb0, 0x89, 0xb9, 0xa3, 0xc3, 0xc5, 0xc7, 0xb1, 0x81, 0xb4, 0x97, 122 0xa3, 0x11, 0xb5, 0x93, 0xa1, 0xf0, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xf1, 0x93, 0x81, 0xa3, 123 0x2d, 0x55, 0x3d, 0xf2, 0xa6, 0xfa, 0xf9, 0xd1, 0xd9, 0xf8, 0xf1, 0x83, 0xa2, 0xc3, 0xc5, 0xc7, 124 0xd8, 0xf3, 0xa2, 0xde, 0xf1, 0x82, 0x93, 0xa3, 0x2d, 0x55, 0x7d, 0x83, 0x95, 0xf5, 0xa3, 0x30, 125 0xd9, 0xf3, 0xa2, 0xf8, 0xd8, 0xf5, 0xa3, 0x50, 0xd9, 0xf3, 0xa2, 0xf8, 0xd8, 0xf5, 0xa3, 0x70, 126 0xd9, 0xf3, 0xa2, 0xf8, 0xd8, 0xf2, 0xb9, 0xa2, 0xf8, 0xf9, 0xd1, 0xd9, 0xa6, 0xde, 0xdf, 0xf4, 127 0x1c, 0xd8, 0xf2, 0xa6, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4, 0x14, 0xd8, 0xf2, 0xf9, 0xd1, 0xd9, 0xf8, 128 0xf4, 0x1e, 0xd8, 0xf2, 0xf9, 0xd1, 0xd9, 0xf8, 0xf8, 0xf4, 0x14, 0xd8, 0xf4, 0x10, 0xd8, 0xf3, 129 /* bank # 5 */ 130 0xa2, 0xf8, 0xf9, 0xd1, 0xda, 0xf2, 0xa6, 0xf8, 0xf1, 0xa5, 0xde, 0xd8, 0xf4, 0xa3, 0x14, 0x14, 131 0xd8, 0xf1, 0xa5, 0xf8, 0xa3, 0x85, 0x95, 0x09, 0xd9, 0xf1, 0xa5, 0xde, 0xf2, 0xa6, 0xf8, 0xdf, 132 0xd8, 0xf4, 0xa3, 0x09, 0xd8, 0xf3, 0xa2, 0xf8, 0xf9, 0xd1, 0xf4, 0xd9, 0x08, 0x17, 0xda, 0x42, 133 0xf2, 0xa2, 0xde, 0xf4, 0x0b, 0xd8, 0xf1, 0xa5, 0xf8, 0xa3, 0x85, 0x95, 0x19, 0xda, 0xf4, 0x05, 134 0xd8, 0xf2, 0xa6, 0xde, 0xdf, 0xd8, 0xf1, 0xb8, 0xaa, 0xb3, 0x8d, 0xb4, 0x98, 0x0d, 0x35, 0x5d, 135 0xb2, 0xb6, 0xba, 0xaf, 0x8c, 0x96, 0x19, 0x8f, 0x9f, 0xb8, 0xa8, 0x0e, 0x16, 0x1e, 0xb4, 0x9a, 136 0xaa, 0x88, 0x2c, 0x54, 0x7c, 0xd8, 0xf1, 0xb8, 0xb4, 0xb0, 0x97, 0x86, 0xa8, 0x31, 0x9b, 0x06, 137 0x99, 0x07, 0xab, 0x97, 0x28, 0x88, 0x9b, 0xf0, 0x0c, 0x20, 0x14, 0x40, 0xb0, 0xb4, 0xb8, 0xf0, 138 0xa8, 0x8a, 0x9a, 0x28, 0x50, 0x78, 0xb7, 0x9b, 0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 139 0x69, 0x38, 0x64, 0x48, 0x31, 0xf1, 0xbb, 0xab, 0x88, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 0xb3, 0x8b, 140 0xb8, 0xa8, 0x04, 0x28, 0x50, 0x78, 0xf1, 0xb0, 0x88, 0xb4, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xbb, 141 0xab, 0xb3, 0x8b, 0x02, 0x26, 0x46, 0x66, 0xb0, 0xb8, 0xf0, 0x8a, 0x9c, 0xa8, 0x29, 0x51, 0x79, 142 0x8b, 0x29, 0x51, 0x8a, 0x24, 0x70, 0x59, 0x8b, 0x20, 0x58, 0x8a, 0x44, 0x69, 0x38, 0x8b, 0x39, 143 0x40, 0x8a, 0x64, 0x48, 0x31, 0x8b, 0x30, 0x49, 0x88, 0xf1, 0xac, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 144 0x8c, 0xa8, 0x04, 0x28, 0x50, 0x78, 0xf1, 0x88, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xac, 0x8c, 0x02, 145 0x26, 0x46, 0x66, 0xf0, 0x89, 0x9c, 0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 146 /* bank # 6 */ 147 0x64, 0x48, 0x31, 0xa9, 0x88, 0x09, 0x20, 0x59, 0x70, 0xab, 0x11, 0x38, 0x40, 0x69, 0xa8, 0x19, 148 0x31, 0x48, 0x60, 0x8c, 0xa8, 0x3c, 0x41, 0x5c, 0x20, 0x7c, 0x00, 0xf1, 0x87, 0x98, 0x19, 0x86, 149 0xa8, 0x6e, 0x76, 0x7e, 0xa9, 0x99, 0x88, 0x2d, 0x55, 0x7d, 0xd8, 0xf1, 0xb3, 0x8b, 0xb4, 0x97, 150 0xbb, 0xab, 0xf8, 0xf9, 0xb9, 0xa3, 0xda, 0xc3, 0xc5, 0xc7, 0xd9, 0x2d, 0x4d, 0x6d, 0xd8, 0xb0, 151 0x8c, 0xb8, 0xac, 0xf8, 0xf9, 0xa8, 0xda, 0xc3, 0xc5, 0xc7, 0xd9, 0x2d, 0x4d, 0x6d, 0xd8, 0xf3, 152 0xb9, 0xac, 0xde, 0xd8, 0xb1, 0xb6, 0xb9, 0xf1, 0xa8, 0xf8, 0xf3, 0xb9, 0xaa, 0xfa, 0xf9, 0xd1, 153 0xda, 0xf2, 0x8a, 0xca, 0xf4, 0x0e, 0xf3, 0xb1, 0x87, 0xdd, 0xc2, 0xc2, 0xf1, 0x8c, 0xc4, 0xdc, 154 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, 0xb6, 0xba, 0xad, 0xfa, 0x8d, 0x9d, 0xab, 0x39, 0xd9, 155 0xad, 0xdf, 0xf4, 0x13, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x08, 0x08, 0xf1, 0xb1, 0x83, 0xc2, 156 0xc4, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xad, 0xf8, 0x8d, 0x9d, 157 0xab, 0x11, 0xd9, 0xad, 0xde, 0xf4, 0x13, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x28, 0x28, 0xf1, 158 0xb0, 0x88, 0xc2, 0xc4, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xad, 159 0xfa, 0x8d, 0x9d, 0xab, 0x39, 0xd9, 0xad, 0xdf, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 0xb5, 0x9a, 160 0x08, 0xf2, 0xf2, 0x88, 0xc2, 0xc4, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, 0xb6, 161 0xba, 0xae, 0xf8, 0x8e, 0x9e, 0xab, 0x11, 0xd9, 0xae, 0xde, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 162 0xb5, 0x9a, 0x68, 0xf2, 0xb0, 0x80, 0xc0, 0xc8, 0xc2, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 163 /* bank # 7 */ 164 0xb2, 0xb6, 0xba, 0xae, 0xfa, 0x8e, 0x9e, 0xab, 0x39, 0xd9, 0xae, 0xdf, 0xf4, 0x12, 0xdd, 0xf2, 165 0xb1, 0x87, 0xb5, 0x9a, 0x68, 0xf2, 0xb0, 0x80, 0xc4, 0xcc, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 166 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xae, 0xf8, 0x8e, 0x9e, 0xab, 0x11, 0xd9, 0xae, 0xde, 0xf4, 0x12, 167 0xdd, 0xf3, 0xb1, 0x87, 0xb5, 0x9a, 0x48, 0xf2, 0xb0, 0x81, 0xc0, 0xc8, 0xc2, 0xdc, 0xf3, 0xb9, 168 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xae, 0xfa, 0x8e, 0x9e, 0xab, 0x39, 0xd9, 0xae, 0xdf, 169 0xf4, 0x12, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x48, 0xf2, 0xb0, 0x81, 0xc4, 0xcc, 0xc6, 0xdc, 170 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb0, 0x88, 0xb9, 0xa8, 0xc3, 0xc5, 0xc7, 0xb1, 0xb5, 0xb9, 171 0xf3, 0xac, 0xfa, 0xf9, 0xd1, 0xda, 0xf4, 0x10, 0xd8, 0xf3, 0xac, 0xf8, 0xf9, 0xd1, 0xda, 0xf1, 172 0xb9, 0xaa, 0xdf, 0xf4, 0x1c, 0xd9, 0xf4, 0x1a, 0xd8, 0xf3, 0xac, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4, 173 0x1d, 0xd8, 0xf2, 0x8c, 0xac, 0xf8, 0xf9, 0xd1, 0xd9, 0xc2, 0xd8, 0xf2, 0xf9, 0xd9, 0xde, 0xf4, 174 0x09, 0x1d, 0x16, 0xda, 0xf2, 0xdd, 0xc6, 0xdc, 0xf4, 0x30, 0xf1, 0xb9, 0xaa, 0xdf, 0xd8, 0xf1, 175 0xab, 0xfa, 0x8b, 0x9b, 0xa3, 0x69, 0xd9, 0xf4, 0x07, 0x06, 0xda, 0xf1, 0xb9, 0xab, 0xdf, 0xfe, 176 0xd8, 0xf1, 0xbb, 0xb3, 0xb7, 0xaa, 0xf9, 0xda, 0xff, 0xd9, 0x80, 0x9a, 0xaa, 0x28, 0xb4, 0x80, 177 0x98, 0xa7, 0x20, 0xd8, 0xb7, 0x87, 0xaa, 0xd0, 0xc1, 0xa7, 0x81, 0x97, 0x62, 0x93, 0xf0, 0x71, 178 0x71, 0x60, 0x85, 0x94, 0x01, 0x29, 0x51, 0x79, 0x90, 0xa5, 0xf1, 0x28, 0x4c, 0x6c, 0x87, 0x0c, 179 0x95, 0x18, 0x85, 0x78, 0xb0, 0xb4, 0xb8, 0x87, 0x98, 0xaf, 0x20, 0x83, 0x9f, 0x22, 0xb7, 0x93, 180 /* bank # 8 */ 181 0xf0, 0x31, 0x31, 0x20, 0x8e, 0xb4, 0x94, 0x01, 0x29, 0x51, 0x79, 0x97, 0xae, 0xf1, 0x28, 0x4c, 182 0x6c, 0x8f, 0x0c, 0x9e, 0x18, 0x8e, 0x78, 0x87, 0x98, 0xaf, 0x20, 0x83, 0x9f, 0x22, 0xb7, 0x93, 183 0xf0, 0x31, 0x31, 0x20, 0xb2, 0x81, 0xb4, 0x94, 0x01, 0x9f, 0x29, 0x51, 0x79, 0x97, 0xba, 0xa1, 184 0xf1, 0x28, 0x4c, 0x6c, 0xb0, 0x8f, 0x0c, 0xb6, 0x91, 0x18, 0xb2, 0x81, 0x78, 0xb0, 0x87, 0xb4, 185 0x98, 0xba, 0xab, 0x20, 0xb2, 0x86, 0xb6, 0x9b, 0x02, 0xb7, 0x93, 0xf0, 0x11, 0x11, 0x00, 0x84, 186 0xb6, 0x97, 0x01, 0x29, 0x51, 0x79, 0xb4, 0x97, 0xa4, 0xf1, 0x28, 0x4c, 0x6c, 0x8b, 0x0c, 0xb6, 187 0x94, 0x18, 0xb2, 0x84, 0x78, 0xbb, 0xa3, 0xb3, 0x83, 0xb7, 0x90, 0x28, 0x4c, 0x6c, 0x8a, 0x6c, 188 0xf2, 0xb0, 0x83, 0xb4, 0x93, 0xb8, 0xa3, 0x71, 0xd9, 0xd0, 0xf8, 0xf5, 0x8e, 0x9e, 0xb9, 0xa3, 189 0x78, 0xf1, 0xb1, 0x8a, 0xb5, 0x93, 0x45, 0xb2, 0x8c, 0x2e, 0xb1, 0x8a, 0x54, 0x83, 0xaa, 0xd0, 190 0xc6, 0xf5, 0xb2, 0x81, 0xb6, 0x91, 0xa3, 0x78, 0xf1, 0xb1, 0x8a, 0xb5, 0x93, 0x65, 0xb2, 0x8c, 191 0x2e, 0xb1, 0x8a, 0x74, 0x83, 0xaa, 0xd0, 0xc7, 0xd8, 0xf2, 0xb0, 0x83, 0xb8, 0xaf, 0xc6, 0xf9, 192 0xa3, 0xb4, 0x9f, 0x41, 0xd9, 0xf1, 0xb1, 0x8a, 0xba, 0xa6, 0xc5, 0xc7, 0xb2, 0xb6, 0xb9, 0x86, 193 0x96, 0xa3, 0x50, 0xb1, 0x83, 0xb5, 0x93, 0x04, 0x2c, 0xf3, 0xb8, 0xa3, 0xd0, 0xf8, 0xf9, 0xd1, 194 0xdb, 0xf1, 0xb6, 0x9c, 0xb9, 0xa3, 0xd0, 0x56, 0xd8, 0xf2, 0xb0, 0x83, 0xb4, 0x9f, 0xb8, 0xa3, 195 0x41, 0xdb, 0xf3, 0x97, 0x49, 0xf1, 0xb1, 0x83, 0xb6, 0x9c, 0xb9, 0xa3, 0xd0, 0x5e, 0xd8, 0xf2, 196 0xb0, 0x83, 0xb8, 0xa3, 0xb4, 0x9f, 0x41, 0xd9, 0xf3, 0xa3, 0xd0, 0xde, 0xf8, 0xf1, 0xb1, 0x83, 197 /* bank # 9 */ 198 0xb6, 0x96, 0xb9, 0xa3, 0xdb, 0x69, 0xf3, 0xb8, 0xa3, 0xd0, 0xde, 0xf1, 0xb3, 0x86, 0xba, 0xa0, 199 0xc0, 0xd8, 0xf2, 0xb0, 0x83, 0xb8, 0xa3, 0xb4, 0x9f, 0x41, 0xd9, 0xd0, 0xde, 0xd8, 0xf3, 0xbb, 200 0xb3, 0xb7, 0x90, 0xa2, 0x82, 0x00, 0xf2, 0x10, 0xf1, 0xb2, 0x82, 0xb5, 0x9b, 0xba, 0xa2, 0xd0, 201 0x64, 0xf2, 0xb3, 0x82, 0xab, 0xc2, 0xf8, 0xf9, 0xd1, 0xf1, 0xb9, 0xa4, 0xd9, 0xde, 0xda, 0xf8, 202 0xd8, 0xf2, 0xbb, 0xaf, 0x80, 0xb7, 0x92, 0x50, 0x8f, 0x0d, 0xdb, 0xf1, 0xb1, 0x84, 0xb5, 0x94, 203 0x21, 0xd9, 0xf5, 0xb3, 0x85, 0xb7, 0x95, 0xb9, 0xa3, 0x78, 0xf1, 0xb1, 0x80, 0xb5, 0x90, 0xa0, 204 0x1a, 0xf0, 0x93, 0x40, 0xf5, 0xb2, 0x84, 0xb6, 0x94, 0xa3, 0x78, 0xf1, 0xb1, 0x80, 0xb5, 0x90, 205 0xa0, 0x3e, 0xf0, 0x93, 0x40, 0xd8, 0xf1, 0xb9, 0xa3, 0xd0, 0xdf, 0xb0, 0x8b, 0xb5, 0x90, 0xb9, 206 0xa3, 0x6a, 0xb1, 0x80, 0x93, 0x05, 0xd9, 0xd0, 0xf8, 0xd8, 0xf2, 0xb3, 0x80, 0xb7, 0x92, 0xbb, 207 0xaf, 0x50, 0xf8, 0x8f, 0x0d, 0xdb, 0xf1, 0xb1, 0x84, 0xb5, 0x94, 0xb9, 0xa3, 0x21, 0xd0, 0xfa, 208 0xd8, 0xf1, 0xb9, 0xa3, 0xd0, 0xfa, 0xf9, 0xd1, 0xd9, 0xf1, 0xb2, 0x84, 0xbb, 0xa8, 0xd0, 0xc4, 209 0xc7, 0xf3, 0xb9, 0xa4, 0xd0, 0xde, 0xda, 0xf1, 0xb3, 0x85, 0xbb, 0xa8, 0xd0, 0xc4, 0xc7, 0xf3, 210 0xb9, 0xa4, 0xd0, 0xde, 0xf8, 0xdf, 0xf8, 0xd8, 0xf3, 0xb1, 0x84, 0xb7, 0x90, 0xb9, 0xa3, 0x69, 211 0xdb, 0xb3, 0x80, 0xb5, 0x94, 0x11, 0xd9, 0xf2, 0xa4, 0xd0, 0xde, 0xd8, 0xf2, 0xbb, 0xaf, 0xb7, 212 0x92, 0xb3, 0x82, 0x19, 0x80, 0xa2, 0xd9, 0x26, 0xf3, 0xa7, 0xd0, 0xdf, 0xd8, 0xf1, 0xaf, 0x89, 213 0x98, 0x19, 0xa9, 0x80, 0xd9, 0x38, 0xd8, 0xaf, 0x89, 0x39, 0xa9, 0x80, 0xda, 0x3c, 0xd8, 0xaf, 214 /* bank # 10 */ 215 0x2e, 0x88, 0xf5, 0x75, 0xda, 0xff, 0xd8, 0x71, 0x80, 0xa9, 0xda, 0xf1, 0xff, 0xd8, 0x82, 0xa7, 216 0xf3, 0xc1, 0xf2, 0x80, 0xc2, 0xf1, 0x97, 0x86, 0x49, 0x2e, 0xa6, 0xd0, 0x50, 0x96, 0x86, 0xaf, 217 0x75, 0xd9, 0x88, 0xa2, 0xd0, 0xf3, 0xc0, 0xc3, 0xf1, 0xda, 0x8f, 0x96, 0xa2, 0xd0, 0xf3, 0xc2, 218 0xc3, 0x82, 0xb4, 0x93, 0x78, 0x78, 0xf1, 0xd8, 0x80, 0xb7, 0x90, 0xaf, 0x0d, 0x89, 0x99, 0xaf, 219 0x10, 0x80, 0x9f, 0x21, 0xda, 0x2e, 0xd8, 0x89, 0x99, 0xaf, 0x31, 0x80, 0xda, 0x2e, 0xd8, 0xaf, 220 0x82, 0x92, 0xf3, 0x41, 0x80, 0xf1, 0xd9, 0x2e, 0xd8, 0xaf, 0x82, 0xf3, 0x19, 0x80, 0xf1, 0xd9, 221 0x2e, 0xd8, 0xf1, 0x89, 0x90, 0xaf, 0xd0, 0x09, 0x8f, 0x99, 0xaf, 0x51, 0xdb, 0x89, 0x31, 0xf3, 222 0x82, 0x92, 0x19, 0xf2, 0xb1, 0x84, 0xb5, 0x94, 0x71, 0xd9, 0xf1, 0xdf, 0xf9, 0xf2, 0xb9, 0xa4, 223 0xd0, 0xf8, 0xf8, 0xf3, 0xdf, 0xd8, 0xb3, 0xb7, 0xbb, 0x82, 0xac, 0xf3, 0xc0, 0xa2, 0x80, 0x22, 224 0xf1, 0xa9, 0x22, 0x26, 0x9f, 0xaf, 0x29, 0xda, 0xac, 0xde, 0xff, 0xd8, 0xa2, 0xf2, 0xde, 0xf1, 225 0xa9, 0xdf, 0xf3, 0xb8, 0xa3, 0xd0, 0xf8, 0xf9, 0xd1, 0xd9, 0xff, 0xd8, 0xf2, 0xb2, 0xb6, 0xba, 226 0xa2, 0xd0, 0xde, 0xf8, 0xf1, 0xb0, 0x87, 0x90, 0xab, 0xd0, 0x7e, 0xb2, 0x80, 0xb7, 0x96, 0xab, 227 0x01, 0x8b, 0xb6, 0x92, 0xab, 0x05, 0xdb, 0x82, 0x9b, 0x79, 0xf3, 0xb1, 0x84, 0xb4, 0x97, 0x49, 228 0xf2, 0xa2, 0xd0, 0xf8, 0xd8, 0xf3, 0xb9, 0xa4, 0xd0, 0xf8, 0xf9, 0xd1, 0xd9, 0xf2, 0xba, 0xa2, 229 0xd0, 0xf8, 0xd8, 0xb3, 0xb7, 0xbb, 0x97, 0x8c, 0xaf, 0xf3, 0x79, 0xda, 0xf1, 0xf1, 0xf1, 0xf1, 230 0xb1, 0x88, 0xb9, 0xac, 0xd0, 0xc0, 0xb3, 0xf3, 0xf3, 0xb9, 0xaa, 0xfa, 0xf1, 0xbb, 0xaa, 0xd0, 231 /* bank # 11 */ 232 0xf8, 0xf4, 0x10, 0xd8, 0xf3, 0xa7, 0xd0, 0xfa, 0x97, 0x8c, 0xaf, 0x79, 0xda, 0xf1, 0x87, 0x9a, 233 0xaa, 0xd0, 0x70, 0xd8, 0xf2, 0x82, 0x92, 0xaf, 0x31, 0xd9, 0xf1, 0xde, 0xb2, 0x82, 0xb6, 0x92, 234 0xcc, 0xb3, 0x8f, 0xb7, 0x96, 0xa6, 0x00, 0xac, 0x8c, 0x9c, 0x0c, 0x30, 0xdb, 0xb2, 0xb6, 0xba, 235 0x82, 0x92, 0xab, 0x39, 0xf3, 0xb1, 0x84, 0xb4, 0x97, 0x49, 0xd9, 0xf1, 0xb2, 0xb6, 0x80, 0x90, 236 0xa0, 0xd0, 0x5e, 0xf0, 0x92, 0x38, 0xd8, 0xf2, 0xb3, 0x82, 0xb7, 0x92, 0xbb, 0xaf, 0x31, 0xd9, 237 0xf1, 0xbb, 0xac, 0xde, 0xd0, 0xde, 0xba, 0xa2, 0xd0, 0xdf, 0xf1, 0xff, 0xd8, 0xf3, 0xb9, 0xa4, 238 0xd0, 0xf8, 0xf9, 0xd1, 0xd9, 0xf2, 0xbb, 0xa2, 0xfa, 0xf8, 0xda, 0xf2, 0xbb, 0xa2, 0xfa, 0xd8, 239 0xf2, 0xb3, 0xb7, 0xbb, 0x80, 0x92, 0xaf, 0x49, 0xd1, 0xd9, 0xf1, 0xb9, 0xa4, 0xde, 0xa0, 0xde, 240 0xdf, 0xd8, 0xf1, 0x8c, 0x9c, 0xbb, 0xac, 0xd0, 0x10, 0xac, 0xde, 0xba, 0xa2, 0xd0, 0xdf, 0xbb, 241 0x92, 0x82, 0xaf, 0xf1, 0xca, 0xf2, 0x35, 0xf1, 0x96, 0x8f, 0xa6, 0xd9, 0x00, 0xd8, 0xff 242 }; 243 244 #define DMP_VERSION (dmpMemory) 245 246 inv_error_t inv_write_dmp_data(FILE *fd, const unsigned char *dmp, size_t len) 247 { 248 inv_error_t result = INV_SUCCESS; 249 int bytesWritten = 0; 250 251 if (len <= 0) { 252 MPL_LOGE("Nothing to write"); 253 return INV_ERROR_FILE_WRITE; 254 } 255 else { 256 MPL_LOGI("dmp firmware size to write = %d", len); 257 } 258 if ( fd == NULL ) { 259 return INV_ERROR_FILE_OPEN; 260 } 261 bytesWritten = fwrite(dmp, 1, len, fd); 262 if (bytesWritten != len) { 263 MPL_LOGE("bytes written (%d) don't match requested length (%d)\n", 264 bytesWritten, len); 265 result = INV_ERROR_FILE_WRITE; 266 } 267 else { 268 MPL_LOGI("Bytes written = %d", bytesWritten); 269 } 270 return result; 271 } 272 273 inv_error_t inv_load_dmp(FILE *fd) 274 { 275 inv_error_t result = INV_SUCCESS; 276 result = inv_write_dmp_data(fd, DMP_VERSION, DMP_CODE_SIZE); 277 return result; 278 } 279 280 void read_dmp_img(char *dmp_path, char* out_file) 281 { 282 MPL_LOGI("read_dmp_img"); 283 FILE *fp; 284 int i; 285 int dmpSize = DMP_CODE_SIZE; 286 char dmp_img[dmpSize]; 287 288 if ((fp = fopen(dmp_path, "rb")) < 0) { 289 perror("dmp fail"); 290 } 291 i = fread(dmp_img, 1, dmpSize, fp); 292 MPL_LOGI("Result=%d", i); 293 fclose(fp); 294 fp = fopen(out_file, "wt"); 295 if(fp == NULL) { 296 MPL_LOGE("error open out file:%s", out_file); 297 return; 298 } 299 fprintf(fp, "char rec[]={\n"); 300 for(i = 0; i < dmpSize; i++) { 301 fprintf(fp, "0x%02x, ", dmp_img[i]); 302 if(((i + 1) % 16) == 0) { 303 fprintf(fp, "\n"); 304 } 305 } 306 fprintf(fp, "};\n "); 307 fclose(fp); 308 } 309 310 /** 311 * @} 312 */ 313