天线|RF射频
直播中

刘凯

7年用户 189经验值
私信 关注
[问答]

为什么使用以太网进行IAP操作和串口IAP不同?

如题,原子哥的串口IAP已经试验通过,现想将其修改为以太网IAP操作,使用UDP进行传输。
但是有几个问题。
1)串口可以通过中断将大容量APP写进FLASH里面,非常顺利
u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X08050000)));
u32 FLASH_APPX_ADDR=0x08050000;
void USART1_IRQHandler(void)                //?®??1????·??????ò
{
u8 Res;
#ifdef OS_CRItiCAL_METHOD //????OS_CRITICAL_METHOD?¨????,???÷????ucosII??.
OSIntEnter();   
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //????????(????????????±?????0x0d 0x0a?á??)
{
Res =USART_ReceiveData(USART1);//(USART1->DR);//????????????????
if(USART_RX_CNT   {
FLASH_Unlock();//????
  FLASH_DataCacheCmd(DISABLE);//FLASH????????,±???????????????
FLASH_ProgramByte(FLASH_APPX_ADDR,Res);
FLASH_DataCacheCmd(ENABLE);//FLASH?????á??,????????????
FLASH_Lock();//????
FLASH_APPX_ADDR +=1;
USART_RX_CNT++;
}
/*{
USART_RX_BUF[USART_RX_CNT]=Res;
USART_RX_CNT++;      
}
*/
  }
#ifdef OS_CRITICAL_METHOD //????OS_CRITICAL_METHOD?¨????,???÷????ucosII??.
OSIntExit();   
#endif
}
#endif
但在原子哥的UDP的接收程序里,没有中断操作,只有系统自带的接收函数,它是怎么接收数据的,
不知道怎么修改,在任务中执行,怎么将其接收进FLash里啊,
netconn_recv(udpconn,&recvbuf);
谁有以太网UDP进行IAP的程序参考一下,谢谢

回帖(11)

刘飞

2019-7-15 12:01:05
做协议。
参考modbus。
举报

张文琳

2019-7-15 12:09:05
还是协议的问题。
你真要是会用modbus,modbus采用的是发送+应答的机制,完全就不需要你有大缓存,你大可以写入一个字节,再写下一个字节,都是可以的,只要你不给主机应答,主机就不会发下一个数据给你。想怎么折腾都行。
你上面的所谓问题,自然就不存在了。
举报

周炳胤

2019-7-15 12:20:38
你用的哪款开发板?
举报

汤敏树

2019-7-15 12:34:11
探索者,原子哥有在你的UDP基础上的IAP程序么,网上找了些程序,是根据官方程序改写的,风格和原子哥有比较大的差别,看不懂。
现在已经适应了原子哥风格
举报

更多回帖

发帖
×
20
完善资料,
赚取积分