作为一名嵌入式Linux新手,在学习的过程中会遇到很多问题。写了一个驱动程序怎么编译?怎么加载进内核?
2019-01-17 13:46:27
7365 
鸿蒙是一个面向场景的智能操作系统。很多人刚开始把它与Linux相比,这是不对的,首先Linux只是一个内核,在Linux之上我们开发者还需要做很多的操作,比如驱动开发和应用开发才能让用户能够正常
2021-04-19 16:48:32
26495 
裸机编程中使用中断比较麻烦,需要配置寄存器、使能IRQ等等。而在Linux驱动编程中,内核提供了完善的终端框架,只需要申请中断,然后注册中断处理函数即可,使用非常方便。
2022-07-29 08:57:24
1157 在Linux驱动开发中,应用程序通过循环读取或者中断的方式都会使得CPU的占用率很高。本文介绍五种IO模型,可以用来优化文件读写方式,降低CPU的使用率。
2022-07-29 09:03:48
1210 写过Linux驱动的人都知道`module_init`宏,因为它声明了一个驱动的入口函数。
2023-06-01 15:12:21
1073 C语言宏是一种预处理指令,用于在程序编译之前进行文本替换。它可以把一个标识符替换为一个特定的字符串、表达式或代码块。使用宏可以减少代码的重复性、提高代码的可读性和可维护性,并且可以使代码更加灵活和可定制化。
2023-06-26 15:55:48
798 在Linux内核开发中,Kmemleak是一种用于检测内核中内存泄漏的工具。
2023-07-04 11:04:03
1213 Linux操作系统是当今世界上最为广泛使用的开源操作系统之一,内核则是一个操作系统的核心和灵魂所在。对于一名Linux驱动开发者来说,了解Linux内核的运行机制和Linux内核提供的一些关键功能(如虚拟内存管理、进程管理、文件系统、网络协议栈等)都是我们日常工作和学习的重点。
2023-07-06 11:46:41
2259 
Linux内核中经常可见container_of的身影,它在实际驱动的编写中也是广泛应用。
2023-07-14 15:19:42
790 
Linux内核可谓是集C语言大成者,从中我们可以学到非常多的技巧,本文来学习一下宏技巧,文章有点长,但耐心看完后C语言level直接飙升。
2023-07-21 14:56:28
939 
在Linux内核2.6.13-rc3以前,驱动和设备之间的绑定和解绑只能通过insmod(modprobe)和rmmod来实现,但是这种实现方法有一个弊端,就是一旦绑定或者解绑定都是针对驱动与其
2023-11-17 17:11:00
2948 
在Linux内核中,RCU最常见的用途是替换读写锁。在20世纪90年代初期,Paul在实现通用RCU之前,实现了一种轻量级的读写锁。后来,为这个轻量级读写锁原型所设想的每个用途,最终都使用RCU来实现了。
2023-12-27 09:56:44
3297 
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应
2018-05-08 10:33:19
3776 
。下面以在linux驱动开发中常用的跟踪linux内核源码的例子来说明ctags的用法。首先要保证ubuntu可以上网1. 安装ctags:sudo apt-get install ctags2. 进入内核
2019-07-05 08:13:15
收集一些感觉比较好的博客链接,方便以后再看Linux 内核中的 C 语言语法扩展Linux 内核驱动中的指定初始化宏构造利器:语句表达式Linux 内核第一宏:container_of零长
2021-12-15 06:04:51
Uart驱动却把串口设备名写死了,如本例中linux2.6.37串口设备名为ttyO0,而不是常用的ttyS0。有了控制台内核在启动过程中就可以通过串口输出信息以便开发者或用户了解系统的启动进程。创建
2022-10-26 17:20:06
内核模块是什么?
内核模块是动态加载到内核中的代码,可以在不重启系统的情况下扩展功能,比如设备驱动或者文件系统支持。这样用户不需要把所有功能都编译进内核,节省了资源,提高了灵活性。
模块的文件格式
2025-11-25 06:59:27
区)Linux系统内核按体积和功能的不同,可以分为两种:微内核与单内核。 微内核,体积小,包含的功能也少,只负责进行进程调度、进程通信、底层中断等工作,而把传统操作系统内核的其他功能 模块,如设备驱动
2017-08-22 09:22:17
kernel/fork.c,内核例程处理程序在include/linux/interrupt.h,task_struct数据结构在inlucde/linux/sched.h中。PCI:PCI伪驱动
2019-07-11 16:59:35
linux系统中comm命令用法详解 linux系统下的comm命令是一个非常实用的文件对比命令。 comm命令功能:选择或拒绝两个已排序的文件的公共的行。 comm命令语法:comm [-123
2019-07-04 08:22:25
linux内核驱动增加STM32虚拟串口设备驱动的方法
2021-12-07 07:13:34
我在用linux内核函数gpio_to_irq()的时候不知道它里面的参数是什么,经过追踪,发现是把io引脚编号来的,我不知道这个编号和io引脚是怎么样的联系,请大神指教
2016-06-02 22:58:12
开门见山,Linux下的如中IO模型:阻塞IO模型,非阻塞IO模型,IO复用模型,信号驱动IO模型,异步IO模型,见下图 接下来一一讲解这5种模型 阻塞型IO:最简单的一种IO模型,简单理解
2019-10-09 16:12:11
怎样修改kconfig第一步:在对应的设备驱动目录下将kconfig打开,然后修改:/999/linux-2.6.32.2/drivers/char中的kconfig打开: 修改后然后保存。在
2017-08-30 16:38:02
迅为I.MX8MM开发板编译驱动到内核,在平时的驱动开发中,经常需要在内核中配置某种功能,为了方便大家开发和学习,本小节讲解如何在内核中添加驱动。具体的讲解原理讲解请参考本手册的驱动教程。首先
2022-08-29 17:46:51
RT-Thread 中的宏 RT_OBJECT_HOOK_CALL作用调用内核对象绑定的钩子函数原型调用示例解析乍一看这个语句好像有问题,func 是函数指针,argv 是函数参数,为啥函数调用
2022-04-24 11:42:24
2.4.2 进程运行状态2.4.3 进程初始化2.4.4 创建新进程2.4.5 进程调度2.4.6 终止进程2.5 Linrx内核对内存的使用法2.6 Linrx系统中堆栈的使用法2.6.1 初始化阶段
2015-09-11 22:25:28
使用_IOmodule_leds.cMakefileapp.c结果使用_IOW使用_IOR实验结果完整代码module_leds.capp.c我们从平台总线模型,然后到pinctrl和gpio子系统
2021-12-15 06:02:31
适配可负载驱动程序调试多分支版本加载内核伪装内核版本实现原理内核版本的标签打印信息 start_kernl(中的linux_kernl)字符串。这里的横幅比是 ubuntu 系统里的 ssh 基本横幅
2022-06-30 15:43:22
关于设备驱动和设备管理,四种内核成分设备类型:在所有unix系统中为了统一普通设备的操作所采用的分类模块:Linux内核中用于按需加载和卸载目标代码的机制内核对象:内核数据结构中支持面向对象的简单
2022-11-04 14:59:00
在Linux内核中添加wifi驱动Linux WIFI驱动实验rtl8723 Wifi联网测试
2021-02-05 07:59:05
测试或者因为一些其他原因未能进入内核的新增驱动程序和新增文件系统。Linux staging tree的URL是"git://git.kernel.org/pub/scm/linux
2015-09-08 16:53:54
与特定的设备或驱动程序关联起来。幻数可以通过预定义的宏定义或自定义的方式来定义,以确保唯一性。在定义幻数时,通常使用_IO、_IOW、_IOR或_IOWR宏来设置幻数的方向和大小。(二)命令序号
2025-03-27 09:12:55
=blog&id=24588flyriz 2012-07-06在ARM驱动程序的学习过程中,经常碰到对IO操作的函数:s3c2410_gpio_cfgpin(),结合linux内核源代码(版本
2012-10-17 16:49:52
功能为目的,逐步完善自己的驱动。 掌握linux内核中设备驱动的编写接口 如:字符设备的cdev、块设备的gendisk、网络设备的net_device,以及基于这些基本接口的framebuffer
2018-09-29 11:04:26
的方式来定义,以确保唯一性。
在定义幻数时,通常使用_IO、_IOW、_IOR或_IOWR宏来设置幻数的方向和大小。
(二)命令序号(Command number)
命令序号是一个8位的整数,用于区分
2025-03-25 13:28:11
本章学习目标掌握LINUX内核版本的含义理解并掌握进程的概念掌握管道的概念及实现了解内核的数据结构了解LINUX内核的算法掌握LINUX内核升级的方法
2009-04-10 16:59:19
0 驱动程序的不稳定是造成操作系统内核崩溃的主要原因,该文采用类型安全的Java语言开发Linux设备驱动程序以提高系统的稳定性,并分析驱动模型的结构、内核态Java虚拟机(JVM)的设
2009-04-16 08:40:55
24 LINUX内核驱动第三版(中文)
2010-03-11 09:18:02
0 Android内核是基于Linux 2.6内核的,它是一个增强内核版本,除了修改部分Bug外,它提供了用于支持Android平台的设备驱动,这里介绍了Android内核和驱动程序开发的基础知识。 第一部分 Lin
2011-09-05 14:24:13
335 Linux因其完全开放的特性和稳定优良的性能深受欢迎,当推出了内核输入子系统后,更方便了嵌入式领域的驱动开放。介绍了Linux的设备驱动基础,详细阐述了基于Linux内核输入子系统下
2012-09-12 16:38:52
23 电子发烧友网站提供《linux内核驱动第三版.txt》资料免费下载
2013-04-04 23:40:54
0 linux 内核驱动部分详解
2017-04-27 10:43:38
20 是操作系统最基本的功能,并且提供统一的操作方式。设备驱动程序是内核的一部分,硬件驱动程序是操作系统最基本的组成部分,在Linux内核源程序中也占有60%以上。因此,熟悉驱动的编写是很重要的。 在第2章中已经提到过,Linux内核中采用可加载的模块化设计(
2017-10-18 16:44:16
0 《Linux设备驱动开发详解》第11章、内存与IO访问
2017-10-27 11:27:15
6 《Linux设备驱动开发详解》第9章、Linux设备驱动中的异步通知与异步IO
2017-10-27 11:33:15
0 《Linux设备驱动开发详解》第8章、Linux设备驱动中的阻塞与非阻塞IO
2017-10-27 11:35:12
9 《Linux设备驱动开发详解》第4章、Linux内核模块
2017-10-27 14:15:51
0 Linux内核输入子系统的驱动研究
2017-10-31 14:41:44
14 随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后
2017-11-01 15:45:54
4 当Linux内核组件要读写一些数据时,并不是请求一发出,内核便立即执行该请求,而是将其推迟执行。当传输一个新数据块时,内核需要检查它能否通过。Linux IO调度程序是介于通用块层和块设备驱动
2018-05-27 10:41:03
5867 
件管理机制完善等优良特性而正被作为研究热点,越来越多的研究人员采用Linux平台来开发自己的产品。Linux设备驱动程序在Linux内核源代码中占有很大比例,从2.0、2.2到 2.4版本的内核,源代码的长度日益增加,其实主要是设备驱动程序在增加。
2018-08-17 15:12:54
1496 Android虽然建立在Linux内核之上,但是他对内核进行了一些扩展,增加了一些驱动。比如Binder,loger等等驱动。可以拿Android内核代码和其Baseline版本进行对比。可以看到Android对Linux内核的所有扩展。
2018-09-09 09:10:00
4865 前言 实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用。本文就来细数那些“!”的神奇用法。
2019-01-29 09:08:00
2932 linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们
2019-05-06 16:13:00
970 在内核调试技术之中,最简单的就是printk的使用了,它的用法和C语言应用程序中的printf使用类似,在应用程序中依靠的是stdio.h中的库,而在linux内核中没有这个库,所以在linux内核中,使用这个printk就要对内核的实现有一定的了解。
2019-05-10 11:18:47
1879 epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够
2019-05-16 16:07:08
861 
的"某个文件",完成加载驱动模块等任务,第二阶段才会执行真正的根文件系统中的 /sbin/init 进程。这里提到的"某个文件",Linux2.6 内核会同以前版本内核的不同,所以这里暂时使用了"某个
2019-04-02 14:39:19
817 嵌入式Linux与物联网软件开发——C语言内核深度解析 C语言是嵌入式Linux领域的主要开发语言。对于学习嵌入式、单片机、Linux驱动开发等技术来说,C语言是必须要过的一关。C语言学习的特点是入门容易、深入理解难、精通更是难上加难。
2019-05-15 18:10:00
9 设备驱动程序是linux内核的一部分,是操作系统内核和机器硬件之间的接口,它由一组函数和一些私有数据组成,是连接应用程序与具体硬件的桥梁。
2019-11-06 11:33:54
1869 
可变参数的宏__VA_ARGS__的用法
2020-03-20 09:26:49
11128 
由于Linux驱动编程的本质属于Linux内核编程,因此我们非常有必要熟悉Linux内核以及Linux内核的特点。 这篇文章将会帮助读者打下Linux驱动编程的基础知识。
2020-03-01 08:27:00
4376 Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。
2020-06-20 09:59:57
3267 Linux内核是一个操作系统(OS)内核,本质上定义为类Unix。它用于不同的操作系统,主要是以不同的Linux发行版的形式。Linux内核是第一个真正完整且突出的免费和开源软件示例。Linux 内核是第一个真正完整且突出的免费和开源软件示例,促使其广泛采用并得到了数千名开发人员的贡献。
2020-09-16 15:49:50
3072 本文主要阐述了linux内核参数设置及linux内核的功能。
2020-09-17 14:40:49
1635 
来源 :头条号@Linux学习教程,冰凌块儿 01 前言 本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是Linux内核,能看懂Linux
2020-10-19 17:46:08
2642 
01 前言 本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是Linux内核,能看懂Linux内核。 拥有超过1300万行的代码,Linux
2020-10-21 12:02:53
4905 
内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux 作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧
2020-11-04 18:04:10
8 Linux内核提供了完整的USB驱动程序框架。USB总线采用树形结构,在一条总线上只能有唯一的主机设备。 Linux内核从主机和设备两个角度观察USB总线结构。本节介绍 Linux内核USB驱动
2020-11-06 17:59:17
20 一、Linux 的 5 种 IO 模型 二、如何使用信号驱动式 I/O? 三、内核何时会发送 “IO 就绪” 信号? 四、最简单的示例 五、扩展知识 一、Linux 的 5 种 IO 模型 阻塞式
2021-03-12 14:47:30
2953 
混合内核实质上也是微内核,而外内核是一种比较极端的设计方法,目前还处于研究阶段,所以我们就着重讨论宏内核与微内核两种内核。
2021-03-17 16:05:48
11 本文力求与完整介绍完内核线程的整个生命周期,如内核线程的创建、调度等等,当然本文还是主要从内存管理和进程调度两个维度来解析,且不会涉及到具体的内核线程如kswapd的实现,最后我们会以一个简单的内核模块来说明如何在驱动代码中来创建使用内核线程。
2021-04-28 16:26:05
2586 
嵌入式Linux内核驱动开发学习路线图(嵌入式开发软件工程师)-嵌入式Linux内核驱动开发学习路线图
2021-07-30 13:51:06
12 1.电源管理的状态Android的Linux内核为系统提供了4种电源状态,内核的源代码为其中的3种定义了名字和对应的宏定义,名字定义在kernel/power/suspend.c中:const
2022-01-07 11:14:28
6 IO的特殊用法是什么鬼?简单说就是因为STC单片机的IO有好多都带有复用功能,在单片机上电复位后,这些复用功能引脚的默认状态有一些特殊的规定或处理办法,若你不知晓,很有可能出现灾难性的问题,下面我们就来具体说说这些特殊的IO的用法。
2022-02-10 11:19:41
3 链表宏在linux内核、鸿蒙内核、rtos和一些开源代码中用的非常多。链表宏是双向链表的经典实现方式,总代码不超过50行,相当精炼。在一些开源框架中,它的数据结构,就是以链表宏为基础进行搭建(如shttpd,一个开源的轻量级、嵌入式服务器框架)。本篇文章将对llist.h文件中的链表宏进行逐个讲解。
2022-05-23 12:06:30
2557 V4L2(Video for Linux 2):Linux内核中关于视频设备驱动的框架,对上向应用层提供统一的接口,对下支持各类复杂硬件的灵活扩展.
2022-05-30 16:18:29
7741 链表宏在linux内核、鸿蒙内核、rtos和一些开源代码中用的非常多。链表宏是双向链表的经典实现方式,总代码不超过50行,相当精炼。
2022-07-01 11:58:36
1854 【Linux内核】从小小的宏定义窥探Linux内核的精妙设计
2022-08-31 13:30:06
2801 利用Linux开发板为TLV320ADC5120开发Linux内核驱动的方法
2022-10-28 11:59:56
0 在linux内核启动过程中,会向终端打印出很多的日志信息,从这些信息中可以得到许多内核的行为。
2023-01-13 09:20:10
1984 如果Windows已经安装了所有可用的驱动程序,而您只需要打开所需的驱动程序怎么办?这本质上就是内核模块为Linux所做的。内核模块,也称为可加载内核模块(LKM),对于保持内核在不消耗所有可用内存的情况下与所有硬件一起工作是必不可少的。
2023-06-01 09:59:48
1798 
今天在看平台设备实现的时候,看到to_xxx开头的“函数”。包括在内核中也有很多此类的“函数”,其实他们都是container_of的宏。因为内核是链表和结构体的世界,因此内核中有大量需求要 根据结构体成员获取结构体地址 ,或者根据结构体类型和结构体成员类型获取成员在结构体的偏移。
2023-06-23 14:26:00
799 
为什么Linux内核代码60%都是驱动? 如果每支持新的设备就加入驱动,内核会不会变得越来越臃肿?
2023-07-11 11:48:15
1756 
linux内核设备的注册由device_register()函数完成,这个函数是linux设备驱动模型的核心函数
2023-07-12 08:52:15
1639 
向linux内核注册驱动由driver_register()完成。它将驱动程序的信息添加到内核的驱动程序列表中,使得内核能够在需要时与该驱动程序进行交互。
2023-07-14 09:17:02
4353 
在安装好的Linux系统中,内核的源代码位于/ust/src/linux.如果是从GNU网站下载的Linux内核的tar文件,则展开以后在一个叫linux的子目录中。以后本书中谈到源文件的路径时,就总是从linux这个节点开始。
2023-09-06 17:01:23
4 我将结合具体的Linux内核驱动框架代码来展示Linux内核如何使用结构体和函数指针。
2023-09-06 14:17:55
1750 
宏,它可以让我们同时监听多个异步事件,一旦其中一个事件触发,就可以立即执行相应的代码。在本教程中,我们将详细介绍 select!宏的进阶用法,并提供多个示例来帮助您更好地理解和掌握这个宏的使用方法。 进阶用法 除了基础用法之外,select!宏还有一些进阶用法,可以帮助我们
2023-09-19 15:35:59
1525 reset驱动实例 类似于clock驱动,reset驱动也是编进内核的,在Linux启动时,完成reset驱动的加载。 设备树 reset : reset-controller
2023-09-27 14:21:51
1648 , 是开始处理IO, 这个时候还是存在阻塞的,将数据从内核态拷贝进入到用户态的过程至少是阻塞住的 (应用程序将数据从内核态拷贝到用户态的过程是阻塞等待的, 和异步IO的区别) (此处是区分信号驱动IO和异步IO的关键所在) 信号驱动IO, 我们提前在信号集合中设置好IO信号等待, 注册好对应的
2023-11-08 15:32:41
1915 
Linux内核5.1支持了新的异步IO框架iouring,由Block IO大神也即Fio作者Jens Axboe开发,意在提供一套公用的网络和磁盘异步IO,不过io_uring目前在磁盘方面要比
2023-11-08 15:39:18
1558 
盟通技术干货构建实时Linux内核简介盟通技术干货Motrotech如果需要在Linux中实现实时计算性能,进而有效地将Linux转变为RTOS,那么大多数发行版都可以打上名为PREEMPT_RT
2024-04-12 08:36:37
4691 
Linux内核中是如何分配出页面的,如果我们站在CPU的角度去看这个问题,CPU能分配出来的页面是以物理页面为单位的。也就是我们计算机中常讲的分页机制。本文就看下Linux内核是如何管理,释放和分配这些物理页面的。
2024-08-07 15:51:11
1021 
在Linux系统中,驱动程序是内核与硬件设备之间的桥梁。它们允许内核与硬件设备进行通信,从而实现对硬件设备的控制和管理。 驱动程序的编写 驱动程序的编写是Linux驱动开发的基础。在编写驱动程序之前
2024-08-30 15:02:19
1661 在linux内核中,为HID触摸面板实现了一个通用的驱动程序,位于/drivers/hid/hid-multitouch.c文件中。hid触摸驱动是以struct hid_driver实现,首先定义一个描述hid触摸驱动的结构mt_driver。
2024-10-29 10:55:14
3510 
前言:做Linux驱动开发或内核调试的朋友,一定对printk不陌生,但你真的会用它吗?为什么同样是调试RK3588内核,别人能精准捕捉关键错误,你却被海量日志淹没?今天就带大家吃透printk
2025-12-19 08:32:48
654 
评论