imx6ULL适配vxWork网络驱动

1.数据手册使用i.MX 6UltraLite版本,主要区别是中断个数,应该是128+32,一共160个中断。

2.enet的时钟引脚配置问题

phy不管是用独立晶振还是CPU提供时钟,bit18都要配置为1才好用。其实按手册理解,当使用的phy不需要CPU提供时钟时,这一位不应该被配置为1才对,有待研究!

时钟配置这里需要注意的是bit20和bit13,如果是使用了enet1和enet2,这两位必须都置1,是给MDC提供时钟的,经过时钟树,最终提供给MDC的时钟是66M,详细解释可以参考正点原子的手册。至于bit21是提供内部25M的参考时钟。

注意这里配置MDC速度寄存器时,速率不能太大,会导致读写phy失败。

3.vxbImxEnd驱动程序

(1)设备定义添加

const struct hcfResource imxFec0Resources[] = {
    { "regBase",    HCF_RES_INT,    { (void *)AIPS2_ENET_BASE } },
    { "regBase1", HCF_RES_INT,    { (void *)AIPS1_ENET_BASE } },
    { "clkFreq",    HCF_RES_ADDR,   { (void *)sysEnetRefClkGet } },
    { "phyAddr",    HCF_RES_INT,    { (void *)0x2 } },
    { "miiIfName",  HCF_RES_STRING, { (void *)"enet" } },
    { "miiIfUnit",  HCF_RES_INT,    { (void *)0} },
    { "mediaIfMode",HCF_RES_INT,    { (void *)ENET_RMII} }/*1:rmii*/
};
#define imxFec0Num NELEMENTS(imxFec0Resources)
const struct hcfResource imxFec1Resources[] = {
    { "regBase",    HCF_RES_INT,    { (void *)AIPS1_ENET_BASE } },
    { "regBase1", HCF_RES_INT,    { (void *)AIPS1_ENET_BASE } },
    { "clkFreq",    HCF_RES_ADDR,   { (void *)sysEnetRefClkGet } },
    { "phyAddr",    HCF_RES_INT,    { (void *)0x1 } },
    { "miiIfName",  HCF_RES_STRING, { (void *)"enet" } },
    { "miiIfUnit",  HCF_RES_INT,    { (void *)1 } },
    { "mediaIfMode",HCF_RES_INT,    { (void *)ENET_RMII} }/*1:rmii*/
};

(2)中断绑定时调用vxbIntEnable,注意第二个参数都应该是0,才能绑定两个中断

 

(3)ping的时候shell指令:ping “192.168.30.100”

需要在组件配置里添加ping相关组件

(4)改到这一步,还是ping不同,返回错误,修改添加数据处理函数

(5)改了之后还是ping不通,问题出在报文校验方式,在imxEnetEndLoad处理化设置时

pDrvCtrl->fecCaps.cap_enabled |= IFCAP_RXCSUM;

不能加IFCAP_TXCSUM

在imxEnetEndRxHandle处理接收报文时

pMblk->m_len = pMblk->m_pkthdr.len = pDesc->bdLen;不需要减去4个字节的CRC

原因是报文校验在MAC层已经自动处理。

4.网络调通之后起Ftp挂载到ramDisk,这些都需要在配置工具里添加,主要有:

(1)ram disk Driver

(2)ram设置

(3)ftp设置基本都是默认,只需改根目录和初始目录 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值