热门标签 | 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协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 探讨如何通过编程技术实现100个并发连接,解决线程创建顺序问题,并提供高效的并发测试方案。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • 近期遇到电脑网络不稳定和游戏时频繁重启的问题,寻求专业建议。网络环境为ADSL调制解调器通过路由器共享给两台电脑使用,怀疑存在ARP攻击或硬件配置问题。希望获得详细的故障排查和解决方案。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 台式电脑的电力消耗:待机一天耗电多少?
    探讨台式电脑的电力消耗问题,特别是待机状态下的能耗。本文将详细介绍影响电脑功耗的因素,并提供计算和优化电源配置的方法。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文将详细介绍如何在Linux操作系统中执行PHP脚本,包括环境配置、命令使用及验证方法。对于需要在Linux环境下开发或部署PHP应用的用户来说,这是一篇非常实用的文章。 ... [详细]
  • 本文探讨了现代信号处理系统的核心组件,包括数据转换、数据交互和数据处理。详细介绍了AD/DA转换、串/并转换、编解码转换等技术,并讨论了FPGA在信号处理中的应用及其实现方法。 ... [详细]
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社区 版权所有