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

Linux内核移植之网络驱动更改说明一

一.  简介

本文学习 NXP官方Linux内核移植网络驱动的更改。

为了方便后面 Linux驱动的开发调试,所以,必须要把网络驱动调试好。

如果在做 Linux驱动开发时,写了一个 app或驱动,就需要将系统全部文件(即 uboot,kernel,.dtb文件,filesystem文件系统)烧写到开发板上,这个烧写过程是很慢的,filesystem根文件系统是很大的。

网络调试的话,可以将所有文件存放在 ubuntu系统下,开发板系统启动后,将 ubuntu系统下的 某个文件目录挂载在开发板上。如果更新了某个程序或文件,可以将其直接拷贝到该文件目录下,开发板就可以直接运行调试。这样调试十分方便。

二.   Linux内核移植之网络驱动更改

在学习 uboot 移植的时候就已经说过了,正点原子开发板的网络和 NXP(恩智浦) 官方的网络硬件上 不同,网络 PHY 芯片由 KSZ8081 换为了 LAN8720A ,两个网络 PHY 芯片的复位 IO 也不同。 所以, NXP官方的 Linux 内核自带的网络驱动是驱动不起来 I.MX6U-ALPHA 开发板上的网络的,需要做修 改。

网络驱动的更改大体有五个方面更改。下面具体说明更改点。

1.  修改 LAN8720 的复位引脚驱动 与 网络时钟引脚驱动

(1) 删除 LAN8720(PHY芯片)的复位引脚做别的功能

结合IMX6ULL参考手册与网络硬件原理图可以知道,网络 ENET1 复位引脚 ENET1_RST 连接在 I.M6ULL SNVS_TAMPER7 这个引脚上。网络ENET2 的复位引脚 ENET2_RST 连接在 I.MX6ULL SNVS_TAMPER8 上。

这里我所使用的开发板是 nand-Flash版,对应的设备树配置文件为 imx6ull-alientek-nand.dts(之前添加ALPHA开发板添加的)。因为 imx6ull-alientek-nand.dts调用了imx6ull-14x14-evk.dts文件。

打开设备树文件 imx6ull-14x14-evk.dts,如下代码:

		pinctrl_spi4: spi4grp {fsl,pins = <MX6ULL_PAD_BOOT_MODE0__GPIO5_IO10        0x70a1MX6ULL_PAD_BOOT_MODE1__GPIO5_IO11        0x70a1/* MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07      0x70a1 *//* MX6ULL_PAD_SNVS_TAMPER8__GPIO5_IO08      0x80000000 */>;};
5 行和 第 6 行,就是初始化 SNVS_TAMPER7 SNVS_TAMPER8 这两个 引脚的,这里是作为了 SPI4 IO ,这不是我们想要的,所以将第5行 第6行 代码 删除掉!

继续在 imx6ull-14x14-evk.dts 文件中,找到如下代码:

spi4 {compatible = "spi-gpio";
..................................../*	pinctrl-assert-gpios = <&gpio5 8 GPIO_ACTIVE_LOW>; */status = "okay";gpio-sck = <&gpio5 11 0>;gpio-mosi = <&gpio5 10 0>;/*	cs-gpios = <&gpio5 7 0>;  */num-chipselects = <1>;
...................................
}

如上所示:4 行,设置 GPIO5_IO08 SPI4 的一个功能引脚(我也不清楚具体作为什么功能用)GPIO5_IO08 就是 SNVS_TAMPER8 GPIO 功能引脚。

8 行,设置 GPIO5_IO07 作为 SPI4 的片选引脚,而 GPIO5_IO07 就是 SNVS_TAMPER7 GPIO 功能引脚。
现在我们需要 GPIO5_IO07 GPIO5_IO08 分别作为 ENET1 ENET2 的复位引脚,而不 SPI4 的功能引脚,因此,上面第 4 行与第 8行 处的代码删除掉!! 否则会干扰到网络复位引脚!

(2) 添加网络复位引脚,配置网络时钟

在 imx6ull-14x14-evk.dts 文件中找到名为 “ iomuxc_snvs ” 的节点 ,然后在 此节点下添加网络复位引脚信息,添加完成以后的 “ iomuxc_snvs ” 的节点内容如下:

&iomuxc_snvs {pinctrl-names = "default_snvs";pinctrl-0 = <&pinctrl_hog_2>;imx6ul-evk {
...............................    /*enet1 reset zuozhongkai*/pinctrl_enet1_reset: enet1resetgrp {fsl,pins = </* used for enet1 reset */MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x10B0 >;};/*enet2 reset zuozhongkai*/pinctrl_enet2_reset: enet2resetgrp {fsl,pins = </* used for enet2 reset */MX6ULL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x10B0 >;};};
};

2.  修改 fec1 和 fec2 节点的 pinctrl-0 属性

在 imx6ull-14x14-evk.dts 文件中,找到名为 “ fec1 ” 和 “ fec2 ” 的这两个节点,修改其中的 “ pinctrl-0 ”属性值,修改以后如下所示:
&fec1 {pinctrl-names = "default";pinctrl-0 = <&pinctrl_enet1&pinctrl_enet1_reset>; phy-mode = "rmii";
............................phy-reset-gpios = <&gpio5 7 GPIO_ACTIVE_LOW>;phy-reset-duration = <200>;status = "okay";
};&fec2 {pinctrl-names = "default";pinctrl-0 = <&pinctrl_enet2&pinctrl_enet2_reset>;  
...........................phy-reset-gpios = <&gpio5 7 GPIO_ACTIVE_LOW>;phy-reset-duration = <200>;status = "okay";
};

3~4 行,修改后的 fec1 节点“ pinctrl-0 ”属性值。
14~15 行,修改后的 fec2 节点“ pinctrl-0 ”属性值。

3. 修改 LAN8720A 的 PHY 地址

4. 修改 fec_main.c 文件

5. 修改 smsc.c 文件

6. 配置 Linux 内核,使能 LAN8720 驱动

相关文章:

Linux内核移植之网络驱动更改说明一

一. 简介 本文学习 NXP官方Linux内核移植网络驱动的更改。 为了方便后面 Linux驱动的开发调试&#xff0c;所以&#xff0c;必须要把网络驱动调试好。 如果在做 Linux驱动开发时&#xff0c;写了一个 app或驱动&#xff0c;就需要将系统全部文件&#xff08;即 uboot&#…...

邮件|gitpushgithub报错|Lombok注解

基于 Spring Boot 搭建一个定时发送邮件的项目可以按照以下步骤进行&#xff1a; 创建一个新的 Spring Boot 项目&#xff0c;并添加所需的依赖。在 pom.xml 文件中添加以下依赖项&#xff08;根据你的需要进行调整&#xff09;&#xff1a; xml org.springframework.boot sp…...

【前端知识】Node——events模块的相关方法

一、events模块的常用方法 // 事件总线 const EventsEmitter require(events);const emitter new EventsEmitter();function HLog(msg){console.log(msg); }// 监听 emitter.on(hlog, HLog);setTimeout(() > {// 触发&#xff0c;打印emitter.emit(hlog, hello emitter!)…...

广州华锐互动VRAR | VR课件内容编辑器解决院校实践教学难题

VR课件内容编辑器由VR制作公司广州华锐互动开发&#xff0c;是一款专为虚拟现实教育领域设计的应用&#xff0c;它能够将传统的教学内容转化为沉浸式的三维体验。通过这款软件&#xff0c;教师可以轻松创建和编辑各种虚拟场景、模型和动画&#xff0c;以更生动、直观的方式展示…...

Wireshark抓包:理解TCP三次握手和四次挥手过程

TCP是一种面向连接、端到端可靠的协议&#xff0c;它被设计用于在互联网上传输数据和确保成功传递数据和消息。本节来介绍一下TCP中的三次握手和四次挥手。 文章目录 1 TCP头部格式2 wireshark抓包分析2.1 SEQ和ACK2.2 三次握手2.3 四次挥手 3 程序 1 TCP头部格式 TCP头部占据…...

网络工程师-HCIA网课视频学习

这里是速成的&#xff0c;只积累下&#xff0c;自己未曾学习到的东西。通过书本补充知识点。 视频&#xff1a;hcia17-链路聚合_哔哩哔哩_bilibili hcia16-路由高级特性&#xff1a; hcia17-链路聚合&#xff1a; 由于如果根据视频来学习的话&#xff0c;感觉视频的总结并不…...

【每日刷题——语音信号篇】

思考与练习 练习2.1 语音信号在产生的过程中&#xff0c;以及被感知的过程中&#xff0c;分别要经过人体的哪些器官&#xff1f; 1.产生过程&#xff1a; 肺部空气 → \rightarrow →冲击声带 → \rightarrow →通过声道&#xff08;可以调节&#xff09; → \rightarrow →…...

Linux进程通信——IPC、管道、FIFO的引入

进程间的通信——IPC 进程间通信 (IPC&#xff0c;InterProcess Communication) 是指在不同进程之间传播或交换信息。 IPC的方式通常有管道 (包括无名管道和命名管道) 、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。 …...

数理统计的基本概念(一)

文章目录 总体、样本与统计量总体及其分布样本及其分布统计量统计量概念样本矩顺序统计量及其分布样本中位数与样本极差经验分布函数 参考文献 总体、样本与统计量 总体及其分布 在数理统计中&#xff0c;称所研究的对象的全体为总体&#xff0c;总体中的元素称为个体。若总体…...

clickhouse分布式之弹性扩缩容的故事

现状 社区不支持喔&#xff0c;以后也不会有了。曾经尝试过&#xff0c;难道是是太难了&#xff0c;无法实现吗&#xff1f;因为他们企业版支持了&#xff0c;可能是利益相关吧&#xff0c;谁知道呢&#xff0c;毕竟开源也要赚钱&#xff0c;谁乐意一直付出没有回报呢。 社区…...

数据结构--串的基本概念

目录 串的基本概念 串的定义 串与线性表对比 ​串的基本操作​ 串的比较 字符集编码 乱码问题​编辑 总结 ​串的存储结构 ​串的顺序存储​编辑 串的链式存储 串的基本操作 1、求字串 2、比较 3、定位操作 总结 串的基本概念 串的定义 串与线性表对比 串的…...

音视频流媒体之 IJKPlayer FFmpeg Android 编译

FIJK dockerfile 编译环境 FROM --platformlinux/amd64 ubuntu:18.04RUN apt-get update && apt-get install -y \wget \unzip \git \gcc \g \make \python \yasm \pkg-config \protobuf-compiler \sudoRUN apt-get install -y openjdk-8-jdkENV ANDROID_HOME…...

记录一次较为完整的Jenkins发布流程

文章目录 1. Jenkins安装1.1 Jenkins Docker安装1.2 Jenkins apt-get install安装 2. 关联github/gitee服务与webhook2.1 配置ssh2.2 Jenkins关联2.3 WebHook 3. 前后端关联发布 1. Jenkins安装 1.1 Jenkins Docker安装 Docker很好&#xff0c;但是我没有玩明白如何使用Docke…...

Virtual安装centos后,xshell连接centos 测试及遇到的坑

首先来一张官方的图--各种网络模式对应的连接状况&#xff1a; 1. 网络使用Host-Only模式动态分配IP&#xff0c;点确定后&#xff0c;centos 上运行 system restart network &#xff0c;使用ifconfig查看新的ip&#xff0c;XShell可以直接连上centos&#xff0c; 但是由于使用…...

【算法】最优乘车——bfs(stringsteam的实际应用,getline实际应用)

题目 H 城是一个旅游胜地&#xff0c;每年都有成千上万的人前来观光。 为方便游客&#xff0c;巴士公司在各个旅游景点及宾馆&#xff0c;饭店等地都设置了巴士站并开通了一些单程巴士线路。 每条单程巴士线路从某个巴士站出发&#xff0c;依次途经若干个巴士站&#xff0c;…...

『亚马逊云科技产品测评』活动征文|通过lightsail一键搭建Drupal VS 手动部署

『亚马逊云科技产品测评』活动征文&#xff5c;通过lightsail一键搭建Drupal 提示&#xff1a;授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚…...

使用 VuePress 和 Vercel 打造个人技术博客:实现自动化部署

什么是VuePress? 以下是VuePress官方文档的介绍&#xff1a;VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容&#xff08;如文档、博客等&#xff09;&#xff0c;然后 VuePress 会帮助你生成一个静态网站来展示它们。VuePress 诞生的初…...

Re50:读论文 Large Language Models Struggle to Learn Long-Tail Knowledge

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;Large Language Models Struggle to Learn Long-Tail Knowledge ArXiv网址&#xff1a;https://arxiv.org/abs/2211.08411 官方GitHub项目&#xff08;代码和实体&#xff09;&#xf…...

Spring IOC - Bean的生命周期之依赖注入

在Spring启动流程中&#xff0c;创建的factoryBean是DefaultListableBeanFactory&#xff0c;其类图如下所示&#xff1a; 可以看到其直接父类是AbstractAutoireCapableBeanFactory&#xff0c;他主要负责完成Bean的自动装配和创建工作。 具体来说&#xff0c;AbstractAutowire…...

Android Termux安装MySQL,内网穿透实现公网远程访问

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...