SylixOS网卡驱动框架

SylixOS 无Uboot版BSP 函数栈 物理内存分布 介绍函数栈之前,先介绍SylixOS Lite版本ARM平台的内存分布,根据BSP工程的连接脚本SylixOSBSP.ld可知,SylixOS的物理内存主要分为五段: TEXT段又称代码段,主要存放执行代码,有执行权限; DATA段又称数据段,主要放已经初始化好的全局变量; BSS段主要存放未初始化的全局变量; 栈又称堆栈,可存放函数的局部 阅读详情
  1. 开发环境

  • 操作系统:SylixOS操作系统
  • 编程环境:RealEvo-IDE3.1
  • 开发板:imx6q实验箱
  1. 技术实现

    SylixOS 内核版本1.4.1的网卡驱动框架与之前的版本相比有了很大变化,最主要的就是由之前的netif结构体变成了现在了netdev结构体。这个版本的网卡驱动框架主要由以下几个部分组成。

     

  2. 网卡驱动框架:网卡驱动入口

    在官方提供的imx6Q的BSP工程目录中,SylixOS文件夹主要由三个子文件夹组成,分别是:bsp, driver, user。如图 21所示。

    图 21 工程资源文件

    bsp文件夹里是跟整个bsp相关的C文件及相关配置文件等,在startup.s之后运行的第一个C文件为:bspInit.c,如图 22所示。

    图 22 bspInit.c

    驱动程序一般都存放在driver文件夹中。如图 23所示。

    图 23 驱动文件夹

    网卡驱动代码在driver下的netif子文件内,打开imx6q_netif.h , 整个网卡驱动对外只提供了一个函数:enetInit ,如图 24所示。

    图 24 网卡入口函数

    enetInit是整个网卡驱动的入口函数,前面说的bspInit.c里halNetifAttch函数里会调用这个函数,进行网络的初始化。如图 25所示。

    图 25 调用enetInit

  3. 网卡驱动框架:网卡驱动实现

    在当前版本的SylixOS 里,网卡驱动主要是实现netdev这样一个结构体,结构体里的成员如图 26所示。

    图 26 netdev

    这个结构体里的内容主要可以分为以下两类:

  4. 配置信息相关

    除了netdev_funcs结构体指针变量drv之外,其他的成员都可以分到这一类中,在驱动程序里,只需根据具体情况,对这一类的成员进行对应的赋值即可。如图 27所示。

    图 27 配置信息相关

  5. 驱动程序相关

    这一类的就一个成员,即netdev_funcs结构体指针。它里面定义了所有驱动程序需要实现的内容,这个结构体的定义如图 28所示。

    图 28 netdev_funcs

    一般,实现了init,transmit,receive这三个成员后,网卡基本就可以正常工作。这三个函数的功能如下:

    .init : 进行整个网卡的初始化内容,里面可以包括MAC控制器的初始化,PHY的初始化,描述符的初始化,中断的绑定等等;

    .transmit : 上层协议发送数据时,最后调用的就这个函数,因此,它要是实现网卡驱动的发送功能。

    .receive : 当网卡收到数据时,会调用这个函数进行接收,同时,它里面还需要实现将收到的信息传到上层协议栈中去的功能。

  6. 网卡驱动框架:在系统中添加网卡信息

    完成了上述内容之后,整个网卡驱动的内容也已经填充到netdev这个结构体中去了,最后只需要调用netdev_add函数就可以在系统中添加我们实现的这个网卡信息,如图 29所示。

    图 29 netdev_add

  7. 网卡驱动框架:连接监测线程

    在网卡驱动里,可以创建一个线程,用来监测当前网络的连接状态,如图 210所示。

    图 210 监测线程

     

     

  8. 参考资料

    无

关于SylixOS下虚拟网卡添加移植的理解 一、应用目标板卡 TI66ak2h14目标板卡 二、虚拟网卡内容的添加 虚拟网卡包含 libamp_virnetdrv与 libamp_virnetdrv_config 两个部分。因为是在TI66ak2h14的 ARM侧添加,因此首先拷贝 libamp_virnetdrv\src\demo\arm_aarch64 下的四个文件到 BSP 目录 SylixOS\driver\virnet 下,并添加.a库文件到相应目录,同时修改makefile等相关链接文件等,如下图所示。 virnet.c的主. 阅读详情

相关推荐

STM32 ST-LINK Utility 无法烧录程序的解决方法

当你打开STM32 ST-LINK Utility,硬件连接好st-link V2,打开了要烧写的文件,点那个Program verify烧录时, 如果出错了: Programming error @ 0x08000000! 我的方法是: 点你想要烧录那个HEX文件的小格,复制 然后去到你前面的文件的格子里,点粘贴: 成功! ...

wocute的博客 9521

SylixOS iMX6平台I2C总线驱动

原理概述I2C总线驱动概述I2C总线驱动是I2C适配器的软件实现,提供I2C适配器与从设备间完成数据通信的能力,比如起始,停止,应答信号和MasterXfer的实现函数。驱动程序包含初始化I2C总线控制器__i2cHwInit函数,操作函数集(总线传输__i2cTransfer函数,总线控制__i2cMasterCtl函数)。Imx6ul控制器的硬件描述imx6ul处理器内部...

weixin_33859665的博客 352

Notepad++ XML Tools插件:手把手教你格式化混乱XML与一键语法检查(保姆级教程)

本文详细介绍了如何使用Notepad++的XML Tools插件格式化混乱的XML文件并进行一键语法检查。通过插件安装、格式化实战和语法排错的完整流程,帮助开发者高效处理XML数据,提升API通信和数据存储的工作效率。特别适合需要快速验证和整理XML配置的开发人员。

weixin_42619742的博客 327

IMX6Q开发环境搭建

1: repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth --repo-url=https://gerrit-googlesource.lug.ustc.edu.cn/git-repo repo sync sudoapt-getinstallbuild-essential ...

iTom1900 802

保姆级教程:用YOLOv8n模型在RKNN和Horizon平台完成目标检测(附C++部署代码与性能实测)

本文提供了一份详尽的YOLOv8n模型在RKNN和Horizon平台上的部署指南,涵盖环境配置、模型优化、跨平台适配及性能调优。通过实战案例和C++部署代码,帮助开发者在嵌入式设备上高效实现目标检测,显著提升推理性能。

weixin_42659194的博客 468

EEG/ERP新手必看:5本神经科学入门书籍推荐(附高清PDF下载)

本文为EEG/ERP研究新手推荐5本神经科学入门书籍,涵盖认知神经科学、数据分析、ERP技术等核心内容。特别推荐《认知神经科学—关于心智的生物学》和《事件相关电位基础》,这些书籍不仅提供理论框架,还包含实用案例和MATLAB代码,帮助研究者快速掌握脑电研究技术。附高清PDF下载,适合实验室小组学习。

weixin_29210727的博客 446

SylixOS最小系统开发(一)

开发环境 操作系统:SylixOS 编程环境:RealEvo-IDE3.1.5 硬件平台:MPC8313E-RDB MPC8313E芯片介绍 MPC8313E是飞思卡尔(Freescale)基于 PowerPC-e300c3内核的系列芯片,MPC8313E-RDB采用的是MPC8313E处理器。 芯片具有 : 16KB I-Cache,16KB D-Cache,8MB NOR Fl

xiaoyaolanyun的博客 865

ROS2理论与实践_宇树机器人Go2开发指南(文字)

本文介绍了Unitree Go2机器人ROS2开发环境的安装与配置流程。主要内容包括:1)从GitHub克隆unitree_ros2仓库;2)安装ROS2 Foxy版本依赖项;3)编译特定版本的CycloneDDS(0.10.2);4)编译unitree_go和unitree_api功能包;5)网络配置,包括设置静态IP和修改环境变量脚本setup.sh以指定网络接口。文章还提供了本地回环测试的替代方案,并建议配置完成后重启电脑。整个流程涉及ROS2环境切换、网络适配和编译安装等多个技术环节。

Li_Dongyi的博客 4207

sylixos 串口驱动流程

在Sylixos 下串口被封装成一个字符设备; 1,我们可以看到内核库源码ty目录下,是内核封装好的字符设备,在开发时我们只要完成相关具体的io操作及回调函数的填充即可: 2,tty 设备的实现: 基本流程,(1)安装驱动操作函数; (2)实现SIO_CHAN 结构体中的回调函数供tty 设备函数进行回调使用,创建 tty 设备,创建收发缓冲区; (3)需要我们实现SIO_DRV_FUNCS 中ioctl()、txStartup、callbackInstall 、pollInput、...

li5830的博客 1168

【kubernetes】kubernetes kubeadm init 错误了 怎么回退?

因为虚拟机设置问题首先报错:然后我根据文章修改了核数。重启后,查看VIP运行所在机器,发现机器没有变化然后重新执行初始化后面报错了根据提供的信息,问题主要集中在 kubelet 未能成功启动控制平面组件,导致初始化过程超时。以下是可能的原因及相应的排查步骤:原因 1:kubelet 未运行或运行状态异常正如错误提示所指出,kubelet 可能未运行或处于不健康状态。请按照提示执行以下命令检查 kubelet 的状态和服务日志:根据输出结果,判断 kubelet 是否正常运行。后续一大堆错误。

九师兄 121

黑猫带你学eMMC协议第29篇:eMMC设备锁详解(CMD42)

通过cmd42命令,可以给emmc设置密码,并且锁定emmc。这时候就不能对emmc的user分区进行读写数据访问了。设备锁在V4.3版本后的emmc里面,就只能保护user area分区,因此,被锁定的emmc,依旧可以正常访问BOOT\RPMB\GPP分区。emmc内部有128 bit PWD寄存器,用来存放密码,以及有8bit PWD_LEN寄存器,用来密码长度。这两个寄存器非易失性,掉电也不会丢失。

黑猫奥利奥的博客 3237

SylixOS中AHCI驱动框架分析

SATA

li5830的博客 534

【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码

大家好,我是阿光。本专栏整理了《深度学习100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。正在更新中~ ✨。

优快云 精品推荐 10万+

sylixos与harmonyOS,SylixOS网卡驱动优化

1. 开发环境操作系统:SylixOS编程环境:RealEvo-IDE3.1硬件平台:AT9x25开发板1. 技术实现在编写完成了网卡驱动,可以实现基本的发送与接收功能之后,本篇文章将简要介绍一下如何优化网卡驱动的发送功能,提高发送的吞吐量和实时性。1.1网卡发送吞吐量优化网卡驱动可以通过零拷贝的方式来提升发送吞吐量。驱动里调用enetCoreTx发送函数来实现以太网报文的发送。这个函数接收两个参...

weixin_34146759的博客 267

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SylixOS 网卡混杂模式和组播模式

网络组播和混杂

li5830的博客 1560

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SylixOS nty模块使用说明

网卡驱动一般是对接到tcp/ip协议栈的,SylixOS用的是lwip协议栈。有些特殊情况下,需要使用网卡硬件但不套用TCP/IP协议栈,是直接通过网卡驱动收发标准以太网帧或在标准以太网帧基础上再封装一层定制的通行协议。NTY模块可以将一个标准网卡设备从驱动收发接口层截取,让网卡驱动收发的标准以太网帧不再对接lwip协议栈,而是封装为标准字符设备,通过字符设备的read,write接口即可进行以太网帧的收发。

ScilogyHunter的博客 1482

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SylixOS网卡驱动实现篇

开发环境  操作系统:SylixOS  编程环境:RealEvo-IDE3.1  硬件平台:IMX6Q实验箱 技术实现 网卡驱动的收发功能,是通过管理收发描述符的方式实现的。因此,在MAC初始化的时候需要对描述符也进行相应的初始化操作。初始化内容会因CPU的不同而有所区别。当描述符初始化完毕之后,就可以用他们来进行网络报文的收发。2.1 网络发送函数的实现 网络驱动的

PCSean的博客 928

SylixOS网卡驱动调用篇

SylixOS网卡驱动调用篇本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 1.开发环境 操作系统:SylixOS 编程环境:RealEvo-IDE3.1 硬件平台

PCSean的博客 993

SylixOS USB虚拟网卡框架

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34092455的博客 277

SylixOS网卡驱动优化

SylixOS网卡驱动优化

PCSean的博客 919
下一篇: SylixOS BSP tick驱动流程
SeanPcWoo
博客等级 码龄10年 16粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值