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

<--------------------------------------------------------------------------------
Version history:
--------------------------------------------------------------------------------->
2023-02-17       V1.0.0      AE TEAM

<--------------------------------------------------------------------------------
Demo introduction:
--------------------------------------------------------------------------------->
本示例功能：UART bootloader, 通过uart接收shell命令，xmodem-1k 接收APP文件

<--------------------------------------------------------------------------------
测试环境:
--------------------------------------------------------------------------------->
测试用板；
ES-PDS-ES32VF2264LT

辅助工具：
ES-LINK2OB

辅助软件：
ECOM串口助手

<--------------------------------------------------------------------------------
测试步骤：
--------------------------------------------------------------------------------->
1) 编译BOOT工程，编译通过后将程序下载到目标芯片。
2) 复位芯片，或在线调试，运行程序。
3) 在串口助手软件中找到对应的串口并打开
4) 准备APP程序
  a)打开APP工程，编译后获得APP_bin文件。该文件为路径：
    es32-sdk-for-risc-v\Projects\ES32VF2264\Applications\Bootloader\no_backup_app_boot\00_uart_1k_xmode_app\CDK\Obj\demo_0x8000.bin。
  b)使用Utilities\add_checksum.exe工具，添加CRC和长度信息。
   【特别注意】XModem bootloader需要手动计算1024字节对齐的长度并填写，具体计算方法如下：文件大小按照1024取整-8
               例如：文件大小为4236（工具显示空间占用范围为0x108B）则需取整到5120(0x1400)，再-8得到5112，
                     按照16进制的结果为13F8后填写，再点击合并生成带有crc和长度的bin 文件 
5) 在串口助手中，点击打开文件，选择生成的demo_0x8000_crc.bin文件，选择传输协议为"1K Xmodom Send"
6) 在串口助手的输入框填入"update"，并勾选转义字符"\r\n",点击"发送数据"
7) 点击"发送文件"按钮，等待文件发送成功
8) 发送成功后，输入"run_flash",即可跳转flash运行程序

<--------------------------------------------------------------------------------
注意：
--------------------------------------------------------------------------------->
1) 当成功下载APP程序后，再次上电后程序会等待3s，若无任何动作，则自动引导进入APP。
2) MRST复位不会恢复配置字值，也就是说在APP运行时，按RESET按键不会从BOOT启动，需重新上电，方能从BOOT启动。
<--------------------------------------------------------------------------------
System clock:
--------------------------------------------------------------------------------->
PLL 72M

<--------------------------------------------------------------------------------
Pin connection: 
--------------------------------------------------------------------------------->
PA2 --- CUART1_TX
PA3 --- CUART1_RX