Home | History | Annotate | Download | only in linux
      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 3035
     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, 0x06, 0x00, 0x00, 0x00, 0x00,
     71 	 0x00, 0x35, 0xa1, 0x09, 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 	 0x15, 0xe3, 0xa3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     76 	 0x00, 0x04, 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, 0x38, 0x00, 0x00, 0x00, 0x30, 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, 0x05, 0x00, 0x00,
     96 	 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x11, 0xcc, 0xf7,
     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 	 0x0d, 0x28, 0xb2, 0x44, 0xca, 0x7e, 0xb5, 0xa4, 0x53, 0x69, 0xd8, 0xff, 0xc4, 0xfc, 0xbc, 0x5f,
    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, 0xd9, 0xf4, 0x0b, 0xd8, 0xf3, 0x99, 0x31, 0xd1, 0xd9,
    115 	 0xf4, 0x03, 0xd8, 0xf1, 0xff, 0xd8, 0xb9, 0xb1, 0xb4, 0xa7, 0x87, 0x9d, 0xd0, 0xf7, 0x4a, 0xf3,
    116 	 0x40, 0xb8, 0xb0, 0xf7, 0xa8, 0x8d, 0x91, 0x6a, 0x8d, 0x90, 0x5f, 0x98, 0x4a, 0xb9, 0xf2, 0xa6,
    117 	 0xd0, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4, 0x07, 0xd8, 0xf3, 0xb8, 0xa8, 0xf9, 0xdb, 0xfb, 0xf7, 0xb9,
    118 	 0xb1, 0xa7, 0x87, 0x9d, 0xd0, 0x4a, 0xd8, 0xb3, 0xb7, 0xbb, 0x8e, 0x9e, 0xae, 0xf1, 0x32, 0xf5,
    119 	 0x1b, 0xf1, 0xb4, 0xb8, 0xb0, 0x80, 0x97, 0xf1, 0xa9, 0xdf, 0xdf, 0xdf, 0xaa, 0xdf, 0xdf, 0xdf,
    120 	 0xf2, 0xaa, 0xc5, 0xcd, 0xc7, 0xa9, 0x0c, 0xc9, 0x2c, 0x97, 0xf1, 0xa9, 0x89, 0x26, 0x46, 0x66,
    121 	 0xb2, 0x89, 0x99, 0xa9, 0x2d, 0x55, 0x7d, 0xb0, 0x8a, 0xa8, 0x96, 0x36, 0x56, 0x76, 0xd8, 0xf1,
    122 	 0xb0, 0x89, 0xb9, 0xa3, 0xc3, 0xc5, 0xc7, 0xb1, 0x81, 0xb4, 0x97, 0xa3, 0x11, 0xb5, 0x93, 0xa1,
    123 	 0xf0, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xf1, 0x93, 0x81, 0xa3, 0x2d, 0x55, 0x3d, 0xf2, 0xa6,
    124 	 0xfa, 0xf9, 0xd1, 0xd9, 0xf8, 0xf1, 0x83, 0xa2, 0xc3, 0xc5, 0xc7, 0xd8, 0xf3, 0xa2, 0xde, 0xf1,
    125 	 0x82, 0x93, 0xa3, 0x2d, 0x55, 0x7d, 0x83, 0x95, 0xf5, 0xa3, 0x30, 0xd9, 0xf3, 0xa2, 0xf8, 0xd8,
    126 	 0xf5, 0xa3, 0x50, 0xd9, 0xf3, 0xa2, 0xf8, 0xd8, 0xf5, 0xa3, 0x70, 0xd9, 0xf3, 0xa2, 0xf8, 0xd8,
    127 	 0xf2, 0xb9, 0xa2, 0xf8, 0xf9, 0xd1, 0xd9, 0xa6, 0xde, 0xdf, 0xf4, 0x1c, 0xd8, 0xf2, 0xa6, 0xf8,
    128 	 0xf9, 0xd1, 0xd9, 0xf4, 0x14, 0xd8, 0xf2, 0xf9, 0xd1, 0xd9, 0xf8, 0xf4, 0x1e, 0xd8, 0xf2, 0xf9,
    129 	 /* bank # 5 */
    130 	 0xd1, 0xd9, 0xf8, 0xf8, 0xf4, 0x14, 0xd8, 0xf4, 0x10, 0xd8, 0xf3, 0xa2, 0xf8, 0xf9, 0xd1, 0xda,
    131 	 0xf2, 0xa6, 0xf8, 0xf1, 0xa5, 0xde, 0xd8, 0xf4, 0xa3, 0x14, 0x14, 0xd8, 0xf1, 0xa5, 0xf8, 0xa3,
    132 	 0x85, 0x95, 0x09, 0xd9, 0xf1, 0xa5, 0xde, 0xf2, 0xa6, 0xf8, 0xdf, 0xd8, 0xf4, 0xa3, 0x09, 0xd8,
    133 	 0xf3, 0xa2, 0xf8, 0xf9, 0xd1, 0xf4, 0xd9, 0x08, 0x17, 0xda, 0x42, 0xf2, 0xa2, 0xde, 0xf4, 0x0b,
    134 	 0xd8, 0xf1, 0xa5, 0xf8, 0xa3, 0x85, 0x95, 0x19, 0xda, 0xf4, 0x05, 0xd8, 0xf2, 0xa6, 0xde, 0xdf,
    135 	 0xd8, 0xf1, 0xb8, 0xaa, 0xb3, 0x8d, 0xb4, 0x98, 0x0d, 0x35, 0x5d, 0xb2, 0xb6, 0xba, 0xaf, 0x8c,
    136 	 0x96, 0x19, 0x8f, 0x9f, 0xb8, 0xa8, 0x0e, 0x16, 0x1e, 0xb4, 0x9a, 0xaa, 0x88, 0x2c, 0x54, 0x7c,
    137 	 0xd8, 0xf1, 0xb8, 0xb4, 0xb0, 0x97, 0x86, 0xa8, 0x31, 0x9b, 0x06, 0x99, 0x07, 0xab, 0x97, 0x28,
    138 	 0x88, 0x9b, 0xf0, 0x0c, 0x20, 0x14, 0x40, 0xb0, 0xb4, 0xb8, 0xf0, 0xa8, 0x8a, 0x9a, 0x28, 0x50,
    139 	 0x78, 0xb7, 0x9b, 0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 0x64, 0x48, 0x31,
    140 	 0xf1, 0xbb, 0xab, 0x88, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 0xb3, 0x8b, 0xb8, 0xa8, 0x04, 0x28, 0x50,
    141 	 0x78, 0xf1, 0xb0, 0x88, 0xb4, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xbb, 0xab, 0xb3, 0x8b, 0x02, 0x26,
    142 	 0x46, 0x66, 0xb0, 0xb8, 0xf0, 0x8a, 0x9c, 0xa8, 0x29, 0x51, 0x79, 0x8b, 0x29, 0x51, 0x8a, 0x24,
    143 	 0x70, 0x59, 0x8b, 0x20, 0x58, 0x8a, 0x44, 0x69, 0x38, 0x8b, 0x39, 0x40, 0x8a, 0x64, 0x48, 0x31,
    144 	 0x8b, 0x30, 0x49, 0x88, 0xf1, 0xac, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 0x8c, 0xa8, 0x04, 0x28, 0x50,
    145 	 0x78, 0xf1, 0x88, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xac, 0x8c, 0x02, 0x26, 0x46, 0x66, 0xf0, 0x89,
    146 	 /* bank # 6 */
    147 	 0x9c, 0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 0x64, 0x48, 0x31, 0xa9, 0x88,
    148 	 0x09, 0x20, 0x59, 0x70, 0xab, 0x11, 0x38, 0x40, 0x69, 0xa8, 0x19, 0x31, 0x48, 0x60, 0x8c, 0xa8,
    149 	 0x3c, 0x41, 0x5c, 0x20, 0x7c, 0x00, 0xf1, 0x87, 0x98, 0x19, 0x86, 0xa8, 0x6e, 0x76, 0x7e, 0xa9,
    150 	 0x99, 0x88, 0x2d, 0x55, 0x7d, 0xd8, 0xf1, 0xb3, 0x8b, 0xb4, 0x97, 0xbb, 0xab, 0xf8, 0xf9, 0xb9,
    151 	 0xa3, 0xda, 0xc3, 0xc5, 0xc7, 0xd9, 0x2d, 0x4d, 0x6d, 0xd8, 0xb0, 0x8c, 0xb8, 0xac, 0xf8, 0xf9,
    152 	 0xa8, 0xda, 0xc3, 0xc5, 0xc7, 0xd9, 0x2d, 0x4d, 0x6d, 0xd8, 0xf3, 0xb9, 0xac, 0xde, 0xd8, 0xb1,
    153 	 0xb6, 0xb9, 0xf1, 0xa8, 0xf8, 0xf3, 0xb9, 0xaa, 0xfa, 0xf9, 0xd1, 0xda, 0xf2, 0x8a, 0xca, 0xf4,
    154 	 0x0e, 0xf3, 0xb1, 0x87, 0xdd, 0xc2, 0xc2, 0xf1, 0x8c, 0xc4, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8,
    155 	 0xf2, 0xb2, 0xb6, 0xba, 0xad, 0xfa, 0x8d, 0x9d, 0xab, 0x39, 0xd9, 0xad, 0xdf, 0xf4, 0x13, 0xdd,
    156 	 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x08, 0x08, 0xf1, 0xb1, 0x83, 0xc2, 0xc4, 0xc6, 0xdc, 0xf3, 0xb9,
    157 	 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xad, 0xf8, 0x8d, 0x9d, 0xab, 0x11, 0xd9, 0xad, 0xde,
    158 	 0xf4, 0x13, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x28, 0x28, 0xf1, 0xb0, 0x88, 0xc2, 0xc4, 0xc6,
    159 	 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xad, 0xfa, 0x8d, 0x9d, 0xab, 0x39,
    160 	 0xd9, 0xad, 0xdf, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 0xb5, 0x9a, 0x08, 0xf2, 0xf2, 0x88, 0xc2,
    161 	 0xc4, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, 0xb6, 0xba, 0xae, 0xf8, 0x8e, 0x9e,
    162 	 0xab, 0x11, 0xd9, 0xae, 0xde, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 0xb5, 0x9a, 0x68, 0xf2, 0xb0,
    163 	 /* bank # 7 */
    164 	 0x80, 0xc0, 0xc8, 0xc2, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, 0xb6, 0xba, 0xae, 0xfa,
    165 	 0x8e, 0x9e, 0xab, 0x39, 0xd9, 0xae, 0xdf, 0xf4, 0x12, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x68,
    166 	 0xf2, 0xb0, 0x80, 0xc4, 0xcc, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba,
    167 	 0xae, 0xf8, 0x8e, 0x9e, 0xab, 0x11, 0xd9, 0xae, 0xde, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 0xb5,
    168 	 0x9a, 0x48, 0xf2, 0xb0, 0x81, 0xc0, 0xc8, 0xc2, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2,
    169 	 0xb6, 0xba, 0xae, 0xfa, 0x8e, 0x9e, 0xab, 0x39, 0xd9, 0xae, 0xdf, 0xf4, 0x12, 0xdd, 0xf2, 0xb1,
    170 	 0x87, 0xb5, 0x9a, 0x48, 0xf2, 0xb0, 0x81, 0xc4, 0xcc, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8,
    171 	 0xf2, 0xb0, 0x88, 0xb9, 0xa8, 0xc3, 0xc5, 0xc7, 0xb1, 0xb5, 0xb9, 0xf3, 0xac, 0xfa, 0xf9, 0xd1,
    172 	 0xda, 0xf4, 0x10, 0xd8, 0xf3, 0xac, 0xf8, 0xf9, 0xd1, 0xda, 0xf1, 0xb9, 0xaa, 0xdf, 0xf4, 0x1c,
    173 	 0xd9, 0xf4, 0x1a, 0xd8, 0xf3, 0xac, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4, 0x1d, 0xd8, 0xf2, 0x8c, 0xac,
    174 	 0xf8, 0xf9, 0xd1, 0xd9, 0xc2, 0xd8, 0xf2, 0xf9, 0xd9, 0xde, 0xf4, 0x09, 0x1d, 0x16, 0xda, 0xf2,
    175 	 0xdd, 0xc6, 0xdc, 0xf4, 0x30, 0xf1, 0xb9, 0xaa, 0xdf, 0xd8, 0xf1, 0xab, 0xfa, 0x8b, 0x9b, 0xa3,
    176 	 0x69, 0xd9, 0xf4, 0x07, 0x06, 0xda, 0xf1, 0xb9, 0xab, 0xdf, 0xfe, 0xd8, 0xf1, 0xbb, 0xb3, 0xb7,
    177 	 0xaa, 0xf9, 0xda, 0xff, 0xd9, 0x80, 0x9a, 0xaa, 0x28, 0xb0, 0x88, 0xaa, 0xd0, 0xc1, 0xa7, 0xb3,
    178 	 0x81, 0x7a, 0x93, 0xf0, 0x71, 0x71, 0x60, 0x85, 0x94, 0x01, 0x29, 0x51, 0x79, 0x90, 0xa5, 0xf1,
    179 	 0x28, 0x4c, 0x6c, 0x87, 0x0c, 0x95, 0x18, 0x85, 0x78, 0xb0, 0xb8, 0xaf, 0x83, 0x9a, 0x3a, 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, 0xaf, 0x83, 0xb7, 0x9a, 0x3a, 0x93, 0xf0, 0x31, 0x31,
    183 	 0x20, 0xb2, 0x81, 0xb4, 0x94, 0x01, 0x9f, 0x29, 0x51, 0x79, 0x97, 0xba, 0xa1, 0xf1, 0x28, 0x4c,
    184 	 0x6c, 0xb0, 0x8f, 0x0c, 0xb6, 0x91, 0x18, 0xb2, 0x81, 0x78, 0xab, 0x86, 0xb7, 0x9a, 0x1a, 0x93,
    185 	 0xf0, 0x11, 0x11, 0x00, 0x84, 0xb6, 0x97, 0x01, 0x29, 0x51, 0x79, 0xb4, 0x97, 0xa4, 0xf1, 0x28,
    186 	 0x4c, 0x6c, 0x8b, 0x0c, 0xb6, 0x94, 0x18, 0xb2, 0x84, 0x78, 0xbb, 0xa3, 0xb3, 0x83, 0xb7, 0x90,
    187 	 0x28, 0x4c, 0x6c, 0x8a, 0x6c, 0xf2, 0xb0, 0x83, 0xb4, 0x93, 0xb8, 0xa3, 0x71, 0xd9, 0xd0, 0xf8,
    188 	 0xf5, 0x8e, 0x9e, 0xb9, 0xa3, 0x78, 0xf1, 0xb1, 0x8a, 0xb5, 0x93, 0x45, 0xb2, 0x8c, 0x2e, 0xb1,
    189 	 0x8a, 0x54, 0x83, 0xaa, 0xd0, 0xc6, 0xf5, 0xb2, 0x81, 0xb6, 0x91, 0xa3, 0x78, 0xf1, 0xb1, 0x8a,
    190 	 0xb5, 0x93, 0x65, 0xb2, 0x8c, 0x2e, 0xb1, 0x8a, 0x74, 0x83, 0xaa, 0xd0, 0xc7, 0xd8, 0xf2, 0xb0,
    191 	 0x83, 0xb8, 0xaf, 0xc6, 0xf9, 0xa3, 0xb4, 0x9f, 0x41, 0xd9, 0xf1, 0xb1, 0x8a, 0xba, 0xa6, 0xc5,
    192 	 0xc7, 0xb2, 0xb6, 0xb9, 0x86, 0x96, 0xa3, 0x50, 0xb1, 0x83, 0xb5, 0x93, 0x04, 0x2c, 0xf3, 0xb8,
    193 	 0xa3, 0xd0, 0xf8, 0xf9, 0xd1, 0xdb, 0xf1, 0xb6, 0x9c, 0xb9, 0xa3, 0xd0, 0x56, 0xd8, 0xf2, 0xb0,
    194 	 0x83, 0xb4, 0x9f, 0xb8, 0xa3, 0x41, 0xdb, 0xf3, 0x97, 0x49, 0xf1, 0xb1, 0x83, 0xb6, 0x9c, 0xb9,
    195 	 0xa3, 0xd0, 0x5e, 0xd8, 0xf2, 0xb0, 0x83, 0xb8, 0xa3, 0xb4, 0x9f, 0x41, 0xd9, 0xf3, 0xa3, 0xd0,
    196 	 0xde, 0xf8, 0xf1, 0xb1, 0x83, 0xb6, 0x96, 0xb9, 0xa3, 0xdb, 0x69, 0x8a, 0x09, 0xf3, 0xb8, 0xa3,
    197 	 /* bank # 9 */
    198 	 0xd0, 0xde, 0xf1, 0xb3, 0x86, 0xba, 0xa0, 0xc0, 0xd8, 0xf2, 0xb0, 0x83, 0xb8, 0xa3, 0xb4, 0x9f,
    199 	 0x41, 0xd9, 0xd0, 0xde, 0xd8, 0xf3, 0xbb, 0xb3, 0xb7, 0x90, 0xa2, 0x82, 0x00, 0xf2, 0x10, 0xf1,
    200 	 0xb2, 0x82, 0xb5, 0x9b, 0xba, 0xa2, 0xd0, 0x64, 0xf2, 0xb3, 0x82, 0xab, 0xc2, 0xf8, 0xf9, 0xd1,
    201 	 0xd9, 0xf1, 0xb9, 0xa4, 0xde, 0xad, 0xde, 0xf2, 0xbb, 0xa0, 0xd0, 0xc5, 0xda, 0xf1, 0xb9, 0xa4,
    202 	 0xf8, 0xd8, 0xf2, 0xbb, 0xaf, 0x80, 0xb7, 0x90, 0x58, 0x8f, 0x92, 0x0d, 0xdb, 0xf1, 0xb1, 0x84,
    203 	 0xb5, 0x94, 0x21, 0xd9, 0xf5, 0xb3, 0x85, 0xb7, 0x95, 0xb9, 0xa3, 0x78, 0xf1, 0xb1, 0x80, 0xb5,
    204 	 0x90, 0xa0, 0x1a, 0xf0, 0x93, 0x40, 0xf5, 0xb2, 0x84, 0xb6, 0x94, 0xa3, 0x78, 0xf1, 0xb1, 0x80,
    205 	 0xb5, 0x90, 0xa0, 0x3e, 0xf0, 0x93, 0x40, 0xd8, 0xf1, 0xb9, 0xa3, 0xd0, 0xdf, 0xb0, 0x8b, 0xb5,
    206 	 0x90, 0xb9, 0xa3, 0x6a, 0xb1, 0x80, 0x93, 0x05, 0xd9, 0xd0, 0xf8, 0xd8, 0xf2, 0xb3, 0x80, 0xb7,
    207 	 0x90, 0xbb, 0xaf, 0x58, 0xf8, 0x8f, 0x92, 0x0d, 0xdb, 0xf1, 0xb1, 0x84, 0xb5, 0x94, 0xb9, 0xa3,
    208 	 0x21, 0xd0, 0xfa, 0xd8, 0xf1, 0xb9, 0xa3, 0xd0, 0xfa, 0xf9, 0xd1, 0xd9, 0xf1, 0xb2, 0x84, 0xbb,
    209 	 0xa8, 0xd0, 0xc4, 0xc7, 0xf3, 0xb9, 0xa4, 0xd0, 0xde, 0xda, 0xf1, 0xb3, 0x85, 0xbb, 0xa8, 0xd0,
    210 	 0xc4, 0xc7, 0xf3, 0xb9, 0xa4, 0xd0, 0xde, 0xf8, 0xdf, 0xf8, 0xd8, 0xf3, 0xb1, 0x84, 0xb7, 0x90,
    211 	 0xb9, 0xa3, 0x69, 0xdb, 0xb3, 0x80, 0xb5, 0x94, 0x11, 0xd9, 0xf2, 0xa4, 0xd0, 0xde, 0xd8, 0xf2,
    212 	 0xbb, 0xaf, 0xb7, 0x92, 0xb3, 0x82, 0x19, 0x80, 0xa2, 0xd9, 0x26, 0xf3, 0xa7, 0xd0, 0xdf, 0xd8,
    213 	 0xf1, 0xaf, 0x89, 0x98, 0x19, 0xa9, 0x80, 0xd9, 0x38, 0xd8, 0xaf, 0x89, 0x39, 0xa9, 0x80, 0xda,
    214 	 /* bank # 10 */
    215 	 0x3c, 0xd8, 0xaf, 0x2e, 0x88, 0xf5, 0x75, 0xda, 0xff, 0xd8, 0x71, 0x80, 0xa9, 0xda, 0xf1, 0xff,
    216 	 0xd8, 0x82, 0xa7, 0xf3, 0xc1, 0xf2, 0x80, 0xc2, 0xf1, 0x97, 0x86, 0x49, 0x2e, 0xa6, 0xd0, 0x50,
    217 	 0x96, 0x86, 0xaf, 0x75, 0xd9, 0x88, 0xa2, 0xd0, 0xf3, 0xc0, 0xc3, 0xf1, 0xda, 0x8f, 0x96, 0xa2,
    218 	 0xd0, 0xf3, 0xc2, 0xc3, 0x82, 0xb4, 0x93, 0x78, 0x78, 0xf1, 0xd8, 0x80, 0xb7, 0x90, 0xaf, 0x0d,
    219 	 0x89, 0x99, 0xaf, 0x10, 0x80, 0x9f, 0x21, 0xda, 0x2e, 0xd8, 0x89, 0x99, 0xaf, 0x31, 0x80, 0xda,
    220 	 0x2e, 0xd8, 0xaf, 0x82, 0x92, 0xf3, 0x41, 0x80, 0xf1, 0xd9, 0x2e, 0xd8, 0xaf, 0x82, 0xf3, 0x19,
    221 	 0x80, 0xf1, 0xd9, 0x2e, 0xd8, 0xf1, 0x89, 0x90, 0xaf, 0xd0, 0x09, 0x8f, 0x99, 0xaf, 0x51, 0xdb,
    222 	 0x89, 0x31, 0xf3, 0x82, 0x92, 0x19, 0xf2, 0xb1, 0x84, 0xb5, 0x94, 0x71, 0xd9, 0xf1, 0xdf, 0xf9,
    223 	 0xf2, 0xb9, 0xa4, 0xd0, 0xf8, 0xf8, 0xf3, 0xdf, 0xd8, 0xb3, 0xb7, 0xbb, 0x82, 0xac, 0xf3, 0xc0,
    224 	 0xa2, 0x80, 0x22, 0xf1, 0xa9, 0x22, 0x26, 0x9f, 0xaf, 0x29, 0xda, 0xac, 0xde, 0xff, 0xd8, 0xa2,
    225 	 0xf2, 0xde, 0xf1, 0xa9, 0xdf, 0xf3, 0xb8, 0xa3, 0xd0, 0xf8, 0xf9, 0xd1, 0xd9, 0xff, 0xd8, 0xf2,
    226 	 0xb2, 0xb6, 0xba, 0xa2, 0xd0, 0xde, 0xf8, 0xf1, 0xb0, 0x87, 0x90, 0xab, 0xd0, 0x7e, 0xb2, 0x80,
    227 	 0xb7, 0x96, 0xab, 0x01, 0x8b, 0xb6, 0x92, 0xab, 0x05, 0xdb, 0x82, 0x9b, 0x79, 0xf3, 0xb1, 0x84,
    228 	 0xb4, 0x97, 0x49, 0xf2, 0xa2, 0xd0, 0xf8, 0xd8, 0xf3, 0xb9, 0xa4, 0xd0, 0xf8, 0xf9, 0xd1, 0xd9,
    229 	 0xf2, 0xba, 0xa2, 0xd0, 0xf8, 0xd8, 0xf1, 0xb1, 0xb9, 0x8e, 0xaf, 0xc3, 0xc5, 0xc7, 0x8d, 0xae,
    230 	 0xc3, 0xc5, 0xc7, 0xf0, 0xb0, 0x8c, 0xb4, 0x9c, 0xad, 0x3c, 0x11, 0x0c, 0x58, 0x2c, 0x50, 0xf1,
    231 	 /* bank # 11 */
    232 	 0xb1, 0x8d, 0xb5, 0x9d, 0xad, 0x2c, 0x54, 0x7c, 0xb4, 0x97, 0x71, 0xb5, 0x9f, 0xad, 0x2a, 0xf0,
    233 	 0x50, 0x78, 0xd8, 0xb3, 0xb7, 0xbb, 0x97, 0x8c, 0xaf, 0xf3, 0x79, 0xda, 0xf1, 0xf1, 0xf1, 0xf1,
    234 	 0xb1, 0x88, 0xb9, 0xac, 0xd0, 0xc0, 0xb3, 0xf3, 0xf3, 0xb9, 0xaa, 0xfa, 0xf1, 0xbb, 0xaa, 0xd0,
    235 	 0xf8, 0xf4, 0x10, 0xd8, 0xf3, 0xa7, 0xd0, 0xfa, 0x97, 0x8c, 0xaf, 0x79, 0xda, 0xf1, 0x87, 0x9a,
    236 	 0xaa, 0xd0, 0x70, 0xd8, 0xf2, 0x82, 0x90, 0xaf, 0x39, 0xd9, 0xf1, 0xde, 0xb2, 0x82, 0xb6, 0x92,
    237 	 0xcc, 0xb3, 0x8f, 0xb7, 0x96, 0xa6, 0x00, 0xac, 0x8c, 0x9c, 0x0c, 0x30, 0xdb, 0xb2, 0xb6, 0xba,
    238 	 0x82, 0x92, 0xab, 0x39, 0xf3, 0xb1, 0x84, 0xb4, 0x97, 0x49, 0xd9, 0xf1, 0xb2, 0xb6, 0x80, 0x90,
    239 	 0xa0, 0xd0, 0x5e, 0xf0, 0x92, 0x38, 0xd8, 0xf2, 0xb3, 0x82, 0xb7, 0x92, 0xbb, 0xaf, 0x31, 0xd9,
    240 	 0xf1, 0xbb, 0xac, 0xde, 0xd0, 0xde, 0xba, 0xa2, 0xd0, 0xdf, 0xf1, 0xff, 0xd8, 0xf3, 0xb9, 0xa4,
    241 	 0xd0, 0xf8, 0xf9, 0xd1, 0xd9, 0xf2, 0xbb, 0xa2, 0xfa, 0xf8, 0xda, 0xf2, 0xbb, 0xa2, 0xfa, 0xd8,
    242 	 0xf2, 0xba, 0xa3, 0xde, 0xf8, 0xf8, 0xf8, 0xb3, 0x82, 0xb6, 0x93, 0x25, 0xdb, 0xf1, 0xb1, 0x8e,
    243 	 0xb5, 0x9d, 0x05, 0xd9, 0xf2, 0xbb, 0xa0, 0xd0, 0xfa, 0xf8, 0xd8, 0xf2, 0xb3, 0x82, 0xb5, 0x9f,
    244 	 0xbb, 0xaf, 0x40, 0x8f, 0xb7, 0x90, 0x1d, 0xda, 0x82, 0xb5, 0x9f, 0xa0, 0xd0, 0x44, 0xd8, 0xb7,
    245 	 0x80, 0x92, 0xaf, 0x49, 0xd1, 0xd9, 0xf1, 0xb9, 0xa4, 0xde, 0xa0, 0xde, 0xdf, 0xd8, 0xf1, 0x8c,
    246 	 0x9c, 0xbb, 0xac, 0xd0, 0x10, 0xac, 0xde, 0xba, 0xa2, 0xd0, 0xdf, 0xbb, 0x92, 0x82, 0xaf, 0xf1,
    247 	 0xca, 0xf2, 0x35, 0xf1, 0x96, 0x8f, 0xa6, 0xd9, 0x00, 0xd8, 0xff
    248 };
    249 
    250 #define DMP_VERSION (dmpMemory)
    251 
    252 inv_error_t inv_write_dmp_data(FILE *fd, const unsigned char *dmp, size_t len)
    253 {
    254     inv_error_t result = INV_SUCCESS;
    255     int bytesWritten = 0;
    256 
    257     if (len <= 0) {
    258         MPL_LOGE("Nothing to write");
    259         return INV_ERROR_FILE_WRITE;
    260     }
    261     else {
    262         MPL_LOGI("dmp firmware size to write = %d", len);
    263     }
    264     if ( fd == NULL ) {
    265         return INV_ERROR_FILE_OPEN;
    266     }
    267     bytesWritten = fwrite(dmp, 1, len, fd);
    268     if (bytesWritten != len) {
    269         MPL_LOGE("bytes written (%d) don't match requested length (%d)\n",
    270                  bytesWritten, len);
    271         result = INV_ERROR_FILE_WRITE;
    272     }
    273     else {
    274         MPL_LOGI("Bytes written = %d", bytesWritten);
    275     }
    276     return result;
    277 }
    278 
    279 inv_error_t inv_load_dmp(FILE *fd)
    280 {
    281     inv_error_t result = INV_SUCCESS;
    282     result = inv_write_dmp_data(fd, DMP_VERSION, DMP_CODE_SIZE);
    283     return result;
    284 }
    285 
    286 void read_dmp_img(char *dmp_path, char* out_file)
    287 {
    288     MPL_LOGI("read_dmp_img");
    289     FILE *fp;
    290     int i;
    291     int dmpSize = DMP_CODE_SIZE;
    292     char dmp_img[dmpSize];
    293 
    294     if ((fp = fopen(dmp_path, "rb")) < 0) {
    295         perror("dmp fail");
    296     }
    297     i = fread(dmp_img, 1, dmpSize, fp);
    298     MPL_LOGI("Result=%d", i);
    299     fclose(fp);
    300     fp = fopen(out_file, "wt");
    301     if(fp == NULL) {
    302     MPL_LOGE("error open out file:%s", out_file);
    303         return;
    304     }
    305     fprintf(fp, "char rec[]={\n");
    306     for(i = 0; i < dmpSize; i++) {
    307         fprintf(fp, "0x%02x, ", dmp_img[i]);
    308         if(((i + 1) % 16) == 0) {
    309             fprintf(fp, "\n");
    310         }
    311     }
    312     fprintf(fp, "};\n ");
    313     fclose(fp);
    314 }
    315 
    316 /**
    317  *  @}
    318  */
    319