在使用M3的片子的时候用串口ymodem协议和以太网的TFTP的IAP升级,所以对IAP的用法也算比较熟悉了。
M3在MDK下的APP固件烧写位置是在魔术棒里面进行填入,CH32X035的APP是要在工程下的Link.ld文件中更改FLASH和RAM起始位置和大小。 ENTRY( _start )
__stack_size = 2048;
PROVIDE( _stack_size = __stack_size );
MEMORY
{
FLASH (rx) : ORIGIN = 0x00005000, LENGTH = 42K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
}
M3在MDK下APP生成.BIN是用过一个内置的插件命令完成,MounRiver Studio中是通过如下图的配置可以生成.bin文件。
以上两点是最大的区别了。其他都是雷同。 生产的BIN文件 Demo给出了一个bootloader程序是检测PA0输入低电平进行APP跳转,并且可以通过USB进行APP的写入。这会用到一个WCHMcuIAP_WinAPP的USB写入工具,还算比较简单好用。 SystemCoreClockUpdate();
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n", SystemCoreClock);
printf("ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
if(PA0_Check() == 0){
Delay_Ms(10);
IAP_2_APP();
while(1);
}
写入APP完成:
如果在APP中写入升级的相关功能函数,如通讯口令或按键检测等就可以让设备进行软件复位后回到bootloader中进行再次的APP固件升级。 当然如果不采用这个USB工具就需要自己改写bootloader进行如串口或者其他的数据通讯方式进行固件的升级。
|