/**
  ******************************************************************************
  * 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) Shanghai Eastsoft Microelectronics Co., Ltd. ALL rights reserved.
  *******************************************************************************
  */

<--------------------------------------------------------------------------------
Version history:
--------------------------------------------------------------------------------->
2019-07-17	V1.0.0	AE TEAM


<--------------------------------------------------------------------------------
Demo introduction:
--------------------------------------------------------------------------------->
UART Bootloader XModem-1K
使用UART的bootloader程序，带有控制台功能，通过Xmodem-1K协议进行文件传输

1. 链接开发板，下载程序
2. 打开一个支持以XModem-1K协议传输文件的串口终端，打开ES-LinkII对应的串口
3. (a)若Flash中没有文件，则会显示:"The APP flash is empty, Please Update first!"
(b)若Flash中已经有下载的App，且CRC验证通过，则会显示:"The APP flash is unempty, You can type the following cmd:update, run_flash, run_sram.Otherwise auto run after 3 seconds."
此时等待3s后会自动启动到App，当有任意字符输入时，该计时将自动取消
4. 在bootloader程序中，输入version可查看版本信息
5. 输入update，程序会等待3s，随后启动XModem-1K接收文件并更新到App区(可使用UART_XMODE_APP_DEMO中编译完成的程序)
6. 成功下载后可通过run_flash指令直接跳转到App程序运行

可用的命令：
(1) version : 显示版本信息
(2) reboot : 重新启动
(3) run_flash : 直接运行flash上的app程序
(4) run_sram : 将flash上的程序拷贝到RAM后运行(编译时需要选择正确的地址)
(5) update : 启动xmodem接收文件并更新到App
<--------------------------------------------------------------------------------
System clock:
--------------------------------------------------------------------------------->
External HOSC[12MHz] divided by 3, then PLL to 72MHz.

<--------------------------------------------------------------------------------
Pin connection: 
--------------------------------------------------------------------------------->
UART0_TX ---- PB10[GPIO_FUNC_3]
UART0_RX ---- PB11[GPIO_FUNC_3]

Note: UART0 for debug[baudrate->115200]