正在学习STM32的串口IAP功能,在用串口接收待更新的文件时,遇到了以下几种协议:
1、为串口设置一个超大的接收缓存,一次性接收待更新文件(bin格式)。
#define USART_REC_LEN 55*1024 //定义最大接收字节数 55K
u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000)));//接收缓冲,最大USART_REC_LEN个字节,起始地址为0X20001000.
对于STM32F103ZE系列芯片,SRAM为64K,这里光接收缓存就占了55K,剩余的9K为程序变量所用,分配太不合理了吧!对于只有20K SRAM的STM32F103RB系列芯片就不行了吧。
2、为串口设置一个适中的接收缓存,多次接收待更新文件(bin格式)。
#define COM_BUF_SIZE 256+4
uint8_t ComBuf[COM_BUF_SIZE];
每一帧数据自定义好包头、包尾、数据长度、校验等。
3、使用Ymodem协议接收待更新文件。
各位做过的朋友,你们在用STM32串口的IAP功能时,一般采用的哪种方法呢?
|