﻿================================================================================
                                样例使用说明
================================================================================
Date            Author      IAR       MDK       GCC
2025-11-03      CDT         7.70      5.36      gcc-arm-none-eabi-10.3-2021.10-win32

================================================================================
平台说明
================================================================================
GCC工程，由Eclipse IDE外挂GNU-ARM Toolchain，再结合pyOCD GDB Server实现工程的编译、
链接和调试。在用Eclipse导入工程后，请将xxxx_PyOCDDebug中pyocd-gdbserver和SVD文件
设置为正确的路径；请将xxxx_PyOCDDownload中pyocd设置为正确的路径。注意，这些路径不
能包含非英文字符。

================================================================================
功能描述
================================================================================
本样例展示EFM引导交换功能。程序先下载到flash0的起始地址，使能引导交换功能后，
下一次程序将下载到flash1的起始地址。关闭引导交换功能后，下一次程序将下载至flash0
的起始地址。如此可实现引导交换功能。

================================================================================
测试环境
================================================================================
测试用板:
---------------------
EV_A472_LQ100_Rev1.0

辅助工具:
---------------------
无

辅助软件:
---------------------
无

================================================================================
使用步骤
================================================================================
1）打开efm_swap0样例工程，编译下载，全速运行，可观察到红灯闪烁；
2）按下按键K1，使能引导交换功能；
3）打开efm_swap1样例工程，编译下载，全速运行，可观察到蓝灯闪烁；
4）按下K2(SWAP功能关闭)，程序从chip0运行，可观察到红灯闪烁；
5）再次按下K1(SWAP功能开启)，程序从chip1运行，可观察到蓝灯闪烁；
6）重复步骤4）和步骤5），可观察到红灯蓝灯交替闪烁。

================================================================================
注意
================================================================================
1.OTP功能开启，flash0和flash1的前128K区域不会交换
2.在bus_hold时，进行编程和擦除请勿单步调试，单步调试有可能使芯片发生未知错误
3.按键请长按，避免代码运行在delay延时中，未检测到按键按下
================================================================================
