/**
  ******************************************************************************
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * Copyright (C) 2021 Shanghai Eastsoft Microelectronics Co., Ltd. ALL rights reserved.
  *******************************************************************************
  */

<--------------------------------------------------------------------------------
Version history:
--------------------------------------------------------------------------------->
2021-4-30	    V1.0.0	    AE TEAM
2023-2-22       V1.0.1      AE TEAM     Notes:UART_BOOT配套app_demo例程，执行引导程序至Bootloader从app跳转至bootloader前擦除CRC校验信息
2024-02-29      V1.0.2      AE TEAM     Notes:删除MicroBoot通信协议，Go Bootloader改为简化的单发单收命令协议。
<--------------------------------------------------------------------------------
Demo introduction:
--------------------------------------------------------------------------------->
本示例功能：UART_BOOT_app_demo（配合UART_BOOT工程使用）

<--------------------------------------------------------------------------------
测试环境:
--------------------------------------------------------------------------------->
测试用板；
ES-PDS-ES32F369x-V1.3
仿真器：
ESLINK II-mini  

辅助软件：
UART-BOOT上位机软件

<--------------------------------------------------------------------------------
测试步骤：
--------------------------------------------------------------------------------->
1) 编译Bootloader工程，编译通过后将程序下载到目标芯片；
2) 将ES-PDS-ES32F369x-V1.3的JP3及JP4处插好跳帽；
3) 打开上位机软件，选择芯片型号；
4) 配置串口参数：通信口（查看适配的COM端口号），波特率（MCU自适应波特率，模式1），校验位（偶校验），停止位（1），超时（默认值10，可自行修改合适的超时时间）；
5) 点击“打开”按钮，选择待烧录的APP文件；
6）复位芯片，然后进行单次操作或者自动烧录；
7) 烧录完成后，点击“引导程序到App”，上位机返回运行成功，可以看到板载LED闪烁；
8) 点击“引导程序到Bootloader”，上位机返回运行成功，则回到Bootloader程序。

<--------------------------------------------------------------------------------
注意：
--------------------------------------------------------------------------------->
1) 测试环境需要共GND。
2) MCU固件将不断校验CRC_CAL_ADDR处指定长度的CRC32值，若相等则跳转到APP_ADDR处执行app程序。
3) 在使用UART_BOOT工程时需注意编译后的大小，需根据IAR编译后的文件大小修改icf文件（这里设置为：0x70000-0x7FFFF），满足代码空间需求即可。
4) APP程序的crc校验值和crc计算长度由UART_BOOT上位机的分配，通过数据合并功能将app程序的hex文件以及crc校验信息合并为一个新的hex，上位机烧录时使用新生成的hex文件。
5）校验信息存放地址：CRC_CAL_ADDR：0x0007DC00  校验长度：0x7DC00。
6) 烧录程序前需确认配置字是否正确（如：IWDTEN设置为由软件使能，BOOT地址设置为0x7E000,其他配置字正常配置即可）。
7) UART-BOOT的ESMap文件里的Go_Bootloader需设置为2。

<--------------------------------------------------------------------------------
System clock:
--------------------------------------------------------------------------------->
PLL 72MHz.

<--------------------------------------------------------------------------------
Pin connection:
--------------------------------------------------------------------------------->
TX        ---- (PB10, GPIO_FUNC_3)
RX        ---- (PB11, GPIO_FUNC_3)

LED       ---- (PC12, GPIO_FUNC_1)
