11
11
#endif
12
12
13
13
#include "my_type.h"
14
+ #include "rtdef.h"
15
+
16
+
17
+
14
18
//LED指示灯显示状态
15
19
__IAPEXT unsigned char Led_status ;
16
20
#define Led_status MyIapLedStatus
@@ -43,8 +47,8 @@ __IAPEXT unsigned char Led_status;
43
47
#ifdef USE_STM32F103xD
44
48
//Flash基地址
45
49
#define STM_FLASH_BASE (0x08000000)
46
- //片内Flash大小:256K
47
- #define STM_FLASH_SIZE (0x40000 )
50
+ //片内Flash大小:384K
51
+ #define STM_FLASH_SIZE (0x60000 )
48
52
//扇区大小:2K
49
53
#define STM_PAGE_SIZE (0x800)
50
54
//默认地址映射
@@ -60,8 +64,8 @@ __IAPEXT unsigned char Led_status;
60
64
#ifdef USE_STM32F103xE
61
65
//Flash基地址
62
66
#define STM_FLASH_BASE (0x08000000)
63
- //片内Flash大小:256K
64
- #define STM_FLASH_SIZE (0x40000 )
67
+ //片内Flash大小:512K
68
+ #define STM_FLASH_SIZE (0x80000 )
65
69
//扇区大小:2K
66
70
#define STM_PAGE_SIZE (0x800)
67
71
//默认地址映射
@@ -114,8 +118,8 @@ __packed typedef struct
114
118
unsigned char UpdataType ;//升级类型
115
119
// 0: 选择升级
116
120
// 1: 强制升级
117
- unsigned int SoftFilter ;//固件版本过滤, 大于该版本的需要升级
118
- unsigned int HardFilter ;//适应的硬件版本, 大于该版本的需要升级
121
+ unsigned int SoftFilter ;//固件版本过滤, 低于该版本的需要升级
122
+ unsigned int HardFilter ;//适应的硬件版本, 等于该版本的需要升级
119
123
120
124
unsigned char FileType ;//文件类型
121
125
// 0: Hex文件(具有行校验,体积较大,ascii方式传输)
@@ -125,7 +129,7 @@ __packed typedef struct
125
129
// 0: 广播方式,无应答
126
130
// 1: 问答方式,一问一答
127
131
unsigned int CommGap ;//通信包间隔,单位ms
128
- unsigned int PackSize ;//数据单包大小(4的整数倍)
132
+ unsigned int PackSize ;//数据单包大小(4的整数倍)
129
133
130
134
}MyIapFlagType ;
131
135
__IAPEXT MyIapFlagType MyIapFlag ;
@@ -142,7 +146,7 @@ __packed typedef struct
142
146
unsigned char WriteStep ;//写步骤
143
147
//0:空闲
144
148
//1:接收数据完成
145
- //2:正在写入
149
+ //2:正在写入,保护缓存
146
150
//3:写完成
147
151
unsigned long WriteTime ;//上一包写入时间
148
152
unsigned long WriteAddr ;//当前写地址
@@ -169,13 +173,56 @@ __packed typedef enum
169
173
__IAPEXT MyIapLedStatusType MyIapLedStatus ;
170
174
171
175
176
+
177
+ //***********************************************************
178
+ //通用协议结构(包头)
179
+ __packed typedef struct
180
+ {
181
+ unsigned char Head [3 ];//头 0x3A,0x5B,0x7C
182
+ unsigned char ProVer ;//协议版本号
183
+ unsigned char DevType ;//设备类型
184
+ unsigned char DevAddr ;//设备地址
185
+ unsigned char AskFlag ;//应答标志
186
+ //数据包发起方:
187
+ //0x00:命令需要应答
188
+ //0x01:命令不需要应答
189
+ //数据包应答方:
190
+ //0x02:正在应答(后续还有数据包)
191
+ //0x03:应答完成(成功)
192
+ //0x04:数据错误,请求重发或终止
193
+ //0x05:设备忙,无法响应
194
+ unsigned int DateLen ;//数据体长度
195
+ }MyProHeadBaseType ;
196
+
197
+ //通用协议结构(包头)
198
+ __packed typedef struct
199
+ {
200
+ unsigned char Crc [2 ];//校验
201
+ unsigned char Tail ;//尾 0x7E
202
+ }MyProTailBaseType ;
203
+
204
+ //开始升级协议结构(US)
205
+ __packed typedef struct
206
+ {
207
+ unsigned char Cmd [2 ];//
208
+ unsigned char Tail ;//尾 0x7E
209
+ }MyProCmdUSType ;
210
+
211
+
212
+
213
+
214
+
215
+
172
216
//函数声明
173
217
__IAPEXT void Iap_Map_Init (void );
174
218
__IAPEXT void iap_jump_to_user_app (void );
175
219
__IAPEXT void MX_GPIO_Init (void );
176
220
__IAPEXT void LedRun (void );
177
221
__IAPEXT void led_display_entry (void * parameter );
178
222
__IAPEXT void iap_thread_init (void );
223
+ __IAPEXT rt_err_t dev_iap_uart_func (rt_device_t dev , rt_size_t size );
224
+ __IAPEXT void my_soft_reset (void );
225
+ __IAPEXT void iap_uart_dev_init (void );
179
226
180
227
#endif
181
228
0 commit comments