在 RISC-V Linux 内核中添加模块
在 RISC-V Linux 内核中添加模块
flyfish
本例以添加helloworld字符设备为例
一 源码配置
1 源码
源码文件helloworld.c拷贝到 drivers/char 目录中
源码主要是输出Hello world init
2 Kconfig
打开drivers/char 目录下的Kconfig文件

在endmenu之前加上
config HELLOWORLDtristate "HELLOWORLD driver to output user messages"default nhelpI am here
3 makefile
打开drivers/char 目录下的makefile文件
最后加上
obj-$(CONFIG_HELLOWORLD)+= helloworld.o
二 编译配置
在编译Linux内核文件时,先要配置.config文件。
命令说明
生成.config文件
make ARCH=riscv defconfig
修改配置
make ARCH=riscv menuconfig
将当前.config变成defconfg默认配置文件
make ARCH=riscv savedefconfig
上述命令可以加上编译环境 CROSS_COMPILE=riscv64-linux-gnu-
例如
make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- defconfig
配置项的值有(星号、M、空) 三项,可以理解成(Y、M、N)三项
以下针对helloworld来说
Y: 编译时会将.c文件编译成.o文件并链接到内核
M: .o文件链接成模块。
N:就是不编译.文件
如果helloworld要编译就会在.config文件中看到
CONFIG_HELLOWORLD=y
配置方法
可以先用make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- defconfig
生成一个.config文件,然后执行命令make ARCH=riscv menuconfig修改
如果是buildroot中配置Linux内核可以执行命令 make linux-menuconfig
配置时出现如下界面
本例是字符设备

可以看到我们的helloworld配置了
生成镜像后启动

命令参考
https://www.kernel.org/doc/makehelp.txt
相关文章:
在 RISC-V Linux 内核中添加模块
在 RISC-V Linux 内核中添加模块 flyfish 本例以添加helloworld字符设备为例 一 源码配置 1 源码 源码文件helloworld.c拷贝到 drivers/char 目录中 源码主要是输出Hello world init 2 Kconfig 打开drivers/char 目录下的Kconfig文件 在endmenu之前加上 config HELLO…...
利用AOP实现统一功能处理
目录 一、实现用户登录校验 实现自定义拦截器 将自定义的拦截器添加到框架的配置中,并且设置拦截的规则 二、实现统一异常处理 三、实现统一数据格式封装 一、实现用户登录校验 在之前的项目中,在需要验证用户登录的部分,每次都需要利…...
会话技巧---英文单词
目录 前言原文表示同意、答应表示不同意表示建议与忠告鼓励称赞担心与忧虑赞美夸奖-单词前言 加油 原文 表示同意、答应 1.agree[əˈgri]vi. 同意(=approve of); 答应(= consent to) agreement [əˈgrimənt] n. (意见或看法)一致 agree with sb about / on sth…...
VS中解决方案和项目的区别
总目录 文章目录总目录一、概述1、解决方案2、项目3、项目文件4、解决方案文件夹二、图解1、图解解决方案和项目的关系2、图解sln文件3、图解项目文件结语一、概述 1、解决方案 解决方案是一个容器,通常包含多个项目,这些项目通常相互引用。 解决方案中…...
MyBatis的parameterType传入参数类型和resultType返回结果类型
记录:413 场景:MyBatis的parameterType传入参数类型和resultType返回结果类型。 版本:JDK 1.8,Spring Boot 2.6.3,mybatis-3.5.9。 1.传入参数parameterType是Integer 传入参数类型parameterType:java.lang.Integer。 返回结…...
什么是Android FrameWork,请你介绍一下?
Framework是什么 Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Fr…...
【SQL 必知必会】- 第十六课 更新和删除数据
目录 更新数据 不要省略WHERE 子句 在UPDATE 语句中使用子查询 删除数据 不要省略WHERE 子句 友好的外键 删除表的内容而不是表 更快的删除 更新和删除的指导原则 这一课介绍如何利用UPDATE 和DELETE 语句进一步操作表数据。 更新数据 更新(修改)表中…...
常见哈希算法及其应用
哈希算法经常会被用到,比如我们Go里面的map,Java的HashMap,目前最流行的缓存Redis都大量用到了哈希算法。它们支持把很多类型的数据进行哈希计算,我们实际使用的时候并不用考虑哈希算法的实现。而其实不同的数据类型,所…...
PHP快速入门02-PHP语言基础
文章目录前言一、 数据类型1.1 String(字符串)1.2 Integer(整型)1.3 Float(浮点型)1.4 Boolean(布尔型)1.5 Array(数组)1.6 Object(对象ÿ…...
FSCapture - 长截图工具
FSCapture - 长截图工具前言下载使用推荐设置长截图前言 目前大部分手机系统都自带长截图功能,但Windows系统没有自带的长截图功能,因此推荐一款第三方工具FSCapture,该软件轻量强大,支持长截图,即滚动截图。 下载 …...
[ 云计算 | Azure ] Chapter 05 | 核心体系结构之管理组、订阅、资源和资源组以及层次关系
本文主要对如下内容进行讲解:Azure云计算的核心体系结构组件中的:资源、订阅和资源组,以及了解 Azure 资源管理器 (ARM) 如何部署资源。 本系列已经更新文章列表: [ 云计算 | Azure ] Chapter 03 | 描述云计算运营中的 CapEx 与…...
【算法LearnNO.1】算法介绍以及算法的时间复杂度和空间复杂度
目录 一、算法 1、算法概述 2、算法的5个特性 3、设计算法的标准 二、时间复杂度 1、时间复杂度的介绍 2、渐进时间复杂度的求法 3、计算时间复杂度的代码举例(平方阶示例) 4、时间复杂度排序 三、空间复杂度 一、算法 1、算法概述 算法就是解…...
013:Mapbox GL添加marker
第013个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中添加marker。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共70行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https://xiaozhu…...
智慧工厂可视化合集,推动行业数字化转型
图扑软件基于 HTML5(Canvas/WebGL/WebVR)标准的 Web 技术,满足了工业物联网跨平台云端化部署实施的需求,以低代码的形式自由构建三维数字孪生、大屏可视化、工业组态等等。从 SDK 组件库,到 2D 和 3D 编辑,…...
工作流调度系统 Azkaban介绍与安装(一)
文章目录前言1、为什么要用工作流调度系统2、常见的工作流调度系统1 集群规划2 配置 MySQL3 配置 Executor Server3.1 修改 azkaban.properties3.2 启动3.3 激活4 配置 Web Server4.1 修改 azkaban.properties4.2 修改azkaban-users.xml文件,添加 atguigu 用户4.3 启…...
【Python基础入门学习】Python工具Pycharm的安装与使用
一、关于Python 1.1 下载Python 在下载与安装pycharm工具前,一定要先安装python 打开Python官网:python下载打开上述网站,选择 Downloads -> 系统 我是Windows系统,点击进入后,找到自己要安装的安装包以及想安装的…...
【版本控制】Github同步Gitee镜像仓库自动化脚本
文章目录Github同步Gitee镜像仓库自动化脚本前言什么是Hub Mirror Action?1.介绍2.用法配置步骤1.生成密钥对2.GitHub私钥配置3.Gitee公钥配置4.Gitee生成私人令牌5.Github绑定Gitee令牌6.编写CI脚本7.多仓库同步推送8.定时运行脚本总结Github同步Gitee镜像仓库自动…...
索引的分类
1.唯一索引 给表中某一列设置为了唯一约束(这列不允许出现重复数据)后,数据库会为将这一列设置索引,这个索引叫做唯一索引(主键那一列是一个特殊的唯一索引,不仅要满足唯一索引这一列不可以出现重复数据,而且这一列还…...
【整理九】
目录1.说说你对递归的理解?封装一个方法用递归实现树形结构封装2.Link和import有什么区别?3.什么是FOUC? 如何避免?4.说说你对预编译器的理解?5.shouldComponentUpdate 的作用6.概述下 React 中的事务处理逻辑7.React组件的划分业…...
钢网是SMT生产使用的一种工具,如何制作?
钢网是SMT生产使用的一种工具,其主要功能是将锡膏准确地涂敷在有需要焊接的PCB焊盘上。 钢网的好坏,直接影响印刷工作的质量,目前一般使用的金属钢网,是由薄薄的、带有小孔的金属板制作成的,在开孔处,锡膏…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
