雄迈板子,3535芯片,网络芯片是AR8035,kernel驱动怎么弄

 1 E币 
成为会员,免费下载资料
文件大小:4.86 KB 上传者:ngswfx 时间:2016-05-11 01:42:30 下载量:47
本帖最后由 ngswfx 于 2016-5-23 18:25 编辑

越搞越糊涂了,对PHY硬件连接百思不得其姐。


不是内部已经集成了网络了吗,怎么又搞个8035,通常这种情况下,怎么弄驱动呀。

主要是这个3535是BGA,想测量连接的哪条腿都没法量。不像3520,万用表就搞定了。


是不是在kernel里面,开启MII PHY方式,调试驱动呀? 哪位大侠指点一下,我感觉我在走弯路。




//////////////////////////////////////////////////////////////////最新的动作是,直接将U-boot里面所有网络东西都禁用,仅仅在kernel里面配置网络相关的参数。
//初步计划是彻底放弃Uboot网络支持,使其能支持u盘自动升级即可。但3535 kernel网络AR8035一定要搞过去,因为自我感觉已经到了关键结点了。就差2\3个参数了。流程基本都走通了。



2016_5_11
//////////////////终于搞定了,主要是牵扯的调节项太多,没搞过驱动这种东西,一上来就搞,网上资料没有能照着模仿的,研究了3天,编译刷了1500多次kernel:lol ,没有相关文档,自己摸索,任何一个有用的log信息,都对这次编程解决问题过程,提供很大帮助。

最后主要卡在menuconfig中,那个STMMAC    (0x7) STMMAC MDIO INTERFACE ,设置成6不行,必须7才行。不知道啥意思,这个是今天黔驴技穷了,估计是配置寄存器没对,想想干脆用雄迈Uboot,然后进入kernel后,啥寄存器我都不动,尝试。

突然发现雄迈uboot,log中,有一个PHY mode=7的信息。


然后这个板子,最开始估计连接的是MAC1端口,其实连接的是MAC0。主要在menuconfig中,将PHY ID配置成2即可。

另外AT303X.c文件中的,#define AT803X_DEVICE_ADDR                      0x03,不用管,保持3即可。开始总觉得这个是不是应该为2,其实不是,就是3。

////////////////////////////////////////////////////////////////////////////////////////////////////////////

附件当中,是at303x.c文件,以及Kconfig,Makefile文件,可以使-*-   PHY Device support and infrastructure  ---> 中出现 ar3035选择项。

注意:at303x.c文件被我改的很乱,需要自己清空printk ,有些代码还需要整理。

/////////////////////////////
home/ngs/Hi3535_SDK_V1.0.2.0/osdrv/kernel/linux-3.4.y/drivers/net/ethernet/stmmac,这里面的东西应该无需调整,可以直接使用。

/home/ngs/Hi3535_SDK_V1.0.2.0/osdrv/kernel/linux-3.4.y/drivers/net/phy              ,目录里面就是用那3个文件,覆盖就行了。

然后就是配置menuconfig。我选定了PHY DMA 等选项,是在3535的小型化配置文件基础上修改的。
#cp arch/arm/configs/hi3535_mini_defconfig .config

////////////////////////////////////////////我的百纳币太少太丢人,只能挣些小钱了,呵呵。


顺便吐槽一下,又爱又恨的海丝。

static int stmmac_syscfg_init(struct platform_device *pdev)  函数里面有一句代码,差点让我吐血。

pr_info("Set system config register 0x200300ec with value 0x003f003f\n");

//这次搞驱动过程中,打印出了这个log信息,这个很明显,已经写入寄存器值,我还挺高兴,结果一看源代码,无语了.......这种信息能随便打印吗:lol

我又掉进坑里了。  而且这个地址寄存器值到底啥意思,我现在也没搞懂,只知道,如果writl直接写这个寄存器,系统就崩溃。代码中得到的寄存器地址,和这个0x200300ec完全不是一回事,差得老远了。不知所谓。


//////////////////////////////////////////////////2016_5_21 调整修改phy.c中void phy_state_machine(struct work_struct *work),使断线检测以及换交换机100M 1000M正常
case PHY_RUNNING:
                       
                        printk("PHY_RUNNING phydev->irq:%d\n",phydev->irq);
                        ///////////////////////////////////////////////////////////ngs add for 8035
                        err = genphy_update_link(phydev);
                        if (err)
                                break;
                        if (!phydev->link) {
                                phydev->state = PHY_NOLINK;
                                printk("PHY_RUNNING found link off\n");
                                netif_carrier_off(phydev->attached_dev);
                                phydev->adjust_link(phydev->attached_dev);
                        }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
展开
折叠
1209
评论
共 0 个
内容存在敏感词
    易百纳技术社区暂无数据
相关资料
关于作者
易百纳技术社区
ngswfx
贡献资料 40
易百纳技术社区 我上传的资料
登录查看
我赚取的积分
登录查看
我赚取的收益
登录查看
上传资料 赚取积分兑换E币
易百纳技术社区
删除原因
广告/SPAM
恶意灌水
违规内容
文不对题
重复发帖
置顶时间设置
结束时间
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-资料模块

审核失败

失败原因
备注
易百纳技术社区