热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

SylixOSasm9260中uboot以太网驱动

《asm9260中uboot以太网驱动》关键词:asm9260,紫芯,以太网驱动,mac驱动,网卡驱动本文为编

《asm9260中uboot以太网驱动》

 

关键词:asm9260,紫芯,以太网驱动,mac驱动,网卡驱动

 

本文为编写紫芯asm9260以太网驱动前对uboot中实现进行解析。

依照之前经验,网卡驱动应该包含以下部分:

大致知道了驱动框架,开始进入asm9260以太网驱动。

 

mac9260_eth_initialize函数里设置mac地址,填充了.init,.transmit,.receive函数,注册网络设备。

整体结构差不多。

 

.init里面并没有操作,初始化放在了mac_init函数中去做。

  1. 为发送/接收描述符分配内存空间,为发送/接收缓冲区分配内存空间
  2. 使能MAC时钟
  3. 管脚复用
  4. 设置MII / RMII
  5. MAC模块复位
  6. 之前为硬件复位,设置软件复位,复位所有MAC,DMA相关寄存器
  7. 设置MDC时钟频率
  8. PHY管脚复用
  9. 设置mac工作模式(100M,全双工)
  10. 设置phy工作模式(100M,全双工)
  11. 使能中断(做了很多配置,不仅仅使能中断)
  12. 设置MAC地址(开始那步设置mac地址就看看?传参都没传...)
  13. 停止所有MMC寄存器操作
  14. TX / RX描述符与相应缓冲区对接,并对描述符初始化并放入队列寄存器
  15. 清RX描述符的OWNER位?
  16. 使能MAC , DMA

 

.transmit函数其中内容基本不变:

1.将要发送的消息放置BD对应的缓冲区内,

2.填充描述符内容,

3.开始发送,

4.指向下一个BD描述符。

 

.receive函数

1.接收到BD后对其设置OWN,

2.错误处理

3.通知CPU接收

4.指向下一个BD描述符

 

 

 

总结:整体框架不变,uboot中虽然开启了RX中断,但是并没有中断函数处理。PHY初始化应该放在了其他地方。还可以加一个检测线程检查网口是否连接并设置相应的模式。


推荐阅读
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • vivo发布iQOO 11系列:搭载骁龙8 Gen2与多项创新技术
    vivo正式推出iQOO 11系列智能手机,该系列搭载最新的高通骁龙8 Gen2处理器,并引入多项创新技术,致力于为用户提供卓越的性能和游戏体验。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 制程能力分析:Cpk及其相关指数的深入探讨
    本文详细介绍了制程能力指数(Cpk)的概念及其与Cp、Pp、Ppk之间的关系,通过具体案例和图表展示如何评估和改进生产过程的能力。文章还提供了使用Excel和Minitab进行批量计算的实际操作步骤。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
author-avatar
henkoanna
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有