 这个地址也就是我们IAP跳转的起始地址,定义一个函数指针类型的变量,将该函数指针指向BOOT Loader的起始地址。我们设置的触发条件是检测P1^6引脚低电平,满足条件后实现地址跳转,跳转BOOT后再使用官方提供的ISP工具,实现在线下载。
   这个地址也就是我们IAP跳转的起始地址,定义一个函数指针类型的变量,将该函数指针指向BOOT Loader的起始地址。我们设置的触发条件是检测P1^6引脚低电平,满足条件后实现地址跳转,跳转BOOT后再使用官方提供的ISP工具,实现在线下载。        
 上述是借助官方提供的ISP工具跳转BOOT区实现目标程序下载,下面介绍一下通过IAP实现定制“BOOT”,然后通过任意接口下载。 方式2:定制“BOOT”,任意接口完成下载 上述是通过CH559单片机自带的BOOT程序完成下载,下面介绍一下通过IAP实现定制“BOOT”,然后通过任意接口实现程序升级。真正达到接口自由、触发方式自由、协议自由。 首先编译目标程序,根据编译生产的hex文件大小,具体大小如图2.1.1所示,设置IAP在FLASH中存储的位置
 file:///  设置如下图2.1.2所示,“Start”起始地址到0xF000之间的存储空间不能小于图2.1.1中的code大小,为了便于操作起始地址最好设置成1K的整数倍,“Size”可以不设置,Keil会自动设置文件大小。如IAP的Code大小是1861B,所以设置IAP程序空间最小为(2+N)KB(N=0,1…..)。所以由0xF000地址(Data Flash起始地址)递减(2+N)KB(N=0,1……),即 0xF000-0x400*(1+N)(N=0,1..)=0xE800, 因为 BIN文件开头需要预留一个至少 4 字节空间给跳转指令,所以 IAP 程序设置地址为(0xE800+4);    IAP 程序里面定义的起始存放地址依然是 0xE800,如:
file:///  设置如下图2.1.2所示,“Start”起始地址到0xF000之间的存储空间不能小于图2.1.1中的code大小,为了便于操作起始地址最好设置成1K的整数倍,“Size”可以不设置,Keil会自动设置文件大小。如IAP的Code大小是1861B,所以设置IAP程序空间最小为(2+N)KB(N=0,1…..)。所以由0xF000地址(Data Flash起始地址)递减(2+N)KB(N=0,1……),即 0xF000-0x400*(1+N)(N=0,1..)=0xE800, 因为 BIN文件开头需要预留一个至少 4 字节空间给跳转指令,所以 IAP 程序设置地址为(0xE800+4);    IAP 程序里面定义的起始存放地址依然是 0xE800,如:     地址设置如图所示:
   地址设置如图所示:     编写用户程序时,我们需要在用户程序中实现跳转升级,同样需要定义函数指针类型变量,将改指针指向设置的起始地址。
   编写用户程序时,我们需要在用户程序中实现跳转升级,同样需要定义函数指针类型变量,将改指针指向设置的起始地址。     
 下载 IAP 的程序的时候需要指定下载地址,下载地址跟程序中的跳转地址一致,如本例子用0xE800。第一次下载还是需要通过ISP工具,这里需要勾选启用IAP功能,设置起始地址。注意,设置的起始地址与 2.2 中描述相同,这里设置的是0xE804,与 IAP 工程设置的地址相同。在下面两个程序文件栏分别选择 IAP 程序 CH55IAP 和用户程序CH559User,点击下载。如图 所示:
 打开 CH559IAPDemo 程序包,双击运行 WCHMCUIAP_WinAPP.exe。选择 USB 下载,选择程序文件CH559User。本例程中是用 Demo 板上按键 K4 进入 IAP 程序(按下 K4 键相当于 P1.3 接地),用户可根据需要自己修改别的方式。按下按键 K4 松开,LED5 熄灭,LED6 闪烁,并且频率较快,表示进入IAP 程序,应用程序 CH559WINUser 的设备列表中出现设备,如图 2.4.1 所示,点击下载,下载完成后自动复位执行用户程序。
  打开 CH559IAPDemo 程序包,双击运行 WCHMCUIAP_WinAPP.exe。选择 USB 下载,选择程序文件CH559User。本例程中是用 Demo 板上按键 K4 进入 IAP 程序(按下 K4 键相当于 P1.3 接地),用户可根据需要自己修改别的方式。按下按键 K4 松开,LED5 熄灭,LED6 闪烁,并且频率较快,表示进入IAP 程序,应用程序 CH559WINUser 的设备列表中出现设备,如图 2.4.1 所示,点击下载,下载完成后自动复位执行用户程序。   
3、程序源码

 
					
				
 
			
			
			
						
			 
					
				 
					
				 
					
				 
					
				
 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

