linux下编译与运行,Linux操作系统驱动编译与运行是怎样的?

一、手工加载测试

1、insmod 。/key_test。ko 加载驱动模块到内核

2、cat /proc/modules |grep key_test 查看key_test模块在内核中的地址,不加过滤器可以看到全部加载的模块。

3、lsmod 显示模块,这时可以看到所有的模块名字,后面跟的是主设备号和次设备号。

4、rmmod key_test 把模块从内核里卸载。

二、动态加载

1、把key_test。c源代码放到内核源代码的/drives/char/下,因为这是属字符型驱动,放在这编译到zImage中。

2、这时我们make menuconfig 编译内核是看不到key_test这个选项的。

我们把这个选项写到菜单里面才行。在内核源代码的/drives/char/下有一个Kconfig文件,打开

(1) vi Kconfig 加几行到里面:

config ConFig_key_test

bool "key test" //前面那个bool换成tristate就是支持模块化编译

上面句是在make menuconfig时会出现key test这个选项在drive/char子菜单下,bool前面是TAB键

------help---------- 这句是出现在菜单选项下面的

This key test help。

这句是你的驱动的说明会出现在help里面

(2)在/drivers/char目录下的Makefile文件里加上一句:

obj-$(CONFIG_key_test) += key_test。o

上面这句是让Make时把key_test编译到内核中。

(3) make menuconfig 把key_test选项选取上

(4) make zImage

生成zImage文件,重启动加载这个新编的内核。

3、lsmod就能看到key_test了,但是还不能用,没有接口,也就是/dev下面没有

4、mknod /dev/key_test c 121 0 这是创建设备到/dev下,使普通程序可以调用了,121是在源代码里定义的它的主设备号,0是次设备号。

5、cat /dev/key_test 这是相当于open这个设备了,或者写一个程序直接调用open、write等函数。

全部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring mvc 提示_Spring BootHibernate提示

spring mvc 提示1.概述 Hibernate无需介绍。 它是Java中最受欢迎的ORM。 同样,Spring Boot是Java中功能最强大,最易于使用的框架。 本教程与Hibernate或Spring Boot无关,其中有大量的内容。 我们将研究在将它们一起使用时可能会遇到的一些…

异常:Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

执行 JDBC 有关代码时,报如下的异常: 原来是配置文件的内容有问题:

linux 端口tnpl,利用Python找出9个连续的空闲端口

这篇文章主要介绍了Python找出9个连续的空闲端口的方法,感兴趣的小伙伴们可以参考一下一、项目需求安装某软件,配置时候需要填写空闲的端口。查看5个平台的某个端口是否被占用5个平台为windows, linux, aix, hp, solaris二、实现方案有两种1、利用 pytho…

go比java快多少_Java 11快多少?

go比java快多少尽管大多数开发人员仍然使用Java 8 ,但Java 11还是在不久前发布的。 让我们看看其中哪个对OptaPlanner更快。 找出答案的最佳方法当然是运行OptaPlanner基准测试。 本文是我们针对Java 8的类似文章的后续文章 。 基准方法 为了运行基准测试&#xff…

部署项目,所谓“部署”到底是在干什么?

第一步:把项目部署包放在服务器指定目录(webapps)下,让服务器可以找到项目资源;或者通过配置文件让服务器可以找到项目资源。 第二步:把项目的访问路径、资源映射等数据加载进内存中,这样客户端…

linux查看文件使用情况,linux查看文件句柄使用情况

Linux 3.2.0-23-generic (linux) 09/08/2014 _x86_64_ (8 CPU)02:01:55 PM dentunusd file-nr inode-nr pty-nr02:02:05 PM 38465 1568 25731 402:02:15 PM 38465 1568 25728 402:02:25 PM 38465 1536 25723 4Average: 38465 1557 25727 4输出项说明:kbmemfree&…

Update resources 和 Update classes and resources 的特殊情况

resources目录的文件删除了,不会更新部署包中的相关文件;但是会更新编译输出目录下的相关文件(在 run 和 debug 模式下) webapp 目录的文件删除了,不会更新部署包中的相关文件(在 run 和 debug 模式下&…

java堆内与堆外数据交互_Java:汇总堆外数据

java堆内与堆外数据交互探索如何以最小的垃圾回收影响和最大的内存利用率创建堆​​外聚合。 使用Java Map,List和Object创建大型聚合通常会产生大量堆内存开销。 这也意味着,一旦聚合超出范围,垃圾收集器将必须清理这些对象。 阅读这篇简短…

linux内核cpu负载计算,CPU 负载 — The Linux Kernel documentation

CPU 负载Linux通过/proc/stat和/proc/uptime导出各种信息,用户空间工具如top(1)使用这些信息计算系统花费在某个特定状态的平均时间。例如:$ iostatLinux 2.6.18.3-exp (linmac) 02/20/2007avg-cpu: %user %nice %system %iowait %steal %idle10.01 0.00…

IntelliJ IDEA 中的Java Web项目的资源文件复制新增如何更新到部署包中?

文章目录resources目录下的文件复制新增webapp目录的文件复制新增IntelliJ IDEA 中的Java Web项目的资源文件如果复制新增,正常的重新部署、重启服务器、update resources,并不会更新到部署包中,必须要特殊处理才行。 resources目录下的文件…

apache.camel_Apache Camel 2.23发布

apache.camel昨天发布了Apache Camel 2.23 ,其中最值得注意的新功能是对Spring Boot 2.1的支持,我们还改进了启动器组件以包括更多的元数据,并对改进的Spring Boot自动配置进行了优化。 此版本主要是一个大的错误修复版本和一些其他小的新增…

在linux上安装mysql5.6,在linux(Centos 7以上版本亲测)上安装mysql5.6

./scripts/mysql_install_db --usermysql --datadir/usr/local/mysql/data/mysql如果执行报错[rootdc1atmpapp12 mysql]# ./scripts/mysql_install_db --usermysql --datadir/usr/local/mysql/data/mysql FATAL ERROR: please install the following Perl modules before execu…

NewServlet ‘***Servlet‘ already exists inthis Web facet.

使用模板创建了一个 Servlet,创建 Servlet 时没有勾选“Create Java EE 6 annotated class”,再把该 Servlet 删除掉,再创建同名的 Servlet,IDEA 就会报错:NewServlet ‘***Servlet’ already exists in this Web face…

payara 创建 集群_Apache Payara:让我们加密

payara 创建 集群前一段时间,我写了一个小教程 ,介绍如何生成“让我们加密SSL”证书并将其安装在Glassfish Java EE平台上。 这个技巧对我来说是一个奇迹,但是每三个月必须手动更新和重新安装证书变得很烦人。 我做了一些研究,并…

腾讯为什么不开发linux软件下载,你认为国产操作系统如何搭建生态?为什么腾讯不给Linux系统适配QQ?...

Linux的软件少主要是,十几二十年前,要在Linux上开发软件,要遵循开源协议,也就意味着你在上面开发个的公开应用都得开源,至少得公开一部分,所以很多商业闭源应用都绕过了Linux。现在随着Linux的分支越来越多…

Download Apache Commons BeanUtils

下载地址:https://commons.apache.org/proper/commons-beanutils/download_beanutils.cgi

stripe pay_J2Pay –实施网关

stripe pay介绍 如果您使用任何网关,您都可以在我们的库中实现该网关并支持开源世界,我们将非常高兴地欢迎贡献者。 您可以在这里找到我们的github存储库 在开始实现网关之前,您应该首先看到其他一些类。 以下是简要定义的类。 HTTP客户端…

linux l文件共享,llinux服务器文件共享的一种简单的方法

如果Centos虚拟机没有安装文件共享功能,那么客户端与服务器文件共享会产生一些困扰;这里有一个小的方法,可以快速实现linux服务器与windows共享;这里以CentOS 6.4 版本为例;通过xshell链接到服务器上;要在l…

BeanUtils的学习

BeanUtils 用于将数据封装成 JavaBean。 什么是 JavaBean 一种标准的 Java 类 要求: 1.类必须被public修饰 2.必须提供空参的构造器 3.成员变量必须使用private修饰 4.提供公共setter和getter方法 功能: JavaBean用于封装数据 主要的方法 popular&a…

java方法可选参数_Java可选参数

java方法可选参数在Java类中设计方法时,某些参数对于其执行而言可能是可选的。 无论是在DTO,胖模型域对象还是简单的无状态服务类中,可选方法参数都是常见的。 从本文中, 您将学习如何在Java中处理可选参数 。 我们将专注于常规方…