这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » IAP实现原理及实践【基于CH559 USB单片机】

共6条 1/1 1 跳转至

IAP实现原理及实践【基于CH559 USB单片机】

工程师
2019-09-27 14:01:46     打赏
一、原理       IAP(In Applicating Programing)在应用编程,即通过用户程序对用户程序进行升级,这样就可实现用户自由升级而不影响应用。比如一款支持IAP的单片机,这里以目前正在使用的CH559单片机举例,我们可以人为的将其内分成三个程序区,1作引导程序区即BOOT区域,2作为运行程序区即用户程序区域,3作为下载区。芯片通过满足触发条件(用户自己设定)进入引导区运行引导程序,在BOOT程序下将目标程序下载到下载区,下载完成并校验通过后再将下载区内容复制到用户程序区,运行复位程序,IAP完成。二、应用:   方式1:跳转BOOT,通过ISP下载工具完成下载   查看CH559DS1芯片手册可知,CH559芯片出厂内置BOOT,且Boot Loader Code Flash起始地址为0XF400,如下图所示:          这个地址也就是我们IAP跳转的起始地址,定义一个函数指针类型的变量,将该函数指针指向BOOT Loader的起始地址。我们设置的触发条件是检测P1^6引脚低电平,满足条件后实现地址跳转,跳转BOOT后再使用官方提供的ISP工具,实现在线下载。        
  上述是借助官方提供的ISP工具跳转BOOT区实现目标程序下载,下面介绍一下通过IAP实现定制“BOOT”,然后通过任意接口下载。  方式2:定制“BOOT”,任意接口完成下载  上述是通过CH559单片机自带的BOOT程序完成下载,下面介绍一下通过IAP实现定制“BOOT”,然后通过任意接口实现程序升级。真正达到接口自由、触发方式自由、协议自由。  首先编译目标程序,根据编译生产的hex文件大小,具体大小如图2.1.1所示,设置IAPFLASH中存储的位置    file:///  设置如下图2.1.2所示,“Start”起始地址到0xF000之间的存储空间不能小于图2.1.1中的code大小,为了便于操作起始地址最好设置成1K的整数倍,“Size”可以不设置,Keil会自动设置文件大小。IAPCode大小是1861B,所以设置IAP程序空间最小为(2+NKBN=0,1…..)。所以由0xF000地址(Data Flash起始地址)递减(2+NKBN=0,1……), 0xF000-0x400*(1+N)(N=0,1..)=0xE800, 因为 BIN文件开头需要预留一个至少 字节空间给跳转指令,所以 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 所示,点击下载,下载完成后自动复位执行用户程序。

   

3、程序源码

USB UART的IAP实现.rar





关键词: IAP     程序范例     实践     CH55X     USB     ISP    

院士
2019-09-27 14:30:18     打赏
2楼

我是一直觉得这个东西挺简单的,但是实现起来确实有点难啊


工程师
2019-09-27 21:15:43     打赏
3楼

没看到图,有点可惜。。。


工程师
2019-09-27 21:44:09     打赏
4楼

CH55X,听说这USB单片机芯片,性价比很高!才1.X 出头。

不过可惜,我对它的开发,特别是USB部分,不是很了解。。。。


工程师
2019-09-27 21:46:44     打赏
5楼

奈斯!

有空试试这个芯片!算是对国产MCU的支持


工程师
2019-09-27 23:50:51     打赏
6楼

希望有图呀


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]