关于AT32使用串口作为OTA数据接口时写入flash时遇到的问题记录
problem:串口接收数据出现丢数据的情况
answer:查看是否使用了队列或者串口中断,一般OTA的数据都非常大,推荐使用DMA接收+闲时中断的方式接收数据进行处理
problem:接收的数据是完整正确的,但是解析回来的hex的数据写入flash的时候发现有的数据会出错丢帧
answer:单片机是否带了系统,如FREE_RTOS,一般写或擦除flash的时候需要做出相应的代码保护,比如下面
点击查看代码
taskENTER_CRITICAL();/*进入临界区保护 */
FLASH_ProgramByte(addr, u8_dat); // 写入新的标志位
taskEXIT_CRITICAL();/*退出临界区保护 */