在ST网站上下到的STR912IAP的示例,有两种,一种是用的HTTP方式,例外一种是DCHP+TFTP方式,前一种没什么好说的,后一种其实是网上常看到的建立无盘工作站的原理,不懂的,网上可以搜搜看看。 第二种方法我个人觉得太复杂,且不适用。它的TFTP是采用客户端的模式,我于是想到采用TFTP服务器模式,不是更简单,只用在dos下敲tftp命令就可以下载了。我觉得TFTP协议是我至今为止看到过最简单的TCP/IP应用层协议(传输层采用UDP),说简单点就是你发一个数据包,下面发一个回应,每个数据包有个块编号,简单吧。部分代码 /******************************************************************************* * Function Name : tftp_rcv_packet * Description : TFTP数据报处理函数 * Input1 : TFTP数据报头指针 * Return : 0 *******************************************************************************/ int tftp_rcv_packet(unsigned char *skb) { struct tftphdr *tftp_hdr; tftp_hdr = (struct tftphdr *)skb;
switch (HTONS(tftp_hdr->th_opcode)) {
case RRQ: break; case WRQ: tftp_rcv_wrq(skb); break; case DATA: tftp_rcv_data(skb); break; case ACK: break; case ERROR: break; default: break; }
return 0; }
值得一题的是STR912的擦写时间,主flash一个扇区(64K),要1S多,这样会导致TFP请求超时,导致多一次请求,不知道其他朋友发现这个问题没? 程序最好下载成功。下面是我是上传用sniffer抓的网络包,不知道传的上来吗?
|