1.STM32 Bootloader与APP

  IROM中可以分成两个区域,起始代码运行地址为0x08000000,这是基本固定的,可以将IROM的0x08000000 ~ 0x08002000这8KB的空间存放Bootloader代码,而0x08002000 ~ 上限的位置存放APP代码。

  需要实现两个工程,分别为bootloader工程与app工程。

  1.1 先说bootloader工程,以IAR为例

  建立基本stm32工程需要的工程文件等,工程的建立这里不去说明,有了工程后,需要将该工程代码的链接地址配置为0x08000000 ~ 0x08002000,对于IAR可以在icf文件中进行修改参数达到效果,也可在工程配置中修改达到效果,中断向量表的地址为程序运行起始地址就行。

  1.1.1 在icf中修改链接地址,__ICFEDIT_intvec_start__是中断向量表位置,按照上面说的bootloader地址范围,这里要填起始地址0x08000000,__ICFEDIT_region_ROM_start和__ICFEDIT_region_ROM_end__是配置这部分bootloader代码在IROM中的位置,根据上面说的划分区域,这里start应是0x08000000、end应是0x08002000,后面的RAM_Start与RAM_end是内存的起始地址与结束地址,IROM和RAM的范围应该能根据实际芯片手册去划分修改。修改后到时编译好程序,链接脚本就会将程序链接到对应IROM中。

  直接通过icf文件修改,其实就是一个链接脚本

  直接通过工程修改,Vector Table是设置向量表的位置

  1.1.2 之后就可以开始撸起bootloader代码了,看你的需求是什么,普遍bootloader的需求都是起到一个搬运工的作用,当发现有app的升级文件需要升级时,从一个存放的介质中搬运到IROM中对应的APP代码位置,然后跳转到APP代码位置进行运行。

先贴代码

  头文件

 1 #ifndef __TOTOAL_H__
2 #define __TOTOAL_H__
3
4 #include <stdio.h>
5 #include <string.h>
6 #include <stdlib.h>
7
8
9 /****************ST*********************/
10 #include "stm32l1xx.h"
11 #include "misc.h"
12 #include "stm32l1xx_flash.h"
13 #include "stm32l1xx_usart.h"
14 #include "stm32l1xx_gpio.h"
15 #include "stm32l1xx_rcc.h"
16 #include "stm32l1xx_syscfg.h"
17 /**************************************/
18
19
20 /*****************SELF********************/
21 #include "bsp.h"
22 #include "spi.h"
23 #include "flash.h"
24 #include "USART.h"
25 /***************************************/
26
27 #define CONFIG_RELASE 0
28
29 #if (CONFIG_RELASE == 0)
30 #define Debug(fmt,arg...) printf(fmt,##arg)
31 #else
32 #define Debug(fmt,arg...)
33 #endif
34
35 #define u8 unsigned char
36 #define u16 unsigned short
37 #define u32 unsigned int
38
39 #define SPIFLASHBUF_MAX_LEN (4096) //spi flash最大缓冲
40
41 #define APPLICATIONADDRESS (0x08002000)
42
43
44 extern unsigned char SPI_FLASH_BUF[]; //Spi Flash使用的临时缓冲
45
46 #endif //__TOTOAL_H__

  C文件

 1 #include "total.h"
2
3
4 unsigned char SPI_FLASH_BUF[4096]; //Spi Flash使用的临时缓冲
5
6
7 typedef void (*pFunction)(void);
8 pFunction Jump_To_Application;
9 unsigned int JumpAddress;
10
11
12 extern int LoopCount;
13
14 /*************************************
15 *
16 * Funciton Name : System_Initializes
17 * Function :
18 *
19 *************************************/
20 void System_Initializes(void)
21 {
22 unsigned int UpdateFileLogo = 0;
23 unsigned int WriteUpdateFileLogo = 0x00000000;
24
25 memset(SPI_FLASH_BUF, 0, sizeof(SPI_FLASH_BUF));
26
27 BSP_Initializes();
28
29 Debug("----[Boot]BootLoader Running... \r\n");
30
31 SysTick_Config(36000000 / 1000);
32
33 // 读取外部flash有无升级文件需要更新
34 SPI_Flash_Read((unsigned char *)&UpdateFileLogo, CONFIG_UPDATE_FILE_ADDR_LOGO, 4);
35
36 // 是否有未更新的升级文件在外部flash中
37 if ( UpdateFileLogo == 0x98765432 )
38 {
39 unsigned int i = 0;
40 unsigned int FalshData = 0x0;
41
42 FLASH_Unlock();
43
44 //擦除内部app程序flash位置
45 for ( i = 0; i < 100; i++ )
46 {
47 FLASH_ErasePage(0x8002000 + (0x400 * i)); //1K 1K擦
48 }
49
50 // 将外部flash存储升级文件的数据,复制到IROM中的APP区域,,升级包的校验什么的都应该去做处理计算 0x19000 100KB
51 for ( i = 0; i < 0x19000 / 4; i++ )
52 {
53 SPI_Flash_Read((unsigned char *)&FalshData, CONFIG_FLASH_SAVE_UPDATE_INDEX + i * 4, 4);
54
55 FLASH_FastProgramWord(0x8002000 + i * 4, FalshData);
56 }
57
58 FLASH_Lock();
59
60 // 更新完毕,将外部flash代表有无未更新的升级标志变为无更新
61 SPI_Flash_Write((unsigned char *)&WriteUpdateFileLogo, CONFIG_UPDATE_FILE_ADDR_LOGO, 4);
62
63 NVIC_SystemReset(); //复位
64 }
65
66 while ( LoopCount > 0 );
67
68 __disable_irq();
69
70 /* Test if user code is programmed starting from address "ApplicationAddress" */
71 if (((*(__IO uint32_t*)APPLICATIONADDRESS) & 0x2FFE0000 ) == 0x20000000)
72 {
73
74 Debug("----[Boot]Jump_To_Application!!!\r\n");
75
76 /* Jump to user application */
77 JumpAddress = *(__IO uint32_t*) (APPLICATIONADDRESS + 4);
78 Jump_To_Application = (pFunction) JumpAddress;
79 /* Initialize user application's Stack Pointer */
80 __set_MSP(*(__IO uint32_t*) APPLICATIONADDRESS);
81 Jump_To_Application();
82 }
83 else
84 {
85 Debug("----[Boot]APPLICATIONADDRESS is ERROR!!!\r\n");
86 }
87 }
88
89 int main(void)
90 {
91 System_Initializes();
92
93
94 while (1);
95 }

  说明:主要就是判断介质中是否有升级文件需要升级,如果有则擦除IROM中APP代码对应的位置,然后将介质中的APP升级文件搬运到IROM中的APP位置去,没问题后,定义一个函数指针指向APP应用程序代码段的地址,就是链接地址0x08002000,然后调用函数指针直接到这个代码段运行,运行之前设置一下APP链接地址数的堆栈。栈顶设置为起始地址的前4个字节,函数指针指向的其实是这个起始地址的后4个字节,表示中断向量表的复位中断向量位置。所以起始地址+4,然后运行。

  1.2 APP工程,APP的工程搭建好后,同样的要修改链接位置,将程序代码链接到指定的位置去,同样的可以通过icf文件修改,也可以直接通过工程修改,这里就不在进行说明,IROM链接的起始地址为0x08002000,上限就是IROM的上限即可。配置好链接地址后,就可以撸起你的代码了,但如果想要让bootloader跳转到app能够成功,则必须在app代码的开始设置好中断向量的表偏移,因为app的代码是在0x08002000开始,所以中断向量表的位置设置为0x08002000即可。

1     /* 设置中断向量表位置 0x08002000 */
2 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);

   如此就完成了bootloader与app工程。一般bootloader写好后是不需要重复的更改的,而只会该应用程序,可以将bootloader代码编译成bin文件,因为bin文件全都是数据,所以可以转换成一个数组,表示一个代码段,然后将这个数据放入到APP的工程中,将这个bootloader的数组指定到一个IROM的位置,这样就可以达到一次烧写两个工程的效果。

  如何将bootloader的数组指定到固定的IROM中,使用#pragma loation = 0Xxxxxxxxx  __root 就可以指定,我是这么指定的,指定到了0x08000000位置。同时APP的工程链接地址要为0x08002000,因为按照上面说的对IROM的划分,应该要如此划分。

  1 #pragma location = 0x08000000
2 __root const unsigned char STM32L15_BootLoader[]={200,20,0,32,117,20,0,8,5,18,0,8,7,18,0,8,
3 9,18,0,8,11,18,0,8,13,18,0,8,0,0,0,0,
4 0,0,0,0,0,0,0,0,0,0,0,0,145,20,0,8,
5 15,18,0,8,0,0,0,0,149,20,0,8,17,18,0,8,
6 153,20,0,8,157,20,0,8,161,20,0,8,209,18,0,8,
7 165,20,0,8,169,20,0,8,173,20,0,8,177,20,0,8,
8 181,20,0,8,185,20,0,8,189,20,0,8,193,20,0,8,
9 197,20,0,8,201,20,0,8,205,20,0,8,209,20,0,8,
10 213,20,0,8,217,20,0,8,221,20,0,8,225,20,0,8,
11 229,20,0,8,233,20,0,8,237,20,0,8,241,20,0,8,
12 245,20,0,8,249,20,0,8,253,20,0,8,1,21,0,8,
13 5,21,0,8,205,18,0,8,9,21,0,8,13,21,0,8,
14 17,21,0,8,21,21,0,8,25,21,0,8,29,21,0,8,
15 33,21,0,8,37,21,0,8,41,21,0,8,45,21,0,8,
16 207,18,0,8,49,21,0,8,53,21,0,8,57,21,0,8,
17 61,21,0,8,56,181,0,36,79,244,128,81,223,248,204,2,
18 0,240,223,249,5,32,0,240,100,250,255,32,0,240,97,250,
19 5,0,79,244,128,81,223,248,180,2,0,240,208,249,40,0,
20 192,178,50,189,128,181,79,244,128,81,223,248,160,2,0,240,
21 200,249,6,32,0,240,77,250,79,244,128,81,223,248,140,2,
22 0,240,189,249,1,189,45,233,240,65,4,0,13,0,22,0,
23 0,39,79,244,128,81,223,248,116,2,0,240,178,249,3,32,
24 0,240,55,250,40,0,0,12,192,178,0,240,50,250,40,0,
25 0,10,192,178,0,240,45,250,40,0,192,178,0,240,41,250,
26 95,240,0,8,64,70,49,0,128,178,137,178,136,66,8,210,
27 255,32,0,240,30,250,65,70,137,178,96,84,24,241,1,8,
28 240,231,79,244,128,81,223,248,36,2,0,240,136,249,189,232,
29 240,129,248,181,4,0,13,0,22,0,255,247,179,255,79,244,
30 128,81,130,72,0,240,125,249,2,32,0,240,2,250,40,0,
31 0,12,192,178,0,240,253,249,40,0,0,10,192,178,0,240,
32 248,249,40,0,192,178,0,240,244,249,0,39,56,0,49,0,
33 128,178,137,178,136,66,6,210,56,0,128,178,32,92,0,240,
34 232,249,127,28,242,231,79,244,128,81,112,72,0,240,87,249,
35 0,240,214,248,241,189,248,181,4,0,13,0,22,0,21,240,
36 255,7,215,245,128,119,56,0,49,0,128,178,137,178,136,66,
37 0,211,55,0,58,0,146,178,41,0,32,0,255,247,185,255,
38 48,0,57,0,128,178,137,178,136,66,18,208,56,0,128,178,
39 4,68,56,0,128,178,69,25,246,27,48,0,128,178,64,242,
40 1,17,136,66,3,219,79,244,128,112,7,0,226,231,55,0,
41 224,231,241,189,45,233,240,71,4,0,13,0,22,0,47,0,
42 63,11,168,70,95,234,8,88,95,234,24,88,216,245,128,89,
43 72,70,49,0,128,178,137,178,136,66,0,211,177,70,79,244,
44 128,82,79,244,128,81,1,251,7,241,73,72,255,247,75,255,
45 0,32,130,70,80,70,73,70,128,178,137,178,136,66,11,210,
46 67,73,66,70,146,178,80,70,128,178,130,24,136,92,255,40,
47 2,209,26,241,1,10,237,231,80,70,73,70,128,178,137,178,
48 136,66,33,210,56,0,0,240,68,248,0,32,130,70,80,70,
49 73,70,128,178,137,178,136,66,12,210,80,70,128,178,33,92,
50 51,74,83,70,155,178,64,70,128,178,195,24,209,84,26,241,
51 1,10,236,231,79,244,128,82,79,244,128,81,1,251,7,241,
52 43,72,255,247,120,255,5,224,74,70,146,178,41,0,32,0,
53 255,247,113,255,48,0,73,70,128,178,137,178,136,66,22,208,
54 127,28,0,32,128,70,72,70,128,178,4,68,72,70,128,178,
55 69,25,182,235,9,6,48,0,128,178,65,242,1,1,136,66,
56 3,219,79,244,128,80,129,70,153,231,177,70,151,231,189,232,
57 240,135,16,181,4,0,79,244,128,80,68,67,255,247,210,254,
58 0,240,30,248,79,244,128,81,16,72,0,240,154,248,32,32,
59 0,240,31,249,32,0,0,12,192,178,0,240,26,249,32,0,
60 0,10,192,178,0,240,21,249,32,0,192,178,0,240,17,249,
61 79,244,128,81,5,72,0,240,130,248,0,240,1,248,16,189,
62 128,181,255,247,151,254,192,7,251,212,1,189,0,4,2,64,
63 104,0,0,32,240,180,0,34,0,35,0,36,0,39,0,37,
64 16,45,92,210,1,34,170,64,19,0,10,104,26,64,20,0,
65 156,66,82,209,6,104,95,240,3,12,42,0,210,178,82,0,
66 28,250,2,252,54,234,12,6,145,248,4,192,42,0,210,178,
67 82,0,28,250,2,252,92,234,6,6,6,96,10,121,1,42,
68 2,208,10,121,2,42,36,209,135,104,95,240,3,12,42,0,
69 210,178,82,0,28,250,2,252,55,234,12,7,145,248,5,192,
70 42,0,210,178,82,0,28,250,2,252,92,234,7,7,135,96,
71 130,136,95,240,1,12,28,250,5,252,50,234,12,2,145,248,
72 6,192,28,250,5,252,31,250,140,252,92,234,2,2,22,0,
73 134,128,194,104,95,240,3,12,47,0,255,178,127,0,28,250,
74 7,247,50,234,7,7,145,248,7,192,42,0,210,178,82,0,
75 28,250,2,252,92,234,7,7,199,96,109,28,160,231,240,188,
76 112,71,16,180,2,0,0,35,16,138,12,0,164,178,32,66,
77 1,208,1,32,0,224,0,32,192,178,16,188,112,71,1,131,
78 112,71,65,131,112,71,240,181,0,36,0,37,19,0,219,178,
79 17,240,7,6,246,178,182,0,19,250,6,246,11,0,155,178,
80 219,16,0,235,131,7,11,0,155,178,219,16,0,235,131,3,
81 211,248,32,192,95,240,15,14,17,240,7,3,219,178,155,0,
82 30,250,3,254,60,234,14,12,199,248,32,192,11,0,155,178,
83 219,16,0,235,131,3,27,106,51,67,15,0,191,178,255,16,
84 0,235,135,7,59,98,240,189,224,181,79,244,0,96,0,144,
85 1,32,141,248,4,0,0,32,141,248,6,0,1,32,141,248,
86 5,0,105,70,65,72,255,247,69,255,79,244,0,97,63,72,
87 255,247,181,255,79,244,32,64,0,144,1,32,141,248,5,0,
88 1,32,141,248,4,0,0,32,141,248,6,0,105,70,55,72,
89 255,247,48,255,79,244,128,80,0,144,105,70,51,72,255,247,
90 41,255,79,244,128,112,0,144,105,70,49,72,255,247,34,255,
91 79,244,128,64,0,144,0,32,141,248,7,0,0,32,141,248,
92 4,0,105,70,41,72,255,247,21,255,7,189,128,181,255,247,
93 187,255,79,244,128,81,37,72,255,247,129,255,79,244,128,113,
94 35,72,255,247,124,255,79,244,0,81,32,72,255,247,121,255,
95 1,189,56,181,4,0,0,32,0,37,40,0,192,178,8,40,
96 43,218,79,244,0,81,25,72,255,247,107,255,32,6,5,213,
97 79,244,0,65,21,72,255,247,98,255,4,224,79,244,0,65,
98 18,72,255,247,94,255,79,244,0,81,16,72,255,247,87,255,
99 100,0,0,191,0,191,0,191,0,191,79,244,128,65,11,72,
100 255,247,63,255,0,40,1,208,84,240,1,4,79,244,0,81,
101 6,72,255,247,70,255,109,28,207,231,79,244,0,81,3,72,
102 255,247,63,255,32,0,192,178,50,189,0,0,0,4,2,64,
103 0,0,2,64,16,180,2,0,82,178,0,42,9,213,10,1,
104 83,75,4,0,100,178,20,240,15,4,35,68,3,248,4,44,
105 4,224,10,1,79,75,4,0,100,178,26,85,16,188,112,71,
106 191,243,79,143,76,72,1,104,17,244,224,97,75,72,1,67,
107 73,72,1,96,191,243,79,143,254,231,16,181,4,0,96,30,
108 176,241,128,127,1,211,1,32,14,224,96,30,68,73,8,96,
109 15,33,95,240,255,48,255,247,205,255,0,32,65,73,8,96,
110 7,32,65,73,8,96,0,32,16,189,127,181,0,32,1,144,
111 0,32,2,144,79,244,128,84,0,37,60,78,42,0,33,0,
112 48,0,0,240,141,248,0,240,4,249,57,72,0,240,34,249,
113 72,246,160,64,255,247,209,255,4,34,95,244,80,1,1,168,
114 255,247,33,253,1,152,51,73,136,66,45,209,0,36,0,32,
115 0,144,0,240,35,249,0,37,100,45,8,210,79,244,128,96,
116 45,73,0,251,5,16,0,240,53,249,109,28,244,231,0,36,
117 180,245,200,79,14,210,4,34,161,0,17,245,80,1,104,70,
118 255,247,1,253,0,153,36,72,16,235,132,0,0,240,88,249,
119 100,28,237,231,0,240,21,249,4,34,95,244,80,1,2,168,
120 255,247,136,253,255,247,140,255,28,72,0,104,1,40,251,218,
121 114,182,25,72,1,104,26,72,1,64,177,241,0,95,18,209,
122 24,72,0,240,215,248,24,72,0,104,24,73,8,96,23,72,
123 0,104,23,73,8,96,16,72,0,104,128,243,8,136,20,72,
124 0,104,128,71,2,224,19,72,0,240,196,248,127,189,0,0,
125 24,237,0,224,0,228,0,224,12,237,0,224,4,0,250,5,
126 20,224,0,224,24,224,0,224,16,224,0,224,104,0,0,32,
127 160,19,0,8,50,84,118,152,0,32,0,8,0,0,0,32,
128 0,0,254,47,196,19,0,8,4,32,0,8,188,16,0,32,
129 184,16,0,32,76,19,0,8,128,181,255,247,102,255,254,231,
130 98,243,15,34,98,243,31,66,64,24,16,240,3,3,8,208,
131 201,26,31,211,219,7,72,191,0,248,1,45,40,191,32,248,
132 2,45,19,0,48,180,20,70,21,70,16,57,40,191,32,233,
133 60,0,250,216,73,7,40,191,32,233,12,0,72,191,64,248,
134 4,45,137,0,40,191,32,248,2,45,72,191,0,248,1,45,
135 48,188,112,71,201,24,24,191,0,248,1,45,203,7,40,191,
136 0,248,1,45,112,71,0,0,128,181,1,33,15,32,0,240,
137 215,249,1,33,79,244,128,64,0,240,226,249,1,189,224,181,
138 128,32,0,144,1,32,141,248,4,0,0,32,141,248,6,0,
139 1,32,141,248,5,0,105,70,34,72,255,247,155,253,128,33,
140 32,72,255,247,12,254,7,189,224,181,79,244,0,80,0,144,
141 1,32,141,248,4,0,0,32,141,248,6,0,1,32,141,248,
142 5,0,105,70,24,72,255,247,133,253,16,32,0,144,1,32,
143 141,248,4,0,0,32,141,248,6,0,1,32,141,248,5,0,
144 105,70,18,72,255,247,118,253,16,33,16,72,255,247,231,253,
145 7,189,128,181,255,247,184,255,255,247,193,255,255,247,212,255,
146 79,244,0,81,8,72,255,247,218,253,1,32,0,144,0,35,
147 8,34,95,244,225,49,6,72,0,240,195,249,255,247,70,254,
148 1,189,0,0,0,4,2,64,0,8,2,64,0,0,2,64,
149 0,56,1,64,14,180,192,181,2,70,3,168,0,33,1,144,
150 0,145,1,171,1,33,4,72,120,68,12,48,0,240,42,250,
151 6,188,93,248,16,251,0,191,249,10,0,0,128,181,223,248,
152 28,1,0,104,128,7,11,213,0,240,96,248,223,248,16,1,
153 223,248,16,17,8,96,223,248,16,1,223,248,8,17,8,96,
154 1,189,223,248,248,0,0,104,80,240,2,0,223,248,236,16,
155 8,96,112,71,112,181,4,0,4,38,79,244,0,64,0,240,
156 125,248,5,0,40,0,192,178,4,40,38,209,223,248,204,0,
157 0,104,80,244,0,112,223,248,196,16,8,96,223,248,188,0,
158 0,104,80,240,8,0,223,248,180,16,8,96,0,32,32,96,
159 79,244,0,64,0,240,98,248,5,0,223,248,160,0,0,104,
160 48,240,8,0,223,248,148,16,8,96,223,248,144,0,0,104,
161 48,244,0,112,223,248,132,16,8,96,40,0,192,178,112,189,
162 248,181,4,0,13,0,4,38,79,244,0,64,0,240,70,248,
163 7,0,56,0,192,178,4,40,5,209,37,96,79,244,0,64,
164 0,240,60,248,7,0,56,0,192,178,242,189,223,248,76,0,
165 0,104,192,7,9,213,223,248,84,0,223,248,84,16,8,96,
166 223,248,80,0,223,248,72,16,8,96,112,71,4,33,18,72,
167 0,104,192,7,1,213,1,32,13,224,15,72,0,104,192,5,
168 1,213,2,32,7,224,12,72,0,104,16,244,240,95,1,208,
169 3,32,0,224,4,32,192,178,112,71,0,0,4,60,2,64,
170 191,174,157,140,16,60,2,64,22,21,20,19,239,205,171,137,
171 12,60,2,64,5,4,3,2,24,60,2,64,28,181,4,0,
172 4,32,141,248,0,0,255,247,209,255,141,248,0,0,157,248,
173 0,0,1,40,7,209,0,44,5,208,255,247,199,255,141,248,
174 0,0,100,30,243,231,0,44,2,209,5,32,141,248,0,0,
175 157,248,0,0,22,189,0,0,45,233,240,79,0,34,0,35,
176 0,36,0,33,0,37,0,38,223,248,116,113,63,104,23,240,
177 12,7,188,70,188,241,0,15,9,208,188,241,4,15,24,208,
178 188,241,8,15,25,208,188,241,12,15,26,208,67,224,223,248,
179 84,33,18,104,194,243,66,50,22,0,95,240,1,12,114,28,
180 28,250,2,252,79,244,0,66,2,251,12,252,192,248,0,192,
181 65,224,223,248,52,33,2,96,61,224,223,248,48,33,2,96,
182 57,224,71,74,18,104,18,244,112,18,223,248,20,193,220,248,
183 0,192,28,244,64,12,223,248,24,225,146,12,30,248,2,32,
184 19,0,95,234,156,92,28,241,1,12,100,70,60,74,18,104,
185 18,244,128,50,17,0,0,41,6,209,59,74,2,251,3,242,
186 178,251,244,242,2,96,5,224,56,74,2,251,3,242,178,251,
187 244,242,2,96,15,224,51,74,18,104,194,243,66,50,22,0,
188 95,240,1,12,114,28,28,250,2,252,79,244,0,66,2,251,
189 12,252,192,248,0,192,42,74,18,104,18,240,240,2,18,9,
190 223,248,176,192,28,248,2,192,208,248,0,224,62,250,12,254,
191 192,248,4,224,223,248,136,224,222,248,0,224,30,244,224,110,
192 95,234,30,46,223,248,140,128,24,248,14,128,208,248,4,144,
193 57,250,8,249,192,248,8,144,223,248,100,144,217,248,0,144,
194 25,244,96,89,95,234,217,41,223,248,104,160,26,248,9,160,
195 208,248,4,176,59,250,10,251,192,248,12,176,189,232,240,143,
196 10,0,210,178,0,42,5,208,19,74,18,104,2,67,18,75,
197 26,96,4,224,16,74,18,104,130,67,15,75,26,96,112,71,
198 10,0,210,178,0,42,5,208,12,74,18,104,2,67,11,75,
199 26,96,4,224,9,74,18,104,130,67,8,75,26,96,112,71,
200 8,56,2,64,4,56,2,64,0,36,244,0,0,18,122,0,
201 4,0,0,32,16,0,0,32,28,56,2,64,32,56,2,64,
202 56,181,4,0,13,0,33,0,201,178,137,178,60,72,0,240,
203 152,249,128,33,58,72,0,240,208,249,0,40,249,208,32,0,
204 50,189,248,181,134,176,4,0,13,0,22,0,31,0,79,244,
205 0,112,0,144,2,32,141,248,4,0,0,32,141,248,6,0,
206 3,32,141,248,5,0,1,32,141,248,7,0,105,70,45,72,
207 255,247,128,251,79,244,128,96,0,144,105,70,41,72,255,247,
208 121,251,7,34,9,33,39,72,255,247,237,251,7,34,10,33,
209 36,72,255,247,232,251,2,149,0,32,173,248,14,0,56,0,
210 192,178,0,40,6,209,0,32,173,248,12,0,0,32,173,248,
211 16,0,31,224,56,0,192,178,1,40,8,209,79,244,128,80,
212 173,248,12,0,79,244,192,96,173,248,16,0,18,224,56,0,
213 192,178,2,40,8,209,79,244,128,80,173,248,12,0,79,244,
214 128,96,173,248,16,0,5,224,0,32,173,248,12,0,0,32,
215 173,248,16,0,0,32,173,248,20,0,12,32,173,248,18,0,
216 2,169,7,72,0,240,178,248,1,34,64,242,37,81,4,72,
217 0,240,43,249,1,33,2,72,0,240,20,249,7,176,240,189,
218 0,56,1,64,0,0,2,64,112,181,28,0,5,70,22,70,
219 6,208,8,70,22,248,1,27,168,71,100,30,250,209,1,70,
220 8,70,112,189,45,233,252,67,131,176,129,70,136,70,23,70,
221 29,70,7,224,1,35,58,70,65,70,72,70,255,247,228,255,
222 128,70,127,28,56,120,224,177,37,40,243,209,121,120,191,28,
223 37,41,18,208,88,41,90,208,99,41,21,208,100,41,24,191,
224 105,41,24,208,111,41,82,208,112,41,86,208,115,41,91,208,
225 117,41,24,191,120,41,74,208,228,231,64,70,200,71,128,70,
226 224,231,5,176,189,232,240,131,40,104,40,96,80,248,4,27,
227 40,96,201,178,241,231,40,104,40,96,80,248,4,107,40,96,
228 0,46,3,213,45,33,64,70,200,71,128,70,100,33,111,41,
229 8,191,8,34,5,208,65,240,32,0,120,40,20,191,10,34,
230 16,34,11,36,100,41,48,70,2,209,0,46,72,191,64,66,
231 176,251,242,252,2,251,28,0,48,48,100,30,195,178,58,43,
232 164,191,161,241,81,3,24,24,13,248,4,0,95,234,12,0,
233 1,208,0,44,236,220,13,235,4,6,212,241,11,4,64,70,
234 189,208,22,248,1,27,200,71,100,30,250,209,183,231,40,104,
235 40,96,80,248,4,107,40,96,201,231,40,104,40,96,120,33,
236 80,248,4,107,40,96,194,231,40,104,40,96,80,248,4,107,
237 40,96,48,70,0,240,208,248,4,0,64,70,159,208,22,248,
238 1,27,200,71,100,30,250,209,153,231,0,0,45,233,240,79,
239 133,176,4,0,13,0,0,38,0,39,95,240,0,8,95,240,
240 0,9,168,137,0,40,33,138,49,244,64,81,232,136,1,67,
241 0,145,0,152,32,130,180,248,12,160,41,72,16,234,10,10,
242 169,136,40,137,1,67,104,137,1,67,81,234,10,10,164,248,
243 12,160,180,248,20,176,59,244,64,123,168,137,80,234,11,11,
244 164,248,20,176,1,168,255,247,215,253,28,72,132,66,1,209,
245 4,153,0,224,3,153,160,137,0,4,7,213,25,32,0,251,
246 1,240,42,104,82,0,176,251,242,242,6,224,25,32,0,251,
247 1,240,42,104,146,0,176,251,242,242,100,32,178,251,240,246,
248 54,1,51,0,27,9,100,32,0,251,19,35,160,137,0,4,
249 8,213,216,0,50,48,100,39,176,251,247,240,16,240,7,0,
250 6,67,7,224,24,1,50,48,100,39,176,251,247,240,16,240,
251 15,0,6,67,38,129,5,176,189,232,240,143,0,56,1,64,
252 243,233,255,255,10,0,210,178,0,42,4,208,130,137,82,244,
253 0,82,130,129,4,224,131,137,77,246,255,114,19,64,131,129,
254 112,71,202,5,210,13,130,128,112,71,45,233,240,65,0,35,
255 0,37,0,39,95,240,0,14,12,0,164,178,64,246,106,22,
256 180,66,128,70,12,0,228,178,100,9,228,178,14,0,182,178,
257 22,240,31,6,95,240,1,12,28,250,6,252,1,44,2,209,
258 24,241,12,8,6,224,2,44,2,209,24,241,16,8,1,224,
259 24,241,20,8,19,0,219,178,0,43,6,208,216,248,0,48,
260 92,234,3,3,200,248,0,48,5,224,216,248,0,48,51,234,
261 12,3,200,248,0,48,189,232,240,129,2,0,0,35,8,0,
262 128,178,176,245,0,127,16,136,8,66,1,208,1,32,0,224,
263 0,32,192,178,112,71,0,0,0,241,1,3,129,7,4,208,
264 16,248,1,27,137,177,129,7,250,209,2,104,178,241,1,49,
265 145,67,17,240,128,63,4,191,80,248,4,47,246,231,16,248,
266 1,27,17,177,16,248,1,27,251,231,192,26,112,71,0,0,
267 128,181,82,72,0,104,80,244,128,112,80,73,8,96,80,72,
268 1,104,80,72,1,64,78,72,1,96,76,72,1,104,78,72,
269 1,64,74,72,1,96,73,72,0,104,48,244,128,32,71,73,
270 8,96,71,72,0,104,48,244,125,0,69,73,8,96,0,32,
271 70,73,8,96,0,240,5,248,95,240,0,96,68,73,8,96,
272 1,189,130,176,0,32,1,144,0,32,0,144,59,72,0,104,
273 80,244,128,48,57,73,8,96,56,72,0,104,16,244,0,48,
274 0,144,1,152,64,28,1,144,0,152,0,40,3,209,1,152,
275 176,245,160,79,240,209,49,72,0,104,128,3,2,213,1,32,
276 0,144,1,224,0,32,0,144,0,152,1,40,83,209,49,72,
277 0,104,80,240,4,0,47,73,8,96,46,72,0,104,80,240,
278 2,0,44,73,8,96,43,72,0,104,80,240,1,0,41,73,
279 8,96,41,72,0,104,80,240,128,80,39,73,8,96,79,244,
280 0,96,38,73,8,96,38,72,0,104,192,6,251,212,28,72,
281 0,104,27,73,8,96,26,72,0,104,25,73,8,96,24,72,
282 0,104,23,73,8,96,22,72,0,104,48,244,125,0,20,73,
283 8,96,19,72,0,104,80,244,17,0,17,73,8,96,15,72,
284 0,104,80,240,128,112,13,73,8,96,12,72,0,104,128,1,
285 251,213,11,72,0,104,128,8,128,0,9,73,8,96,8,72,
286 0,104,80,240,3,0,6,73,8,96,5,72,0,104,16,240,
287 12,0,12,40,249,209,2,176,112,71,0,0,0,56,2,64,
288 8,56,2,64,12,192,255,136,254,255,254,238,12,56,2,64,
289 8,237,0,224,0,60,2,64,36,56,2,64,0,112,0,64,
290 4,112,0,64,112,71,254,231,254,231,254,231,254,231,112,71,
291 128,181,43,72,0,104,65,28,41,74,17,96,64,242,245,17,
292 136,66,7,211,0,32,38,73,8,96,38,72,0,104,64,30,
293 36,73,8,96,34,72,0,104,50,40,4,210,128,33,34,72,
294 255,247,63,249,59,224,30,72,0,104,100,40,4,210,128,33,
295 29,72,255,247,52,249,50,224,25,72,0,104,150,40,4,210,
296 128,33,25,72,255,247,45,249,41,224,21,72,0,104,200,40,
297 4,210,128,33,20,72,255,247,34,249,32,224,16,72,0,104,
298 250,40,4,210,128,33,16,72,255,247,27,249,23,224,12,72,
299 0,104,176,245,150,127,4,210,128,33,11,72,255,247,15,249,
300 13,224,7,72,0,104,176,245,175,127,4,210,128,33,6,72,
301 255,247,7,249,3,224,128,33,3,72,255,247,0,249,1,189,
302 192,16,0,32,0,0,0,32,0,4,2,64,112,71,112,71,
303 112,71,25,224,80,248,4,43,211,7,68,191,169,241,1,3,
304 154,24,9,31,0,35,4,41,66,248,4,59,249,210,95,234,
305 129,124,19,70,4,213,79,240,0,12,162,248,0,192,155,28,
306 201,7,68,191,0,33,25,112,80,248,4,27,0,41,225,209,
307 112,71,48,181,1,104,132,104,66,24,65,104,2,235,81,3,
308 201,7,11,213,76,68,9,224,18,249,1,27,18,248,1,91,
309 0,41,4,248,1,91,5,213,73,28,249,209,154,66,243,209,
310 12,48,48,189,73,30,241,213,248,231,0,0,45,45,45,45,
311 91,66,111,111,116,93,65,80,80,76,73,67,65,84,73,79,
312 78,65,68,68,82,69,83,83,32,105,115,32,69,82,82,79,
313 82,33,33,33,13,10,0,0,16,181,7,73,121,68,24,49,
314 6,76,124,68,22,52,4,224,10,104,8,29,17,68,136,71,
315 1,70,161,66,248,209,16,189,80,0,0,0,108,0,0,0,
316 45,45,45,45,91,66,111,111,116,93,66,111,111,116,76,111,
317 97,100,101,114,32,82,117,110,110,105,110,103,46,46,46,32,
318 13,10,0,0,45,45,45,45,91,66,111,111,116,93,74,117,
319 109,112,95,84,111,95,65,112,112,108,105,99,97,116,105,111,
320 110,33,33,33,13,10,0,0,235,254,255,255,92,16,0,0,
321 104,0,0,32,0,0,0,0,27,255,255,255,68,1,0,0,
322 138,0,0,0,0,0,0,32,0,240,13,248,0,40,1,208,
323 255,247,178,255,175,243,0,128,0,32,175,243,0,128,255,247,
324 235,249,0,240,2,248,1,32,112,71,0,240,1,184,0,0,
325 7,70,56,70,0,240,2,248,251,231,0,0,128,181,175,243,
326 0,128,2,74,17,0,24,32,171,190,251,231,38,0,2,0,
327 56,181,4,70,13,70,40,70,0,240,6,248,168,66,24,191,
328 0,36,32,70,50,189,0,0,1,73,255,247,9,188,0,191,
329 32,0,0,32,1,72,128,71,1,72,0,71,145,16,0,8,
330 133,20,0,8,175,243,0,128,175,243,0,128,255,247,188,255,
331 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
332 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
333 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
334 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
335 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
336 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
337 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
338 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
339 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
340 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
341 255,247,254,191,255,247,254,191,255,247,254,191,255,247,254,191,
342 0,10,253,0,8,3,4,6,8,12,16,24,32,48,249,0,
343 31,1,2,3,4,1,2,3,4,6,7,8,9,2,4,1,
344 1,104,16,0,32,184,16,0,32,104,16,0,32,104,16,0,
345 32,252,0,3,104,16,0,32,252,0,7,100,0,0,32,80,
346 0,0,32,224,0};

  

IAR_STM32_BootLoader的更多相关文章

随机推荐

  1. centos8上安装ImageMagick6.9.10并压缩图片生成webp缩略图

    一,ImageMagick的作用: ImageMagick 是一个用来创建.编辑.合成图片的软件. 它可以读取.转换.写入多种格式的图片. 功能包括:图片切割.颜色替换.各种效果的应用, 图片的旋转. ...

  2. Centos7 安装python环境

    保留python2 找到python所在位置,把python指向python2.7备份 [root@sun /usr/bin]# cd ~ [root@sun ~]# whereis python p ...

  3. sql左连接查询+右表带有条件的实现

    select * from A表 a left join B表 b on a.id=b.a_id and b.字段='/*条件*/' ; 可查出左表所有数据 select * from A表 a le ...

  4. 虚拟环境与local_settings

    虚拟环境(virtualenv) 对于同时管理多个不同的项目时,使用虚拟环境是必须的. 虚拟环境就是用来为一个项目新建一个全新的纯净的python运行环境,该环境与系统的python环境相互隔离,且虚 ...

  5. apktool的下载,安装,反编译和重新打包

    一.环境要求 安装java 1.8 以上 命令行运行 java -version 返回版本大于1.8 如果没有,请安装java 1.8 二.下载与安装 下载apktool_x.x.x.jar到本地 官 ...

  6. 常见的Python运行时错误

    date: 2020-04-01 14:25:00 updated: 2020-04-01 14:25:00 常见的Python运行时错误 摘自 菜鸟学Python 公众号 1. SyntaxErro ...

  7. 手写webpack核心原理,再也不怕面试官问我webpack原理

    手写webpack核心原理 目录 手写webpack核心原理 一.核心打包原理 1.1 打包的主要流程如下 1.2 具体细节 二.基本准备工作 三.获取模块内容 四.分析模块 五.收集依赖 六.ES6 ...

  8. CPU上下文

    CPU上下文 包括CPU寄存器和程序计数器(Program Counter,PC). CPU寄存器,是CPU内置的容量小.但速度极快的内存. 程序计数器,是用来存储CPU正在执行的指令位置.或者即将执 ...

  9. 【转】Setting up SDL 2 on MinGW

    FROM: http://lazyfoo.net/tutorials/SDL/01_hello_SDL/windows/mingw/index.php Setting up SDL 2 on MinG ...

  10. 01 . Go之Gin+Vue开发一个线上外卖应用

    项目介绍 我们将开始使用Gin框架开发一个api项目,我们起名为:云餐厅.如同饿了么,美团外卖等生活服务类应用一样,云餐厅是一个线上的外卖应用,应用的用户可以在线浏览商家,商品并下单. 该项目分为客户 ...