FM
Dependencies: SimpleDMA eeprom mbed-rtos mbed FreescaleIAP
Fork of CDMS_CODE by
Flash.h@354:0da912441c7b, 2017-03-11 (annotated)
- Committer:
- samp1234
- Date:
- Sat Mar 11 04:46:31 2017 +0000
- Revision:
- 354:0da912441c7b
with obsrs 10mins implementation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
samp1234 | 354:0da912441c7b | 1 | #include "FreescaleIAP.h" |
samp1234 | 354:0da912441c7b | 2 | |
samp1234 | 354:0da912441c7b | 3 | int strt_add_thres = flash_size() - (11*SECTOR_SIZE); |
samp1234 | 354:0da912441c7b | 4 | uint32_t flasharray_thres[32] = {0}; |
samp1234 | 354:0da912441c7b | 5 | |
samp1234 | 354:0da912441c7b | 6 | void FCTN_CDMS_WR_FLASH(uint16_t , uint32_t); |
samp1234 | 354:0da912441c7b | 7 | int strt_add = flash_size() - (2*SECTOR_SIZE); |
samp1234 | 354:0da912441c7b | 8 | uint32_t flasharray[32]; //256+(3*1024) |
samp1234 | 354:0da912441c7b | 9 | uint32_t INITIAL_FLASH[32]; |
samp1234 | 354:0da912441c7b | 10 | |
samp1234 | 354:0da912441c7b | 11 | /*corrected*/ |
samp1234 | 354:0da912441c7b | 12 | int *nativeflash = (int*)strt_add; |
samp1234 | 354:0da912441c7b | 13 | |
samp1234 | 354:0da912441c7b | 14 | void FLASH_INI() |
samp1234 | 354:0da912441c7b | 15 | { |
samp1234 | 354:0da912441c7b | 16 | INITIAL_FLASH[16] = 80000; |
samp1234 | 354:0da912441c7b | 17 | uint32_t read[32]; |
samp1234 | 354:0da912441c7b | 18 | for(int i=0;i<32;i++) |
samp1234 | 354:0da912441c7b | 19 | { |
samp1234 | 354:0da912441c7b | 20 | read[i] = nativeflash[i]; |
samp1234 | 354:0da912441c7b | 21 | } |
samp1234 | 354:0da912441c7b | 22 | |
samp1234 | 354:0da912441c7b | 23 | if(read[0] == -1) |
samp1234 | 354:0da912441c7b | 24 | { |
samp1234 | 354:0da912441c7b | 25 | for(int j=0;j<32;j++) |
samp1234 | 354:0da912441c7b | 26 | { |
samp1234 | 354:0da912441c7b | 27 | FCTN_CDMS_WR_FLASH(j,INITIAL_FLASH[j]); |
samp1234 | 354:0da912441c7b | 28 | } |
samp1234 | 354:0da912441c7b | 29 | } |
samp1234 | 354:0da912441c7b | 30 | else |
samp1234 | 354:0da912441c7b | 31 | { |
samp1234 | 354:0da912441c7b | 32 | for(int j=0;j<32;j++) |
samp1234 | 354:0da912441c7b | 33 | { |
samp1234 | 354:0da912441c7b | 34 | read[j] = nativeflash[j]; |
samp1234 | 354:0da912441c7b | 35 | } |
samp1234 | 354:0da912441c7b | 36 | } |
samp1234 | 354:0da912441c7b | 37 | EPS_V_A_EN_STATUS = read[0]; |
samp1234 | 354:0da912441c7b | 38 | BAE_STATUS = read[1]; |
samp1234 | 354:0da912441c7b | 39 | SD_STATUS = read[2]; |
samp1234 | 354:0da912441c7b | 40 | PL_STATUS = read[3]; |
samp1234 | 354:0da912441c7b | 41 | PL_EPS_LATCH_SW_EN = read[4]; |
samp1234 | 354:0da912441c7b | 42 | RTC_INIT_STATUS = read[5]; |
samp1234 | 354:0da912441c7b | 43 | CDMS_RTC_DISABLE = read[6]; |
samp1234 | 354:0da912441c7b | 44 | CDMS_RESET_COUNTER = read[7]; |
samp1234 | 354:0da912441c7b | 45 | TIME_LATEST_CDSMS_RESET = read[8]; |
samp1234 | 354:0da912441c7b | 46 | COM_TC_BYTES_LIMIT = read[9]; |
samp1234 | 354:0da912441c7b | 47 | COM_RX_CURRENT_MAX = read[10]; |
samp1234 | 354:0da912441c7b | 48 | COM_RX_DISABLE_TIMEOUT = read[11]; |
samp1234 | 354:0da912441c7b | 49 | COM_PA_TMP_HIGH = read[12]; |
samp1234 | 354:0da912441c7b | 50 | COM_PA_RECOVERY_TIMEOUT = read[13]; |
samp1234 | 354:0da912441c7b | 51 | COM_SESSION_TIMEOUT = read[14]; |
samp1234 | 354:0da912441c7b | 52 | COM_RSSI_MIN = read[15]; |
samp1234 | 354:0da912441c7b | 53 | SD_LIB_BLK_CURRENT = read[16]; |
samp1234 | 354:0da912441c7b | 54 | CDMS_RESET_COUNTER = read[17]; |
samp1234 | 354:0da912441c7b | 55 | } |
samp1234 | 354:0da912441c7b | 56 | |
samp1234 | 354:0da912441c7b | 57 | /*Writing to the Flash*/ |
samp1234 | 354:0da912441c7b | 58 | void FCTN_CDMS_WR_FLASH(uint16_t j,uint32_t datablock) //j-position to write address ; fdata - flash data to be written |
samp1234 | 354:0da912441c7b | 59 | { |
samp1234 | 354:0da912441c7b | 60 | for(int i=0;i<17;i++) |
samp1234 | 354:0da912441c7b | 61 | { |
samp1234 | 354:0da912441c7b | 62 | flasharray[i]=nativeflash[i]; |
samp1234 | 354:0da912441c7b | 63 | } |
samp1234 | 354:0da912441c7b | 64 | flasharray[j]=datablock; |
samp1234 | 354:0da912441c7b | 65 | erase_sector(strt_add); |
samp1234 | 354:0da912441c7b | 66 | program_flash(strt_add, (char*)flasharray,32); |
samp1234 | 354:0da912441c7b | 67 | } |
samp1234 | 354:0da912441c7b | 68 | /*End*/ |
samp1234 | 354:0da912441c7b | 69 | |
samp1234 | 354:0da912441c7b | 70 | /*===================================================MMS Functions=================================================*/ |
samp1234 | 354:0da912441c7b | 71 | |
samp1234 | 354:0da912441c7b | 72 | void FCTN_CDMS_WR_S_FLASH(uint16_t mid,uint32_t datablock); |
samp1234 | 354:0da912441c7b | 73 | |
samp1234 | 354:0da912441c7b | 74 | void FCTN_CDMS_WR_S_FLASH(uint16_t mid,uint32_t datablock) |
samp1234 | 354:0da912441c7b | 75 | { |
samp1234 | 354:0da912441c7b | 76 | if(mid == 0x0100) |
samp1234 | 354:0da912441c7b | 77 | { |
samp1234 | 354:0da912441c7b | 78 | FCTN_CDMS_WR_FLASH(11,(datablock>>16) & 0x000000FF); |
samp1234 | 354:0da912441c7b | 79 | FCTN_CDMS_WR_FLASH(13,(datablock>>8) & 0x000000FF); |
samp1234 | 354:0da912441c7b | 80 | FCTN_CDMS_WR_FLASH(14,datablock & 0x000000FF); |
samp1234 | 354:0da912441c7b | 81 | } |
samp1234 | 354:0da912441c7b | 82 | else if(mid == 0x0101) |
samp1234 | 354:0da912441c7b | 83 | { |
samp1234 | 354:0da912441c7b | 84 | FCTN_CDMS_WR_FLASH(12,(datablock>>16) & 0x000000FF); |
samp1234 | 354:0da912441c7b | 85 | FCTN_CDMS_WR_FLASH(10,(datablock>>8) & 0x000000FF); |
samp1234 | 354:0da912441c7b | 86 | FCTN_CDMS_WR_FLASH(15,datablock & 0x000000FF); |
samp1234 | 354:0da912441c7b | 87 | } |
samp1234 | 354:0da912441c7b | 88 | else if(mid == 0x0102) |
samp1234 | 354:0da912441c7b | 89 | { |
samp1234 | 354:0da912441c7b | 90 | FCTN_CDMS_WR_FLASH(9,datablock & 0x0000FFFF); |
samp1234 | 354:0da912441c7b | 91 | } |
samp1234 | 354:0da912441c7b | 92 | else if(mid == 0x0103) |
samp1234 | 354:0da912441c7b | 93 | { |
samp1234 | 354:0da912441c7b | 94 | FCTN_CDMS_WR_FLASH(6,datablock & 0x00000001); |
samp1234 | 354:0da912441c7b | 95 | } |
samp1234 | 354:0da912441c7b | 96 | } |
samp1234 | 354:0da912441c7b | 97 | |
samp1234 | 354:0da912441c7b | 98 | int verify_flash_sector(int mid,uint32_t* flasharray_thres) |
samp1234 | 354:0da912441c7b | 99 | { |
samp1234 | 354:0da912441c7b | 100 | int add = strt_add_thres + ((mid-1)*SECTOR_SIZE); |
samp1234 | 354:0da912441c7b | 101 | int result = 0; |
samp1234 | 354:0da912441c7b | 102 | int* testflash = (int*)add; |
samp1234 | 354:0da912441c7b | 103 | for(int i=0;i<32;i++) |
samp1234 | 354:0da912441c7b | 104 | { |
samp1234 | 354:0da912441c7b | 105 | if(testflash[i] == flasharray_thres[i]) |
samp1234 | 354:0da912441c7b | 106 | continue; |
samp1234 | 354:0da912441c7b | 107 | else |
samp1234 | 354:0da912441c7b | 108 | { |
samp1234 | 354:0da912441c7b | 109 | return 1; |
samp1234 | 354:0da912441c7b | 110 | } |
samp1234 | 354:0da912441c7b | 111 | } |
samp1234 | 354:0da912441c7b | 112 | return 0; |
samp1234 | 354:0da912441c7b | 113 | } |