当前位置: 首页 > news >正文

mip网站建设公司南昌谁做网站设计

mip网站建设公司,南昌谁做网站设计,湖南网站seo找行者seo,国际网站怎么做优化文章目录 MAC驱动支持不同的PHY芯片关于对PHY设备抽象的改进RT-Thread下PHY设备抽象接口的改进关于对PHY设备抽象的改进 这是个人驱动开发过程中做的一些记录#xff0c;仅代表个人意见和理解#xff0c;不喜勿喷 MAC驱动需要支持不同的PHY芯片 MAC驱动支持不同的PHY芯片 关… 文章目录 MAC驱动支持不同的PHY芯片关于对PHY设备抽象的改进RT-Thread下PHY设备抽象接口的改进关于对PHY设备抽象的改进 这是个人驱动开发过程中做的一些记录仅代表个人意见和理解不喜勿喷 MAC驱动需要支持不同的PHY芯片 MAC驱动支持不同的PHY芯片 关于对PHY设备抽象的改进 系列文章2中有提及到在RT-Thread下定义的PHY操作抽象接口并不是很合理比如你的系统里面有2个PHY的时候你需要对每个PHY的操作接口做独立的实现否则你无法根据当前read操作所传入的参数来区分当前操作的是哪个PHY设备 先让我们来看下按照现有RT-Thread PHY抽象接口的定义现在需要实现一个获取当前link状态的操作接口的实现抽象接口的定义和具体实现如下 rt_phy_status (*get_link_status)(rt_bool_t *status); static rt_phy_status h3_kszplib_read(rt_uint32_t reg, rt_uint32_t *data) {rt_mdio_t *mdio_bus h3_kszdev0.rt_phydev.bus;rt_uint32_t device_id h3_kszdev0.rt_phydev.addr;if (4 ! mdio_bus-ops-read(mdio_bus, device_id,reg, (void *)data, 4)){return RT_FALSE;}return PHY_STATUS_OK; }static rt_phy_status h3_kszplib_linkstatus(rt_bool_t *status) {rt_phy_status result;rt_uint32_t data;/* Read the basic status register. */result h3_kszplib_read(MII_MSR, data);RESULT_MATCH_CHECK(result, PHY_STATUS_FAIL, outs)if (!(MII_MSR_LINKSTATUS data)){*status RT_FALSE; /* link down. */}else{*status RT_TRUE; /* link up. */}outs:return result; }那对于h3_kszplib_read接口函数来说它就无法区分是哪个PHY设备实例来调用它去读取PHY的寄存器因为get_link_status这个抽象接口也没法获取关于设备实例的信息。 RT-Thread下PHY设备抽象接口的改进 struct rt_phy_ops {rt_phy_status (*init)(struct rt_phy_device *phy, void *object, rt_uint32_t phy_addr, rt_uint32_t src_clock_hz);rt_phy_status (*read)(struct rt_phy_device *phy, rt_uint32_t reg, rt_uint32_t *data);rt_phy_status (*write)(struct rt_phy_device *phy, rt_uint32_t reg, rt_uint32_t data);rt_phy_status (*loopback)(struct rt_phy_device *phy, rt_uint32_t mode, rt_uint32_t speed, rt_bool_t enable);rt_phy_status (*get_link_status)(struct rt_phy_device *phy, rt_bool_t *status);rt_phy_status (*get_link_speed_duplex)(struct rt_phy_device *phy, rt_uint32_t *speed, rt_uint32_t *duplex); };在RT-Thread下定义的PHY操作抽象接口中传入struct rt_phy_device *phy这个参数后续的驱动代码可以根据传入的参数来进行进一步的操作找到具体操作的请求来自于哪一个PHY设备的实例 static rt_phy_status h3_kszplib_read(struct rt_phy_device *phy,rt_uint32_t reg, rt_uint32_t *data) {rt_mdio_t *mdio_bus phy-bus;rt_uint32_t phy_addr phy-addr;if (4 ! mdio_bus-ops-read(mdio_bus, phy_addr, reg, (void *)data, 4)){return RT_FALSE;}return PHY_STATUS_OK; }static rt_phy_status h3_kszplib_linkstatus(struct rt_phy_device *phy, rt_bool_t *status) {rt_phy_status result;rt_uint32_t data;RT_ASSERT(phy ! RT_NULL);/* Read the basic status register. */result h3_kszplib_read(phy, MII_MSR, data);RESULT_MATCH_CHECK(result, PHY_STATUS_FAIL, outs)if (!(MII_MSR_LINKSTATUS data)){*status RT_FALSE; /* link down. */}else{*status RT_TRUE; /* link up. */}outs:return result; }用户驱动可以通过以下方法去获取在自己驱动中定义的每个PHY设备的实例进而获取更多驱动所需要的信息来更好地实现PHY驱动的兼容性。 struct h3_kszplib_dev *kszplib_dev;RT_ASSERT(phy ! RT_NULL);kszplib_dev rt_container_of(phy, struct h3_kszplib_dev, rt_phydev);关于对PHY设备抽象的改进 通过上述的修改后可以通过BSP_USING_PHY0这样的宏定义在Kconfig中进行定义和选择来实现驱动中对多个PHY的驱动支持和灵活配置。 #ifdef BSP_USING_PHY0 static struct rt_phy_ops h3_ksz0plib_ops {.init H3_KSZPLIB_PHY0INIT,.read h3_kszplib_read,.write h3_kszplib_write,.loopback h3_kszplib_loopback,.get_link_status h3_kszplib_linkstatus,.get_link_speed_duplex H3_KSZPLIB_PHY0LINKS, };static struct h3_kszplib_dev h3_kszdev0 {.name PHY0_DEVICE_NAME,.phy_addr PHY0_DEVICE_ADDRESS,.rt_phydev {.ops h3_ksz0plib_ops,} }; #endif // BSP_USING_PHY0同样在PHY设备注册代码中也可以采取非常灵活的方式来实现对多个PHY设备的注册操作 int h3_kszplib_init(void) {rt_uint32_t table_sz sizeof(h3_kszplib_devtable)/sizeof(uint32_t);struct h3_kszplib_dev *kszplib_dev;for (uint32_t i 1; i table_sz; i){kszplib_dev h3_kszplib_devtable[i];rt_hw_phy_register(kszplib_dev-rt_phydev, kszplib_dev-name);}return RT_EOK; }
http://www.eeditor.cn/news/122057/

相关文章:

  • 狗和人做网站建设网站服务器是什么
  • 泰州建设局网站安监站通报南京手机网站
  • 制作网制作网站建设的公司计算机多媒体辅助教学网站开发
  • 免费行情软件app网站下载大全安卓wordpress 类似 免费
  • 网站建设s做网站 node php
  • 做断桥铝最知名的网站做网页代码的素材网站
  • 论坛网站备案流程图常州网站推广培训
  • 荆门做网站公司西部网站建设
  • asp.net制作的网站开发研发一款app要多少钱
  • 用粉色做网站主题色网站 维护 页面
  • 国内建站源码网站制作中动态展示怎么做
  • 单位门户网站可以做百度百科深圳营销型网站建设服务
  • 如何建设一个不备案的网站获取网站访客qq 原理
  • 别人冒用我们公司做的网站怎么关掉我做网站推广
  • 江苏网站备案暂住证企业cms开源
  • 河南网站建设公司价格5站合一 网站建设
  • 专注移动网站建设网站开发翻译
  • 网站地图 格式在线花钱做网站
  • 服务器做jsp网站教程视频wp上的wordpress
  • 重庆网站建设论坛山东省建设备案网站审批表
  • 怎么让百度搜索到自己的网站施工企业负责人每月带班时间不少于
  • 顺义企业建站网站建设客户开发方案
  • 网站开发技术学习中山网站快照优化公司
  • 餐饮网站界面做电销有什么资料网站
  • 网站建设熊掌号里属于什么领域东莞网上做公司网站
  • psd简单的网站首页黑龙江新闻最新消息今天
  • 中山市网站制作网站公司建设个服务号多少钱
  • 校园网站界面建设seo属于技术还是营销
  • 网站建设广告词教育培训学校网站建设策划
  • 自己做的网站打开太慢wordpress 淘宝客 采集