Bläddra i källkod

Boot loader 작업 진행중

YJ 5 år sedan
förälder
incheckning
ec33d0b54c
40 ändrade filer med 810 tillägg och 0 borttagningar
  1. 0 0
      Debug/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_flash.su
  2. BIN
      Debug/Src/Bootloader.o
  3. 2 0
      Debug/Src/Bootloader.su
  4. BIN
      Debug/Src/CRC16.o
  5. 4 0
      Debug/Src/CRC16.su
  6. BIN
      Debug/Src/flash.o
  7. 8 0
      Debug/Src/flash.su
  8. BIN
      Debug/Src/main.o
  9. BIN
      Debug/Src/stm32f2xx_it.o
  10. BIN
      Debug/Src/uart.o
  11. 78 0
      Inc/Bootloader.h
  12. 23 0
      Inc/CRC16.h
  13. 26 0
      Inc/flash.h
  14. 45 0
      Src/Bootloader.c
  15. 157 0
      Src/CRC16.c
  16. 231 0
      Src/flash.c
  17. 105 0
      insight/STM32F207_ChannelCtrlProject.si4project/Backup/flash(3614).c
  18. 106 0
      insight/STM32F207_ChannelCtrlProject.si4project/Backup/flash(3910).h
  19. 25 0
      insight/STM32F207_ChannelCtrlProject.si4project/Backup/flash(5887).h
  20. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_cmsis_armclang.h.sisc
  21. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_cmsis_compiler.h.sisc
  22. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_cmsis_iccarm.h.sisc
  23. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_cmsis_version.h.sisc
  24. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_core_armv8mbl.h.sisc
  25. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_core_armv8mml.h.sisc
  26. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_core_cm1.h.sisc
  27. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_core_cm23.h.sisc
  28. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_core_cm33.h.sisc
  29. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_mpu_armv7.h.sisc
  30. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_mpu_armv8.h.sisc
  31. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_tz_context.h.sisc
  32. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_STM32F2xx_HAL_Driver_Inc_stm32f2xx_hal_exti.h.sisc
  33. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_STM32F2xx_HAL_Driver_Src_stm32f2xx_hal_exti.c.sisc
  34. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Inc_Bootloader.h.sisc
  35. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Inc_CRC16.h.sisc
  36. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Inc_flash.h.sisc
  37. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Src_Bootloader.c.sisc
  38. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Src_CRC16.c.sisc
  39. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Src_flash.c.sisc
  40. BIN
      insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Src_syscalls.c.sisc

+ 0 - 0
Debug/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_flash.su


BIN
Debug/Src/Bootloader.o


+ 2 - 0
Debug/Src/Bootloader.su

@@ -0,0 +1,2 @@
1
+Bootloader.c:17:6:Firmware_BootStart_Signal	8	static
2
+Bootloader.c:23:6:FirmwareUpdateStart	16	static

BIN
Debug/Src/CRC16.o


+ 4 - 0
Debug/Src/CRC16.su

@@ -0,0 +1,4 @@
1
+CRC16.c:50:10:CRC16_Generate	8	static
2
+CRC16.c:84:9:CRC16_Check	12	static
3
+CRC16.c:119:9:STH30_CreateCrc	8	static
4
+CRC16.c:137:9:STH30_CheckCrc	12	static

BIN
Debug/Src/flash.o


+ 8 - 0
Debug/Src/flash.su

@@ -0,0 +1,8 @@
1
+flash.c:17:6:Jump_App	8	static
2
+flash.c:30:6:FLASH_If_Init	8	static
3
+flash.c:42:6:Flash_InitRead	16	static
4
+flash.c:64:9:Flash_RGB_Data_Write	24	static
5
+flash.c:80:19:EraseFlash	40	static
6
+flash.c:121:9:Flash_write	16	static
7
+flash.c:156:10:GetSector	0	static
8
+flash.c:212:10:GetSectorSize	0	static

BIN
Debug/Src/main.o


BIN
Debug/Src/stm32f2xx_it.o


BIN
Debug/Src/uart.o


+ 78 - 0
Inc/Bootloader.h

@@ -0,0 +1,78 @@
1
+/*
2
+ * Bootloader.h
3
+ *
4
+ *  Created on: Jul 10, 2019
5
+ *      Author: parkyj
6
+ */
7
+
8
+#ifndef BOOTLOADER_H_
9
+#define BOOTLOADER_H_
10
+#include "main.h"
11
+
12
+extern uint8_t * UpdateFiledata;
13
+
14
+typedef struct{
15
+	uint8_t bluecell_header01;
16
+	uint8_t bluecell_header02;
17
+	uint8_t bluecell_header03;
18
+	uint8_t bluecell_header04;
19
+	uint8_t bluecell_type;
20
+	uint8_t bluecell_length_h;
21
+	uint8_t bluecell_length_l;
22
+	uint8_t bluecell_data[2048];
23
+}Blueprotocol_t;
24
+typedef enum {
25
+	BLUECELL_HEADER00 = 0,
26
+	BLUECELL_HEADER01,
27
+	BLUECELL_HEADER02,
28
+	BLUECELL_HEADER03,
29
+	BLUECELL_TYPE,
30
+	BLUECELL_LENGTH_H,
31
+	BLUECELL_LENGTH_L,
32
+	BLUECELL_UPDATACNT_H,
33
+	BLUECELL_UPDATACNT_L,
34
+	BLUECELL_DATA,
35
+}Bluenum;
36
+typedef enum {
37
+	BLUECELL_RESET = 0,
38
+	BLUECELL_START,
39
+	BLUECELL_SENDING,
40
+	BLUECELL_END,
41
+}updateseq;
42
+typedef enum updateseqok
43
+{
44
+    UpdateResetOK = 0,
45
+    UpdateStartOK,
46
+    UpdateSendingOK,
47
+    UpdateEndOK,
48
+};
49
+typedef enum{
50
+    bluecell_stx = 0,
51
+    bluecell_type = 1,
52
+    bluecell_length,
53
+	bluecell_CrcIndex,
54
+    bluecell_crc,
55
+    bluecell_ext,   
56
+}FirmwareUpdate_t;
57
+
58
+/*bluecell Header*/
59
+#define Bluecell_Header0  0x42//ASCII : B
60
+#define Bluecell_Header1  0x4C//ASCII : L
61
+#define Bluecell_Header2  0x55//ASCII : U
62
+#define Bluecell_Header3  0x45//ASCII : E
63
+/*bluecell type*/
64
+#define Bluecell_Reset  0x0A//ASCII : R
65
+#define Bluecell_Firmupdate_start     0x55//ASCII : U
66
+#define Bluecell_Firmupdate_sending   0x53//ASCII : S
67
+#define Bluecell_Firmupdate_end       0x65//ASCII : e
68
+#define Bluecell_Endbyte 0xED
69
+
70
+#define bluecell_Firmupdate_sendlength  1024
71
+
72
+#define bluecell_Firmupdate_Ackbytelength 12
73
+
74
+extern void FirmwareUpdate_Boot(void);
75
+
76
+
77
+extern void Firmware_BootStart_Signal();
78
+#endif /* BOOTLOADER_H_ */

+ 23 - 0
Inc/CRC16.h

@@ -0,0 +1,23 @@
1
+/*
2
+ * CRC16.h
3
+ *
4
+ *  Created on: 2019. 7. 3.
5
+ *      Author: parkyj
6
+ */
7
+
8
+#ifndef CRC16_H_
9
+#define CRC16_H_
10
+
11
+#include "main.h"
12
+
13
+typedef enum{
14
+    CHECKSUM_ERROR = 0,
15
+    NO_ERROR
16
+}etError;
17
+
18
+
19
+uint16_t CRC16_Generate(uint8_t *buf_ptr, int32_t len);
20
+etError CRC16_Check(uint8_t *buf_ptr, int32_t len,uint16_t checksum);
21
+uint8_t STH30_CreateCrc(uint8_t *data, uint8_t nbrOfBytes);
22
+uint8_t STH30_CreateCrc(uint8_t *data, uint8_t nbrOfBytes);
23
+#endif /* CRC16_H_ */

+ 26 - 0
Inc/flash.h

@@ -0,0 +1,26 @@
1
+/*
2
+ * flash.h
3
+ *
4
+ *  Created on: 2019. 7. 4.
5
+ *      Author: parkyj
6
+ */
7
+
8
+#ifndef FLASH_H_
9
+#define FLASH_H_
10
+
11
+#include "main.h"
12
+#include "CRC16.h"
13
+
14
+#define FLASH_USER_START_ADDR ((uint32_t)0x08004000)
15
+#define FLASH_USER_END_ADDR     FLASH_USER_START_ADDR + ((uint32_t)0x000FFFF)   /* End @ of user Flash area */
16
+#define APPLICATION_ADDRESS     (uint32_t)0x08004000      /* Start user code address: ADDR_FLASH_PAGE_8 */
17
+
18
+
19
+#define FirmwareUpdataAck  0x11
20
+#define FirmwareUpdataNak  0x22
21
+
22
+#define FirmwareUpdateDelay 50
23
+
24
+
25
+
26
+#endif // PYJ.2019.08.30_END -- 

+ 45 - 0
Src/Bootloader.c

@@ -0,0 +1,45 @@
1
+/*
2
+ * Bootloader.c
3
+ *
4
+ *  Created on: Jul 10, 2019
5
+ *      Author: parkyj
6
+ */
7
+#include "Bootloader.h"
8
+//Blueprotocol_t * UpdateFiledata;
9
+uint16_t updatecnt = 0;
10
+/***
11
+ * Header Check Function
12
+ * ***/
13
+#define Bluecell_BootStart 0x0b
14
+
15
+
16
+uint8_t BootStartdata[6] = {0xbe,Bluecell_BootStart,0x03,4,0,0xeb};
17
+void Firmware_BootStart_Signal(){
18
+	BootStartdata[bluecell_crc] = STH30_CreateCrc(&BootStartdata[bluecell_type],BootStartdata[bluecell_length]);
19
+    Uart1_Data_Send(&BootStartdata[bluecell_stx],BootStartdata[bluecell_length] + 3);
20
+}
21
+
22
+    uint8_t AckData_Buf[6] = {0xbe,FirmwareUpdataAck,0x03,5,0,0xbe};
23
+void FirmwareUpdateStart(uint8_t* data){
24
+    uint8_t ret = 0,crccheck = 0;
25
+    crccheck = STH30_CheckCrc(&data[bluecell_type],data[bluecell_length],data[data[bluecell_length] + 1]);
26
+    if(crccheck == NO_ERROR){
27
+        AckData_Buf[bluecell_type] = FirmwareUpdataAck;
28
+        if(data[bluecell_type] == 0xDD || data[bluecell_type] == 0xEE)//Start Firmware byte
29
+            ret = Flash_write(&data[0]);
30
+        if(ret == 1)
31
+            AckData_Buf[bluecell_type] = FirmwareUpdataNak;
32
+    }else{
33
+        for(uint8_t i = 0; i < data[bluecell_length] + 3; i++)
34
+            printf("%02x ",data[i]);
35
+        printf("Check Sum error \n");
36
+        AckData_Buf[bluecell_type] = FirmwareUpdataNak;
37
+    }
38
+    AckData_Buf[bluecell_crc] = STH30_CreateCrc(&AckData_Buf[bluecell_type],AckData_Buf[bluecell_length]);
39
+    if(data[bluecell_type] != 0xEE && data[bluecell_type] != Bluecell_Reset){
40
+        Uart1_Data_Send(&AckData_Buf[bluecell_stx],AckData_Buf[bluecell_length] + 3);
41
+    }
42
+    if(data[bluecell_type] == 0xEE)
43
+        printf("update Complete \n");
44
+}
45
+

+ 157 - 0
Src/CRC16.c

@@ -0,0 +1,157 @@
1
+/*
2
+ * CRC16.c
3
+ *
4
+ *  Created on: 2019. 7. 3.
5
+ *      Author: parkyj
6
+ */
7
+#include "CRC16.h"
8
+/*---------------------------------------------------------------------------------------*/
9
+/*									CRC16	TABLE						    			 */
10
+/*---------------------------------------------------------------------------------------*/
11
+uint16_t Table_CRC16[]  = {
12
+	0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
13
+	0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
14
+	0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
15
+	0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
16
+	0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
17
+	0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
18
+	0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
19
+	0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
20
+	0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
21
+	0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
22
+	0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
23
+	0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
24
+	0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
25
+	0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
26
+	0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
27
+	0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
28
+	0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
29
+	0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
30
+	0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
31
+	0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
32
+	0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
33
+	0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
34
+	0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
35
+	0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
36
+	0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
37
+	0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
38
+	0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
39
+	0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
40
+	0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
41
+	0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
42
+	0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
43
+	0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
44
+};
45
+#define POLYNOMIAL 0x131 // P(x) = x^8 + x^5 + x^4 + 1 = 100110001
46
+
47
+//-----------------------------------------------
48
+//UART CRC üũ �Լ�
49
+//-----------------------------------------------
50
+uint16_t CRC16_Generate(uint8_t *buf_ptr, int32_t len)
51
+{
52
+	uint8_t dt = 0U;
53
+	uint16_t crc16 = 0U;
54
+
55
+	len *= 8;
56
+	for(crc16 = (uint16_t)0x0000; len >= 8; len -= 8, buf_ptr++)
57
+	{
58
+		crc16 = (uint16_t)(Table_CRC16[(crc16>>8) ^ (uint16_t)(*buf_ptr)] ^ (crc16<<8));
59
+	}
60
+
61
+	if(len != 0)
62
+	{
63
+		dt = (uint8_t)(*buf_ptr << 8);
64
+
65
+		while(len != 0)
66
+		{
67
+			len--;
68
+
69
+			if(((crc16^dt) & ((uint16_t)1 << 15)) != 0)
70
+			{
71
+				crc16 =  (uint16_t)(crc16 << 1);
72
+				crc16 = (uint16_t)(crc16 ^ 0x1021);
73
+			}
74
+			else
75
+			{
76
+				crc16 =  (uint16_t)(crc16 << 1);
77
+			}
78
+			dt = (uint8_t)(dt << 1);
79
+		}
80
+	}
81
+	return(crc16);
82
+}
83
+
84
+etError CRC16_Check(uint8_t *buf_ptr, int32_t len,uint16_t checksum)
85
+{
86
+	uint8_t dt = 0U;
87
+	uint16_t crc16 = 0U;
88
+
89
+	len *= 8;
90
+	for(crc16 = (uint16_t)0x0000; len >= 8; len -= 8, buf_ptr++)
91
+	{
92
+		crc16 = (uint16_t)(Table_CRC16[(crc16>>8) ^ (uint16_t)(*buf_ptr)] ^ (crc16<<8));
93
+
94
+	}
95
+
96
+	if(len != 0)
97
+	{
98
+		dt = (uint8_t)(*buf_ptr << 8);
99
+
100
+		while(len != 0)
101
+		{
102
+			len--;
103
+
104
+			if(((crc16^dt) & ((uint16_t)1 << 15)) != 0)
105
+			{
106
+				crc16 =  (uint16_t)(crc16 << 1);
107
+				crc16 = (uint16_t)(crc16 ^ 0x1021);
108
+			}
109
+			else
110
+			{
111
+				crc16 =  (uint16_t)(crc16 << 1);
112
+			}
113
+			dt = (uint8_t)(dt << 1);
114
+		}
115
+	}
116
+	return(crc16 == checksum ? CHECKSUM_ERROR : NO_ERROR );
117
+}
118
+
119
+uint8_t STH30_CreateCrc(uint8_t *data, uint8_t nbrOfBytes)
120
+{
121
+  uint8_t bit;        // bit mask
122
+  uint8_t crc = 0xFF; // calculated checksum
123
+  uint8_t byteCtr;    // byte counter
124
+
125
+  // calculates 8-Bit checksum with given polynomial
126
+  for(byteCtr = 0; byteCtr < nbrOfBytes; byteCtr++)
127
+  {
128
+    crc ^= (data[byteCtr]);
129
+    for(bit = 8; bit > 0; --bit)
130
+    {
131
+      if(crc & 0x80) crc = (crc << 1) ^ POLYNOMIAL;
132
+      else           crc = (crc << 1);
133
+    }
134
+  }
135
+  return crc;
136
+}
137
+etError STH30_CheckCrc(uint8_t *data, uint8_t nbrOfBytes, uint8_t checksum)
138
+{
139
+  uint8_t bit;        // bit mask
140
+  uint8_t crc = 0xFF; // calculated checksum
141
+  uint8_t byteCtr;    // byte counter
142
+
143
+  // calculates 8-Bit checksum with given polynomial
144
+  for(byteCtr = 0; byteCtr < nbrOfBytes; byteCtr++)
145
+  {
146
+    crc ^= (data[byteCtr]);
147
+    for(bit = 8; bit > 0; --bit)
148
+    {
149
+      if(crc & 0x80) crc = (crc << 1) ^ POLYNOMIAL;
150
+      else           crc = (crc << 1);
151
+    }
152
+  }
153
+  if(crc != checksum) return CHECKSUM_ERROR;
154
+  else                return NO_ERROR;
155
+}
156
+
157
+

+ 231 - 0
Src/flash.c

@@ -0,0 +1,231 @@
1
+/*
2
+ * flash.c
3
+ *
4
+ *  Created on: 2019. 7. 15.
5
+ *      Author: parkyj
6
+ */
7
+#include "main.h"
8
+
9
+uint32_t GetSector(uint32_t);
10
+
11
+uint8_t flashinit = 0;
12
+uint32_t Address = FLASH_USER_START_ADDR;
13
+
14
+typedef void (*fptr)(void);
15
+fptr jump_to_app;
16
+uint32_t jump_addr;
17
+void Jump_App(void){
18
+    __HAL_RCC_TIM6_CLK_DISABLE(); // 筌띲끉�뵥???�뜝�룞�삕�솒紐뚯삕?? ?�뜝�룞�삕�뜝占�??�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕
19
+    printf("boot loader start\n");               //筌롫뗄苑��뜝占�? �빊�뮆�젾
20
+    jump_addr = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
21
+    jump_to_app = (fptr) jump_addr;
22
+    
23
+    /* init user app's sp */
24
+    printf("jump!\n");
25
+    __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
26
+    jump_to_app();
27
+}
28
+
29
+
30
+void FLASH_If_Init(void)
31
+{
32
+  /* Unlock the Program memory */
33
+  HAL_FLASH_Unlock();
34
+
35
+  /* Clear all FLASH flags */
36
+  __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | 
37
+                  FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR);
38
+  /* Unlock the Program memory */
39
+  HAL_FLASH_Lock();
40
+}
41
+
42
+void Flash_InitRead(void) // ?�뜝�룞�삕疫꿸퀬釉�?�뜝�룞�삕
43
+{
44
+    uint32_t  Address = 0;
45
+    Address = FLASH_USER_START_ADDR;
46
+    for(uint32_t i = 0; i < 16; i++ ){
47
+        printf("%08x : %02X \n",Address ,*(uint8_t*)Address);
48
+        Address++;
49
+    }
50
+#if 0 // PYJ.2019.03.27_BEGIN -- 
51
+    for(uint32_t i = 0; i < 13848; i++ ){
52
+        printf("%08x : %02X \n",Address ,*(uint8_t*)Address);
53
+        Address++;
54
+    }
55
+    Address = StartAddr;
56
+    for(uint32_t i = 0; i < 13848; i++ ){
57
+        printf("%02X ",*(uint8_t*)Address);
58
+        Address++;
59
+    }
60
+#endif // PYJ.2019.03.27_END -- 
61
+
62
+}
63
+
64
+uint8_t Flash_RGB_Data_Write(uint8_t* data){
65
+    uint16_t Firmdata = 0;
66
+    uint8_t ret = 0;
67
+    for(uint8_t i = 0; i < data[bluecell_length] - 2; i+=2){
68
+        Firmdata  = ((data[(bluecell_length + 1) + i]) & 0x00FF);
69
+        Firmdata  += ((data[(bluecell_length + 1) + (i + 1)] << 8) & 0xFF00);
70
+        if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,Address ,   (uint16_t)Firmdata) != HAL_OK){
71
+            printf("HAL NOT OK \n");
72
+            ret = 1;
73
+        }
74
+        Address += 2;
75
+        //if(!(i%FirmwareUpdateDelay))
76
+      //  HAL_Delay(1);
77
+    }
78
+    return ret;
79
+}
80
+HAL_StatusTypeDef EraseFlash()
81
+{
82
+  uint32_t SectorError = 0;
83
+  
84
+  /* Unlock to control */
85
+  HAL_FLASH_Unlock();
86
+  
87
+  /* Calculate sector index */
88
+  uint32_t UserSector = GetSector(FLASH_USER_START_ADDR);
89
+  uint32_t NbOfSectors = GetSector(FLASH_USER_END_ADDR) - UserSector + 1;
90
+  
91
+  /* Erase sectors */
92
+  FLASH_EraseInitTypeDef EraseInitStruct;
93
+  EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;
94
+  EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;
95
+  EraseInitStruct.Sector = UserSector;
96
+  EraseInitStruct.NbSectors = NbOfSectors;
97
+  
98
+  if(HAL_FLASHEx_Erase(&EraseInitStruct, &SectorError) != HAL_OK)
99
+  { 
100
+    uint32_t errorcode = HAL_FLASH_GetError();            
101
+    return HAL_ERROR;
102
+  }
103
+  
104
+  /* Clear cache for flash */
105
+  __HAL_FLASH_DATA_CACHE_DISABLE();
106
+  __HAL_FLASH_INSTRUCTION_CACHE_DISABLE();
107
+  
108
+  __HAL_FLASH_DATA_CACHE_RESET();
109
+  __HAL_FLASH_INSTRUCTION_CACHE_RESET();
110
+  
111
+  __HAL_FLASH_INSTRUCTION_CACHE_ENABLE();
112
+  __HAL_FLASH_DATA_CACHE_ENABLE();
113
+  
114
+  /* Lock flash control register */
115
+  HAL_FLASH_Lock();
116
+  
117
+  return HAL_OK;  
118
+}
119
+
120
+
121
+uint8_t Flash_write(uint8_t* data) // ?�뜝�룞�삕疫꿸퀬釉�?�뜝�룞�삕
122
+{
123
+    uint32_t SectorError = 0;
124
+    uint32_t UserSector = GetSector(FLASH_USER_START_ADDR);
125
+
126
+    /*Variable used for Erase procedure*/
127
+    static FLASH_EraseInitTypeDef EraseInitStruct;
128
+    static uint32_t PAGEError = 0;
129
+    uint8_t ret = 0;
130
+    /* Fill EraseInit structure*/
131
+    EraseInitStruct.TypeErase   = FLASH_TYPEERASE_SECTORS;
132
+    EraseInitStruct.Sector      = FLASH_USER_START_ADDR;
133
+//    EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_START_ADDR) / FLASH_PAGE_SIZE;
134
+    EraseInitStruct.NbSectors     = GetSector(FLASH_USER_END_ADDR) - UserSector + 1;
135
+    uint32_t NbOfSectors = 
136
+
137
+    __HAL_RCC_TIM6_CLK_DISABLE(); // 筌띲끉�뵥???�뜝�룞�삕�솒紐뚯삕?? ?�뜝�룞�삕�뜝占�??�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕
138
+    HAL_FLASH_Unlock(); // lock ??�뜝占�?
139
+    if(flashinit == 0){
140
+        flashinit= 1;
141
+        //FLASH_PageErase(StartAddr);
142
+//        if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK){
143
+//            printf("Erase Failed \r\n");
144
+//        }
145
+        EraseFlash();
146
+
147
+    }
148
+//    FLASH_If_Erase();
149
+    ret = Flash_RGB_Data_Write(&data[bluecell_stx]);
150
+    HAL_FLASH_Lock(); // lock ?�뜝�룞�삕域밸㈇由�
151
+    __HAL_RCC_TIM6_CLK_ENABLE(); // 筌띲끉�뵥???�뜝�룞�삕�솒紐뚯삕?? ?�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕
152
+
153
+    return ret;
154
+
155
+}
156
+uint32_t GetSector(uint32_t Address)
157
+{
158
+  uint32_t sector = 0;
159
+  
160
+  if((Address < FLASH_SECTOR_1) && (Address >= FLASH_SECTOR_0))
161
+  {
162
+    sector = FLASH_SECTOR_0;  
163
+  }
164
+  else if((Address < FLASH_SECTOR_2) && (Address >= FLASH_SECTOR_1))
165
+  {
166
+    sector = FLASH_SECTOR_1;  
167
+  }
168
+  else if((Address < FLASH_SECTOR_3) && (Address >= FLASH_SECTOR_2))
169
+  {
170
+    sector = FLASH_SECTOR_2;  
171
+  }
172
+  else if((Address < FLASH_SECTOR_4) && (Address >= FLASH_SECTOR_3))
173
+  {
174
+    sector = FLASH_SECTOR_3;  
175
+  }
176
+  else if((Address < FLASH_SECTOR_5) && (Address >= FLASH_SECTOR_4))
177
+  {
178
+    sector = FLASH_SECTOR_4;  
179
+  }
180
+  else if((Address < FLASH_SECTOR_6) && (Address >= FLASH_SECTOR_5))
181
+  {
182
+    sector = FLASH_SECTOR_5;  
183
+  }
184
+  else if((Address < FLASH_SECTOR_7) && (Address >= FLASH_SECTOR_6))
185
+  {
186
+    sector = FLASH_SECTOR_6;  
187
+  }
188
+  else if((Address < FLASH_SECTOR_8) && (Address >= FLASH_SECTOR_7))
189
+  {
190
+    sector = FLASH_SECTOR_7;  
191
+  }
192
+  else if((Address < FLASH_SECTOR_9) && (Address >= FLASH_SECTOR_8))
193
+  {
194
+    sector = FLASH_SECTOR_8;  
195
+  }
196
+  else if((Address < FLASH_SECTOR_10) && (Address >= FLASH_SECTOR_9))
197
+  {
198
+    sector = FLASH_SECTOR_9;  
199
+  }
200
+  else if((Address < FLASH_SECTOR_11) && (Address >= FLASH_SECTOR_10))
201
+  {
202
+    sector = FLASH_SECTOR_10;  
203
+  }
204
+  else /* (Address < FLASH_END_ADDR) && (Address >= FLASH_SECTOR_11) */
205
+  {
206
+    sector = FLASH_SECTOR_11;
207
+  }
208
+  
209
+  return sector;
210
+}
211
+
212
+uint32_t GetSectorSize(uint32_t Sector)
213
+{
214
+  uint32_t sectorsize = 0x00;
215
+  
216
+  if((Sector == FLASH_SECTOR_0) || (Sector == FLASH_SECTOR_1) || (Sector == FLASH_SECTOR_2) || (Sector == FLASH_SECTOR_3))
217
+  {
218
+    sectorsize = 16 * 1024;
219
+  }
220
+  else if(Sector == FLASH_SECTOR_4)
221
+  {
222
+    sectorsize = 64 * 1024;
223
+  }
224
+  else
225
+  {
226
+    sectorsize = 128 * 1024;
227
+  }  
228
+  return sectorsize;
229
+}
230
+
231
+

+ 105 - 0
insight/STM32F207_ChannelCtrlProject.si4project/Backup/flash(3614).c

@@ -0,0 +1,105 @@
1
+/*
2
+ * flash.c
3
+ *
4
+ *  Created on: 2019. 7. 15.
5
+ *      Author: parkyj
6
+ */
7
+#include "main.h"
8
+uint8_t flashinit = 0;
9
+uint32_t Address = FLASH_USER_START_ADDR;
10
+
11
+typedef void (*fptr)(void);
12
+fptr jump_to_app;
13
+uint32_t jump_addr;
14
+void Jump_App(void){
15
+    __HAL_RCC_TIM6_CLK_DISABLE(); // 筌띲끉�뵥???�뜝�룞�삕�솒紐뚯삕?? ?�뜝�룞�삕�뜝占�??�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕
16
+    printf("boot loader start\n");               //筌롫뗄苑��뜝占�? �빊�뮆�젾
17
+    jump_addr = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
18
+    jump_to_app = (fptr) jump_addr;
19
+    
20
+    /* init user app's sp */
21
+    printf("jump!\n");
22
+    __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
23
+    jump_to_app();
24
+}
25
+
26
+
27
+void FLASH_If_Init(void)
28
+{
29
+  /* Unlock the Program memory */
30
+  HAL_FLASH_Unlock();
31
+
32
+  /* Clear all FLASH flags */
33
+  __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);
34
+  /* Unlock the Program memory */
35
+  HAL_FLASH_Lock();
36
+}
37
+
38
+void Flash_InitRead(void) // ?�뜝�룞�삕疫꿸퀬釉�?�뜝�룞�삕
39
+{
40
+    uint32_t  Address = 0;
41
+    Address = FLASH_USER_START_ADDR;
42
+    for(uint32_t i = 0; i < 16; i++ ){
43
+        printf("%08x : %02X \n",Address ,*(uint8_t*)Address);
44
+        Address++;
45
+    }
46
+#if 0 // PYJ.2019.03.27_BEGIN -- 
47
+    for(uint32_t i = 0; i < 13848; i++ ){
48
+        printf("%08x : %02X \n",Address ,*(uint8_t*)Address);
49
+        Address++;
50
+    }
51
+    Address = StartAddr;
52
+    for(uint32_t i = 0; i < 13848; i++ ){
53
+        printf("%02X ",*(uint8_t*)Address);
54
+        Address++;
55
+    }
56
+#endif // PYJ.2019.03.27_END -- 
57
+
58
+}
59
+
60
+uint8_t Flash_RGB_Data_Write(uint8_t* data){
61
+    uint16_t Firmdata = 0;
62
+    uint8_t ret = 0;
63
+    for(uint8_t i = 0; i < data[bluecell_length] - 2; i+=2){
64
+        Firmdata  = ((data[(bluecell_length + 1) + i]) & 0x00FF);
65
+        Firmdata  += ((data[(bluecell_length + 1) + (i + 1)] << 8) & 0xFF00);
66
+        if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,Address ,   (uint16_t)Firmdata) != HAL_OK){
67
+            printf("HAL NOT OK \n");
68
+            ret = 1;
69
+        }
70
+        Address += 2;
71
+        //if(!(i%FirmwareUpdateDelay))
72
+      //  HAL_Delay(1);
73
+    }
74
+    return ret;
75
+}
76
+
77
+uint8_t Flash_write(uint8_t* data) // ?�뜝�룞�삕疫꿸퀬釉�?�뜝�룞�삕
78
+{
79
+
80
+    /*Variable used for Erase procedure*/
81
+    static FLASH_EraseInitTypeDef EraseInitStruct;
82
+    static uint32_t PAGEError = 0;
83
+    uint8_t ret = 0;
84
+    /* Fill EraseInit structure*/
85
+    EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
86
+    EraseInitStruct.PageAddress = FLASH_USER_START_ADDR;
87
+    EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_START_ADDR) / FLASH_PAGE_SIZE;
88
+
89
+    __HAL_RCC_TIM6_CLK_DISABLE(); // 筌띲끉�뵥???�뜝�룞�삕�솒紐뚯삕?? ?�뜝�룞�삕�뜝占�??�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕
90
+    HAL_FLASH_Unlock(); // lock ??�뜝占�?
91
+    if(flashinit == 0){
92
+        flashinit= 1;
93
+        //FLASH_PageErase(StartAddr);
94
+        if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK){
95
+            printf("Erase Failed \r\n");
96
+        }
97
+    }
98
+//    FLASH_If_Erase();
99
+    ret = Flash_RGB_Data_Write(&data[bluecell_stx]);
100
+    HAL_FLASH_Lock(); // lock ?�뜝�룞�삕域밸㈇由�
101
+    __HAL_RCC_TIM6_CLK_ENABLE(); // 筌띲끉�뵥???�뜝�룞�삕�솒紐뚯삕?? ?�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕?�뜝�룞�삕
102
+
103
+    return ret;
104
+
105
+}

+ 106 - 0
insight/STM32F207_ChannelCtrlProject.si4project/Backup/flash(3910).h

@@ -0,0 +1,106 @@
1
+#if 0 // PYJ.2019.08.30_BEGIN -- 
2
+/*
3
+ * flash.h
4
+ *
5
+ *  Created on: 2019. 7. 4.
6
+ *      Author: parkyj
7
+ */
8
+
9
+#ifndef FLASH_H_
10
+#define FLASH_H_
11
+
12
+#include "main.h"
13
+#include "CRC16.h"
14
+
15
+#define FLASH_USER_START_ADDR ((uint32_t)0x08004000)
16
+#define FLASH_USER_END_ADDR     FLASH_USER_START_ADDR + ((uint32_t)0x000FFFF)   /* End @ of user Flash area */
17
+#define APPLICATION_ADDRESS     (uint32_t)0x08004000      /* Start user code address: ADDR_FLASH_PAGE_8 */
18
+
19
+
20
+#define FirmwareUpdataAck  0x11
21
+#define FirmwareUpdataNak  0x22
22
+
23
+#define FirmwareUpdateDelay 50
24
+
25
+
26
+#endif /* FLASH_H_ */
27
+#else
28
+/**
29
+  ******************************************************************************
30
+  * @file    STM32F2xx_IAP/inc/flash_if.h 
31
+  * @author  MCD Application Team
32
+  * @version V1.0.0
33
+  * @date    02-May-2011
34
+  * @brief   This file provides all the headers of the flash_if functions.
35
+  ******************************************************************************
36
+  * @attention
37
+  *
38
+  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
39
+  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
40
+  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
41
+  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
42
+  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
43
+  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
44
+  *
45
+  * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
46
+  ******************************************************************************
47
+  */ 
48
+
49
+/* Define to prevent recursive inclusion -------------------------------------*/
50
+#ifndef __FLASH_IF_H
51
+#define __FLASH_IF_H
52
+
53
+/* Includes ------------------------------------------------------------------*/
54
+#include "stm32f2xx.h"
55
+#include "main.h"
56
+#include "CRC16.h"
57
+
58
+/* Exported types ------------------------------------------------------------*/
59
+#define FLASH_USER_START_ADDR ((uint32_t)0x08004000)
60
+#define FLASH_USER_END_ADDR     FLASH_USER_START_ADDR + ((uint32_t)0x000FFFF)   /* End @ of user Flash area */
61
+#define APPLICATION_ADDRESS     (uint32_t)0x08004000      /* Start user code address: ADDR_FLASH_PAGE_8 */
62
+
63
+
64
+#define FirmwareUpdataAck  0x11
65
+#define FirmwareUpdataNak  0x22
66
+
67
+#define FirmwareUpdateDelay 50
68
+
69
+/* Exported constants --------------------------------------------------------*/
70
+/* Base address of the Flash sectors */
71
+#define ADDR_FLASH_SECTOR_0     ((uint32_t)0x08000000) /* Base @ of Sector 0, 16 Kbyte */
72
+#define ADDR_FLASH_SECTOR_1     ((uint32_t)0x08004000) /* Base @ of Sector 1, 16 Kbyte */
73
+#define ADDR_FLASH_SECTOR_2     ((uint32_t)0x08008000) /* Base @ of Sector 2, 16 Kbyte */
74
+#define ADDR_FLASH_SECTOR_3     ((uint32_t)0x0800C000) /* Base @ of Sector 3, 16 Kbyte */
75
+#define ADDR_FLASH_SECTOR_4     ((uint32_t)0x08010000) /* Base @ of Sector 4, 64 Kbyte */
76
+#define ADDR_FLASH_SECTOR_5     ((uint32_t)0x08020000) /* Base @ of Sector 5, 128 Kbyte */
77
+#define ADDR_FLASH_SECTOR_6     ((uint32_t)0x08040000) /* Base @ of Sector 6, 128 Kbyte */
78
+#define ADDR_FLASH_SECTOR_7     ((uint32_t)0x08060000) /* Base @ of Sector 7, 128 Kbyte */
79
+#define ADDR_FLASH_SECTOR_8     ((uint32_t)0x08080000) /* Base @ of Sector 8, 128 Kbyte */
80
+#define ADDR_FLASH_SECTOR_9     ((uint32_t)0x080A0000) /* Base @ of Sector 9, 128 Kbyte */
81
+#define ADDR_FLASH_SECTOR_10    ((uint32_t)0x080C0000) /* Base @ of Sector 10, 128 Kbyte */
82
+#define ADDR_FLASH_SECTOR_11    ((uint32_t)0x080E0000) /* Base @ of Sector 11, 128 Kbyte */
83
+
84
+/* End of the Flash address */
85
+#define USER_FLASH_END_ADDRESS        0x080FFFFF
86
+/* Define the user application size */
87
+#define USER_FLASH_SIZE   (USER_FLASH_END_ADDRESS - APPLICATION_ADDRESS + 1)
88
+
89
+/* Define the address from where user application will be loaded.
90
+   Note: the 1st sector 0x08000000-0x08003FFF is reserved for the IAP code */
91
+#define APPLICATION_ADDRESS   (uint32_t)0x08004000 
92
+
93
+/* Exported macro ------------------------------------------------------------*/
94
+
95
+/* Exported functions ------------------------------------------------------- */
96
+void FLASH_If_Init(void);
97
+uint32_t FLASH_If_Erase(uint32_t StartSector);
98
+uint32_t FLASH_If_Write(__IO uint32_t* FlashAddress, uint32_t* Data, uint16_t DataLength);
99
+uint16_t FLASH_If_GetWriteProtectionStatus(void);
100
+uint32_t FLASH_If_DisableWriteProtection(void);
101
+
102
+#endif  /* __FLASH_IF_H */
103
+
104
+/*******************(C)COPYRIGHT 2011 STMicroelectronics *****END OF FILE******/
105
+
106
+#endif // PYJ.2019.08.30_END -- 

+ 25 - 0
insight/STM32F207_ChannelCtrlProject.si4project/Backup/flash(5887).h

@@ -0,0 +1,25 @@
1
+/*
2
+ * flash.h
3
+ *
4
+ *  Created on: 2019. 7. 4.
5
+ *      Author: parkyj
6
+ */
7
+
8
+#ifndef FLASH_H_
9
+#define FLASH_H_
10
+
11
+#include "main.h"
12
+#include "CRC16.h"
13
+
14
+#define FLASH_USER_START_ADDR ((uint32_t)0x08004000)
15
+#define FLASH_USER_END_ADDR     FLASH_USER_START_ADDR + ((uint32_t)0x000FFFF)   /* End @ of user Flash area */
16
+#define APPLICATION_ADDRESS     (uint32_t)0x08004000      /* Start user code address: ADDR_FLASH_PAGE_8 */
17
+
18
+
19
+#define FirmwareUpdataAck  0x11
20
+#define FirmwareUpdataNak  0x22
21
+
22
+#define FirmwareUpdateDelay 50
23
+
24
+
25
+#endif /* FLASH_H_ */

BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_cmsis_armclang.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_cmsis_compiler.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_cmsis_iccarm.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_cmsis_version.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_core_armv8mbl.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_core_armv8mml.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_core_cm1.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_core_cm23.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_core_cm33.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_mpu_armv7.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_mpu_armv8.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_CMSIS_Include_tz_context.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_STM32F2xx_HAL_Driver_Inc_stm32f2xx_hal_exti.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Drivers_STM32F2xx_HAL_Driver_Src_stm32f2xx_hal_exti.c.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Inc_Bootloader.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Inc_CRC16.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Inc_flash.h.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Src_Bootloader.c.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Src_CRC16.c.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Src_flash.c.sisc


BIN
insight/STM32F207_ChannelCtrlProject.si4project/cache/parse/.._Src_syscalls.c.sisc