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

TL3562/3568移植无锡沐创N500L-AM4驱动进内核源码,报错及其解决方案

前言

        创龙官方提供的资料无锡沐创N500L-AM4驱动是rnpgbe-0.1.0.rc60-dd9f3cf.tar.gz;无锡沐创官方,截止目前,最新驱动是rnpgbe-0.2.3-f26b9a4.tar.gz。考虑到开发的稳妥性,先选用创龙尝试过的rnpgbe-0.1.0.rc60-dd9f3cf.tar.gz来移植,将他解压出来,后文将其简称“官方包”。

        目标环境:TL3562 Ubuntu环境(不是buildroot)kernel 5.15

        根据创龙官方提供的资料,来移植,会有些问题,创龙自己测试是编译成模块再移植到系统里来测试的,没有移植到内核源码中。为排查问题,花费了1.5天的时间,凸(艹皿艹 )。

移植过程及遇到的问题

        根据rnpgbe-0.1.0.rc60-dd9f3cf.tar.gz中的README文件中所述:

  • 先将官方包里的scr文件夹中文件,复制到内核源码中。但是kernel/drivers/net/ethernet下没有mucse文件夹,需要手动创建,然后进入musce文件夹,再创建一个rnpgbe文件夹。再开始复制:把官方包里的scr/目录下所有文件复制到kernel/drivers/net/ethernet/musce/rnpgbe/目录下。
  • 然后把官方包里kconfig_file文件夹中的Kconfig、Makefile两个文件,复制到kernel/drivers/net/ethernet/musce/目录下。
  • 将kernel/drivers/net/ethernet/musce/rnpgbe/目录下的Makefile文件删除,将makefile.example文件重命名为Makefile。
  • 修改kernel/drivers/net/ethernet/下的Makefile,让编译的时候,去编译kernel/drivers/net/ethernet/musce下的内容:增加一句obj-$(CONFIG_NET_VENDOR_MUCSE) += mucse/,如图:

  • 修改kernel/drivers/net/ethernet/下的Kconfig,让menuconfig工具,去包含kernel/drivers/net/ethernet/musce下的Kconfig文件:增加一句source "drivers/net/ethernet/musce/Kconfig",如图:

  • 去menuconfig界面中配置上mucse驱动:make menuconfig --> Device Drivers --> Network device support --> Ethernet driver support,应该默认就是开启的,save一下退出menuconfig

  • 然后开始编译内核的流程,很顺利,但是去kernel/drivers/net/ethernet/musce/rnpgbe/目录下,查看生成的build-in.a居然只有8kb,有问题!把该镜像烧到开发版上,然后dmseg | grep rnp指令,也确实找不到该驱动的启动信息!
  • 经对比Kconfig文件,发现端倪!mucse/Kconfig和mucse/rnpgbe/Makefile中的命名不一致!稍作修改如下:

  • 再次编译内核源码,编译过程中就会报错了:

  • 通过上述内容,可以发现是有两个问题:①No rule to make target 'xxxxxxx/rnp_ptp.o'; ②error: unused variable 'hw_addr_bar0',就说这个变量没有被使用
  • 前往rnpgbe_main.c,去解决②,文件中搜索一下发现有两个地方有hw_addr_bar0,直接把这两处注释掉

  • 再次编译内核源码,发现只剩一个问题了,刚才修改有效

  • 这个问题,思索了许久。对比过原包内的Makefile和makefile.example发现有问题!
  • 对比如下:
  • 凸(艹皿艹 )官方发布的文件,文件名写错了,还漏了一个文件!因此,结合上述内容,该makefile实际上有三处问题:

  • 再次编译内核源码,就顺利通过了。把镜像烧入开发板,使用dmseg | grep rnp指令查看,可以发现有驱动信息,成功了。

后续问题

        查看了无锡沐创最新版本的驱动包rnpgbe-0.2.3-f26b9a4.tar.gz,里面的makefile.example还是有问题~笔者已通过邮件反馈,希望后期他们有维护。

相关文章:

TL3562/3568移植无锡沐创N500L-AM4驱动进内核源码,报错及其解决方案

前言 创龙官方提供的资料无锡沐创N500L-AM4驱动是rnpgbe-0.1.0.rc60-dd9f3cf.tar.gz;无锡沐创官方,截止目前,最新驱动是rnpgbe-0.2.3-f26b9a4.tar.gz。考虑到开发的稳妥性,先选用创龙尝试过的rnpgbe-0.1.0.rc60-dd9f3cf.tar.gz来移…...

埃氏算法C++实现: 快速输出质数( 素数 )

目录 1.简介 算法原理 算法特点 应用场景 2.一般求素数方法 3.埃氏算法求素数 3.1.无动态分配 3.2.有动态分配 1.简介 ‌埃氏算法(Eratosthenes Sieve)‌,全称为埃拉托斯特尼筛法,是一种由古希腊数学家埃拉托斯特尼在公元…...

Kubernetes 集群中安装和配置 Kubernetes Dashboard

前言 上篇成功部署Kubernetes集群后,为了方便管理和监控集群资源,安装Kubernetes Dashboard显得尤为重要。Kubernetes Dashboard 是一个通用的、基于 Web 的 UI,旨在让用户轻松地部署容器化应用到 Kubernetes 集群,并对这些应用进…...

力扣-数组-414 第三大的数

解析 先利用set去重&#xff0c;然后用逆向遍历找到第三大的数 代码 class Solution { public:int thirdMax(vector<int>& nums) {set<int> numsToset;for(int i 0; i<nums.size(); i){numsToset.insert(nums[i]);}int index;if(numsToset.size() > …...

python实现答题游戏

有这样一个需求&#xff1a;使用python实现一个游戏&#xff0c;一共有10个问题&#xff0c;依次回答每个问题&#xff0c;每个用户可以输入问题的答案&#xff0c;但是互相不能看到&#xff0c;有一个管理员可以看到所有人的答案&#xff0c;并且当所有人都填写完成后可以公布…...

OneData体系架构详解

阿里巴巴的 OneData 体系架构方法论&#xff0c;主要分为三个阶段&#xff1a;业务板块、规范定义 和 模型设计。每个阶段的核心目标是确保数据的高效管理、共享与分析能力。 一. 业务板块&#xff08;Business Segment&#xff09; 业务板块是OneData体系架构中的第一步&…...

五、华为 RSTP

RSTP&#xff08;Rapid Spanning Tree Protocol&#xff0c;快速生成树协议&#xff09;是 STP 的优化版本&#xff0c;能实现网络拓扑的快速收敛。 一、RSTP 原理 快速收敛机制&#xff1a;RSTP 通过引入边缘端口、P/A&#xff08;Proposal/Agreement&#xff09;机制等&…...

解锁Java中的国密算法:安全保障的密钥

一、引言 在数字化浪潮席卷全球的当下&#xff0c;信息安全已然成为国家、企业乃至个人无法忽视的重要议题。国密算法&#xff0c;作为我国自主研发的密码算法体系&#xff0c;宛如坚固的盾牌&#xff0c;为国家信息安全筑起了一道坚不可摧的防线。它的诞生&#xff0c;不仅承载…...

docker-registry

安装依赖 apt install apache2-utils设置密码 htpasswd -Bbn 用户名 密码 >/data/registry_hub/passwd#docker私服部署 docker run -d -p 5000:5000 --name docker-registry -v /data/registry_hub/:/var/lib/registry -v /data/registry_hub/passwd:/auth/htpasswd \ -e …...

QTableWidget的简单使用

1.最简单的表格示例&#xff1a; ui->tableWidget->setRowCount(2);// 设置行数ui->tableWidget->setColumnCount(3);// 设置列数&#xff0c;一定要放在设置行表头之前QStringList rowHeaderList;// 行表头rowHeaderList << QStringLiteral("姓名"…...

第三天 学习JavaScript基础,掌握变量、数据类型、运算符、流程控制

学习JavaScript基础是成为一名前端开发者的重要一步。以下是关于变量、数据类型、运算符和流程控制的一些基础知识和示例代码。 1. 变量 变量用于存储数据。在JavaScript中&#xff0c;使用var、let或const关键字来声明变量。 // 使用 var 声明变量&#xff08;不推荐&#…...

Python - itertools- pairwise函数的详解

前言&#xff1a; 最近在leetcode刷题时用到了重叠对pairwise,这里就讲解一下迭代工具函数pairwise,既介绍给大家&#xff0c;同时也提醒一下自己&#xff0c;这个pairwise其实在刷题中十分有用&#xff0c;相信能帮助到你。 参考官方讲解&#xff1a;itertools --- 为高效循…...

C语言程序设计十大排序—选择排序

文章目录 1.概念✅2.选择排序&#x1f388;3.代码实现✅3.1 直接写✨3.2 函数✨ 4.总结✅5.十大排序 1.概念✅ 排序是数据处理的基本操作之一&#xff0c;每次算法竞赛都很多题目用到排序。排序算法是计算机科学中基础且常用的算法&#xff0c;排序后的数据更易于处理和查找。在…...

微前端qiankun的基本使用(vue-element-admin作为项目模版)

微前端qiankun的基本使用(vue-element-admin作为项目模版) qiankun架构特点主应用netmoni_master改造工程项目目录结构子项目配置:子应用注册配置项container:子应用挂载节点配置项activeRule:子应用路由子应用netmoni_child1改造目录结构项目配置:src/settings中配置子应…...

MySQL用户授权、收回权限与查看权限

【图书推荐】《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》-CSDN博客 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…...

Ansible fetch模块详解:轻松从远程主机抓取文件

在自动化运维的过程中&#xff0c;我们经常需要从远程主机下载文件到本地&#xff0c;以便进行分析或备份。Ansible的fetch模块正是为了满足这一需求而设计的&#xff0c;它可以帮助我们轻松地从远程主机获取文件&#xff0c;并将其保存到本地指定的位置。在这篇文章中&#xf…...

skynet 源码阅读 -- 启动主流程

Skynet 启动主流程分析 Skynet 是一个轻量级、高并发的服务器框架。它在启动时会进行一系列初始化操作&#xff0c;并启动多个不同功能的线程&#xff08;Monitor、Timer、Worker、Socket&#xff09;&#xff0c;从而实现消息分发、定时器、网络I/O等核心功能。本文主要从 ma…...

【Linux】Linux入门(三)权限

目录 前提权限概念whoami指令 Linux权限管理文件访问者的分类&#xff08;人&#xff09;file指令权限信息权限的表示方法 chmod指令 更改权限chown指令 修改文件&#xff0c;文件夹所属用户和用户组 权限掩码umask&#xff08;权限掩码&#xff09; 粘滞位 前提 请先看下面这…...

FluentCMS:基于 ASP.NET Core 和 Blazor 技术构建的开源CMS内容管理系统

推荐一个基于 ASP.NET Core 和 Blazor 技术构建的、功能完善的开源CMS内容管理系统。 01 项目简介 FluentCMS 是一个基于强大的 ASP.NET Core 和创新的 Blazor 技术构建的现代内容管理系统&#xff08;CMS&#xff09;。 FluentCMS 设计为快速、灵活且用户友好&#xff0c;它…...

【阿里云】使用docker安装nginx后可以直接访问

一、创建目录 mkdir -p config/{cert,conf.d} html logs二、上传nginx.conf的配置文件 user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include /etc/ngin…...

leetcode-84-柱状图最大的矩形

柱状图中最大的矩形 已解答 算术评级: 7 同步题目状态 困难 相关标签 相关企业 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1. stack 计算位置在…...

Vue | 搭建第一个Vue项目(安装node,vue-cli)

一.环境搭建&#xff1a; 1.安装node&#xff1a; 进入网站&#xff0c;下载对应版本的node.js Index of /dist/ (nodejs.org) 我这里下载的是&#xff1a; 解压到对应的目录下&#xff1a; 并新建两个文件夹node_cache和node_global&#xff1a; 2.配置环境&#xff1a; …...

Redis 持久化机制:RDB 和 AOF

Redis 持久化机制&#xff1a;RDB 和 AOF Redis 主要提供了两种持久化方式&#xff1a;**RDB&#xff08;Redis Database&#xff09;**和 AOF&#xff08;Append-Only File&#xff09;。它们各自的实现原理、优缺点以及适用场景如下。 1. RDB&#xff08;Redis Database&…...

ToDesk云电脑、顺网云、网易云、易腾云、极云普惠云横测对比:探寻电竞最佳拍档

一、云电脑&#xff1a;电竞新宠崛起 在电竞游戏不断发展的今天&#xff0c;硬件性能成为了决定游戏体验的关键因素。为了追求极致的游戏画面与流畅度&#xff0c;玩家们往往需要投入大量资金购置高性能电脑。然而&#xff0c;云电脑技术的出现&#xff0c;为玩家们提供了一种…...

GPT 结束语设计 以nanogpt为例

GPT 结束语设计 以nanogpt为例 目录 GPT 结束语设计 以nanogpt为例 1、简述 2、分词设计 3、结束语断点 1、简述 在手搓gpt的时候&#xff0c;可能会遇到一些性能问题&#xff0c;即关于是否需要全部输出或者怎么节约资源。 在输出语句被max_new_tokens 限制&#xff0c…...

【达梦数据库】两地三中心环境总结

目录 架构监视器位置异步备库同步频率配置&#xff1a;dmtimer.ini断网测试异地切换过程&回切&#xff1a;允许丢数据模式切换回切 架构 2&#xff08;1主1实时备库&#xff09;1&#xff08;实时备库&#xff09;1(异步备库)&#xff0c;分别为节点1、2、3、4监视器位置 …...

C语言进阶习题【1】指针和数组(4)——指针笔试题3

笔试题5&#xff1a;下面代码输出是是什么&#xff1f; int main() {int a[5][5];int(*p)[4];p a;printf( "%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);return 0; }分析 代码结果 笔试题6&#xff1a;下面代码输出是是什么&#xff1…...

Qt——引用第三方SDK lib库的使用方法

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》 《实用硬件方案设计》 《结构建模设…...

Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert

概述 关于Prometheus和Grafana的安装&#xff0c;略过。 写在前面 Dashboard&#xff1a;仪表板&#xff0c;可包含多个PanelPanel&#xff1a;面板&#xff0c;Dashboard中的组件 如有写得不对的地方&#xff0c;烦请指出。 新增仪表板 点击右上角的 选择New dashboard…...

管道符、重定向与环境变量

个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚&#xff1a; https://blog.csdn.net/qq_52914969?typeblog 一、重定向 将命令和文件结合 标准输入重定向&#xff08;STDIN&#xff0c;文件描述符为0&#xff09;&#xff1a;默认从键盘输入&am…...

如何使用 Redis 作为高效缓存

如何使用 Redis 作为高效缓存 Redis&#xff08;Remote Dictionary Server&#xff09;是一个高性能的 内存存储系统&#xff0c;通常被用作 缓存 来加速数据访问&#xff0c;提高应用的吞吐量和响应速度。本文详细讲解如何使用 Redis 作为高效缓存&#xff0c;包括基本原理、…...

simulink入门学习01

文章目录 1.基本学习方法2.图形环境--模块和参数3.激活菜单---添加到模型3.1输入选项3.2添加到模型3.3更改运算3.4验证要求 4.乘以特定值--Gain模块4.1引入gain模块4.2更改增益参数4.3接入系统4.4大胆尝试 1.基本学习方法 今天突然想要学习这个simulink的相关知识&#xff0c;…...

接上篇基于Alertmanager 配置钉钉告警

Alertmanager 是一个用于处理和管理 Prometheus 警报的开源工具。它负责接收来自 Prometheus 服务器的警报&#xff0c;进行去重、分组、静默、抑制等操作&#xff0c;并通过电子邮件、PagerDuty、Slack 等多种渠道发送通知。 主要功能 去重&#xff1a;合并相同或相似的警报&a…...

【Elasticsearch】index.mapping.source.mode

在Elasticsearch中&#xff0c;当设置 index.mapping.source.mode 为 synthetic 时&#xff0c;Elasticsearch会自动生成和存储源文档的合成版本。这些合成版本的内容取决于你索引的字段和映射定义。具体来说&#xff0c;synthetic 模式会存储以下内容&#xff1a; ### 合成源文…...

GBase8c aes_encrypt和aes_decrypt函数

在数据库中&#xff0c;aes_encrypt和aes_decrypt函数进行加解密时使用的块加密模式。 GBase8c 与 MySQL 的aes_encrypt和aes_decrypt函数区别&#xff1a; 1、GBase8c 中的初始化向量init_vector不能为空 2、MySQL的加密模块block_encryption_mode 为aes-128-ecb&#xff0c;…...

【Unity】ScrollViewContent适配问题(Contentsizefilter不刷新、ContentSizeFilter失效问题)

最近做了一个项目&#xff0c;菜单栏读取数据后自动生成&#xff0c;结果用到了双重布局 父物体 尝试了很多方式&#xff0c;也看过很多大佬的文章&#xff0c;后来自己琢磨了一下&#xff0c;当子物体组件自动生成之后&#xff0c;使用以下以下代码效果会好一些&#xff1a; …...

第二届国赛铁三wp

第二届国赛 缺东西去我blog找&#x1f447; 第二届长城杯/铁三 | DDLS BLOG web Safe_Proxy 源码题目 from flask import Flask, request, render_template_stringimport socketimport threadingimport htmlapp Flask(__name__)app.route(/, methods"GET"])de…...

对称二叉树(力扣101)

这道题翻译过来就是判断根节点的左右子树是否可以通过翻转&#xff0c;变得完全一样。如果可以&#xff0c;则这棵二叉树为对称二叉树。那么什么样的左右子树可以通过翻转相互变换呢&#xff1f;它们的节点的数值一定对称分布。那么我们就需要同时遍历左右树&#xff0c;不断比…...

postgresql15的停止

PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统&#xff0c;且因为许可证的灵活&#xff0c;任何人都可以以任何目的免费使用、修改和分发PostgreSQL。介绍过postgresql的启动方法&#xff0c;就很有必要介绍下postgresql的停止方法。 一、停止…...

3.1 Go函数调用过程

在 Go 语言中&#xff0c;函数调用的核心机制依赖于内存的栈区分配和指针操作&#xff0c;理解这一原理有助于掌握函数的执行过程。 1. 内存结构概述 在 Go 程序编译成可执行文件并启动后&#xff0c;操作系统会为其分配进程内存&#xff0c;进程内存主要分为以下区域&#x…...

Java导出通过Word模板导出docx文件并通过QQ邮箱发送

一、创建Word模板 {{company}}{{Date}}服务器运行情况报告一、服务器&#xff1a;总告警次数&#xff1a;{{ServerTotal}} 服务器IP:{{IPA}}&#xff0c;总共告警次数:{{ServerATotal}} 服务器IP:{{IPB}}&#xff0c;总共告警次数:{{ServerBTotal}} 服务器IP:{{IPC}}&#x…...

c++---------------------------模板进阶

1.非类型模板参数 模板参数分类类型形参与非类型形参 。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在 class 或者 typename 之类的参数类型名称 。 非类型形参&#xff0c;就是用一个常量作为类 ( 函数 ) 模板的一个参数&#xff0c;在类 ( 函数 ) 模板中可…...

FPGA与ASIC:深度解析与职业选择

IC&#xff08;集成电路&#xff09;行业涵盖广泛&#xff0c;涉及数字、模拟等不同研究方向&#xff0c;以及设计、制造、封测等不同产业环节。其中&#xff0c;FPGA&#xff08;现场可编程门阵列&#xff09;和ASIC&#xff08;专用集成电路&#xff09;是两种重要的芯片类型…...

c++面试题,请使用STL的std::remove_if算法删除std::vector<int>容器中大于5的数字

请使用STL的std::remove_if算法删除std::vector容器中大于5的数字 在C 中&#xff0c; std::remove_if 算法并不会真正从容器中删除元素&#xff0c; 而是将满足条件的元素移动到容器末尾&#xff0c;并返回一个指向新的逻辑结束位置的迭代器。 你需要使用容器的 erase 成员函…...

阿里云-银行核心系统转型之业务建模与技术建模

业务领域建模包括业务建模和技术建模&#xff0c;整体建模流程图如下&#xff1a; 业务建模包括业务流程建模和业务对象建模 业务流程建模&#xff1a;通过对业务流程现状分析&#xff0c;结合目标核心系统建设能力要求&#xff0c;参考行业建 模成果&#xff0c;形成结构化的…...

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开&#xff0c;使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版&#xff0c;仅包含Conda和Python&#xff0c;如果只做深度学习&#xff0c;可使用miniconda。 [注]&#xff1a;Anaconda、Conda与Miniconda Conda&#xff1a;创建和管…...

智能风控 数据分析 groupby、apply、reset_index组合拳

目录 groupby——分组 本例 apply——对每个分组应用一个函数 等价用法 reset_index——重置索引 使用前​编辑 注意事项 groupby必须配合聚合函数、 关于agglist 一些groupby试验 1. groupby对象之后。sum&#xff08;一个列名&#xff09; 2. groupby对象…...

Linux(Centos 7.6)命令详解:iconv

1.命令作用 将给定文件的编码从一种编码转换为另一种编码(Convert encoding of given files from one encoding to another) 2.命令语法 Usage: iconv [OPTION...] [FILE...] 3.参数详解 OPTION: 输入/输出格式规范: -f, --from-codeNAME&#xff0c;原始文本编码-t, --t…...

MySQL实现批量表分区完全示例

对于单表大数据量大的问题&#xff0c;如果数据支持分片&#xff0c;使用表分区是个不错的选择&#xff0c;那么MySQL是如何实现表分区的&#xff1f; 一、表分区条件 1.数据库存储引擎支持&#xff1a;InnoDB 和 MyISAM引擎 2.数据库版本支持&#xff1a;MySQL 5.1以后&…...

缓存商品、购物车(day07)

缓存菜品 问题说明 问题说明&#xff1a;用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大。 结果&#xff1a; 系统响应慢、用户体验差 实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询…...