|  | 
 
| 想实现网络底层通信(直接写链路层数据),方法是直接调用sitaraif_transmit,结果是在正常通信一段时间后(正确发送数据,用抓包工具可以查看到完整数据),数据发送不成功。调试时发现,卡在sitaraif_transmit函数以下代码: /* For the first time, write the HDP with the filled bd */
 if(txch->active_tail == NULL) {
 EMACTxHdrDescPtrWrite(sitaraif->emac_base, (unsigned int)(active_head), 0);
 }
 
 /*
 * Chain the bd's. If the DMA engine, already reached the end of the chain,
 * the EOQ will be set. In that case, the HDP shall be written again.
 */
 else {
 curr_bd = txch->active_tail;
 curr_bd->next = active_head;
 if(curr_bd->flags_pktlen & EMAC_BUF_DESC_EOQ) {
 /* Write the Header Descriptor Pointer and start DMA */
 EMACTxHdrDescPtrWrite(sitaraif->emac_base, (unsigned int)(active_head), 0);
 }
 curr_bd->flags_pktlen 始终没有置 EMAC_BUF_DESC_EOQ 标志位,绕过发送代码段。
 在代码中没有发现在何处置 EMAC_BUF_DESC_EOQ 标志位,然后查看数据手册,发现如下图所示:
 C:\Documents and Settings\Administrator\桌面\1内容应该是这个标志位由EMAC自动设置,那我想问下这个标志位是要怎么设置呢???
 
 | 
 
x本帖子中包含更多资源您需要 登录 才可以下载或查看,没有帐号?立即注册 
  |