﻿================================================================================
                                样例使用说明
================================================================================
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引导交换功能。程序先下载到sector0的起始地址，使能引导交换功能后(复位
后引导交换生效)，第二次程序将下载到sector1的起始地址。
此后可通过按键切换引导交换功能，复位后可实现程序从sector0或sector1启动。

================================================================================
测试环境
================================================================================
测试用板:
---------------------
EV_F334_LQ64_Rev1.1

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

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

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

================================================================================
注意
================================================================================
1.OTP功能开启，且sector0对应地址锁存，sector0和sector1不会交换
2.在bus_hold时，进行编程和擦除请勿单步调试，单步调试有可能使芯片发生未知错误
3.按键请长按，避免代码运行在delay延时中，未检测到按键按下
4.下载efm_swap0样例前请片擦，下载efm_swap1样例时，不能片擦
================================================================================
