/**
  ******************************************************************************
  * 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:
--------------------------------------------------------------------------------->
2023-05-19	V1.0.0	AE TEAM Notes:UART_Boot配套app_demo例程，执行引导程序至Bootloader从app跳转至bootloader前擦除CRC校验信息

<--------------------------------------------------------------------------------
Demo introduction:
--------------------------------------------------------------------------------->
本示例功能：UART_boot_app_demo（配合UART_Boot工程使用）

<--------------------------------------------------------------------------------
测试环境:
--------------------------------------------------------------------------------->
测试板；
ES-PDS-ES32F0283LT-V1.0

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

<--------------------------------------------------------------------------------
测试步骤：
--------------------------------------------------------------------------------->
1) 编译工程，编译通过后在UART_BOOT上位机选择该工程生成的hex文件；
2) 在上位机中将该文件烧录完成后可点击引导程序至app；
3) 引导程序至app成功后，开发板ES-PDS-ES32F0283LT上的LED1/LED2/LED3/LED4亮；
4) 重新点击启动，点击引导程序至Bootloader，引导程序至Bootloader成功后，LED1/LED2/LED3/LED4灭；

<--------------------------------------------------------------------------------
注意：
--------------------------------------------------------------------------------->
1. 测试环境需要共GND
2, 此UART_Boot_app_demo预设放于Flash 12K(0x3000)后位置，前面12K提供存放bootloader程序。
3. 用户可自行决定应用程序要透过bootloader烧入于哪个位置，透过设定"APP_ADDR"参数即可修改，但必须以4K为单位之位置，因为使用software remap方式须以4K为单位，否则无法正确remap到指定位置。
4. 用户在开发自家的应用程序时，不用特别指定 ROM 地址，Start Address设为0即可，设定如下: 开启Keil -> Options for target -> Target -> IROM1 : Start Address设定为0，因为此demo code会自动将程序烧入于用户指定位置。
5. 如要透过bootloader demo程序(UART_Boot)自动跳转到app程序，app程序必须透过工具"MCU固件校验码添加工具"将app程序加上crc校验，校验值存放于app程序后任一位置，用户可自行设定。
6. 合并crc校验值时，工具校验和保存地址不需考虑跳转后的位置，因为bootloader会自行协助抬升跳转。
7. add_checksum.exe設定，以UART_Boot_app_demo為例：校驗保存地址：0x0003000(根據第6點說明)  校验长度：0x3000

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

<--------------------------------------------------------------------------------
Pin connection:
--------------------------------------------------------------------------------->
RX(JP7):       PB06(UART1_TX - Output pin)
TX(JP6):       PB07(UART1_RX - Input pin)
