驱动开发
文章平均质量分 73
lanhuazui10
这个作者很懒,什么都没留下…
展开
-
linux 内核 – ioctl 函数详解
在新版内核中, 与 取代了。在实际应用中,ioctl 最常见的 errorno 值为 ENOTTY(error not a typewriter),顾名思义,即第一个参数 fd 指向的不是一个字符设备,不支持 ioctl 操作,这时候应该检查前面的 open 函数是否出错或者设备路径是否正确。ioctl 是设备驱动程序中设备控制接口函数,一个字符设备驱动通常会实现设备打开、关闭、读、写等功能,在一些需要细分的情境下,如果需要扩展新的功能,通常以增设 ioctl() 命令的方式实现。转载 2023-10-09 19:43:47 · 1553 阅读 · 0 评论 -
信号基础知识
信号(signal)是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程序活终端发送的命令(即信号)。应用程序收到信号后,有三种处理方式:忽略,默认,或捕捉。进程收到一个信号后,会检查对该信号的处理机制。如果是SIG_IGN,就忽略该信号;如果是SIG_DFT,则会采用系统默认的处理动作,通常是终止进程或忽略该信号;如果给该信号指定了一个处理函数(捕捉),则会中断当前进程正在执行的任务,转而去执行该信号的处理函数,返回后再继续执行被中断的任务。转载 2023-10-07 20:11:06 · 614 阅读 · 0 评论 -
make -C M= modules编译流程解析
C $(KERNEL_DIR) 代表切换工作目录,因为内核源码顶层的Makefile文件定义了伪目标 modules,所以要先将工作目录切换到内核源码顶层 Makefile 所在位置。这个可以让makefile 回到自己所指定的目录下查找模块源码,将其编译,生成 ko 文件。obj-m 表示把文件 chrdevbase.o 作为"模块"编译,不会编译进内核,但会生成一个独立的 ko 文件。下面是最简易的单文件单模块编译,假设我们要将源文件 chrdevbase.c 编译成 ko 文件。转载 2023-10-05 21:27:06 · 237 阅读 · 0 评论 -
busybox简介
BusyBox 包含了许多常见的 Unix 工具和命令,例如文件操作命令(如 ls、cp、mv)、文本处理工具(如 grep、sed、awk)、系统管理工具(如 ps、top、ifconfig)、网络工具(如 telnet、ftp、ping)等等。它的可执行文件相对较小,占用的内存和存储空间较少,适合于嵌入式设备、虚拟机、容器和其他资源有限的环境。BusyBox 是一个单一可执行文件的软件集合,旨在提供一个轻量级的 Unix 工具箱,包含了许多常用的命令和实用程序。原创 2023-09-23 21:34:33 · 519 阅读 · 0 评论 -
Flash、RAM、ROM的区别
闪存,它属于内存器件的一种,是一种不挥发性( Non-Volatile )内存,结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。内存是用来存放当前正在使用的(即执行中)的数据和程序,我们平常所提到的计算机的内存指的是动态内存(即 DRAM ),动态内存中所谓的"动态"指的是当我们将数据写入 DRAM 后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。转载 2023-09-09 14:47:23 · 330 阅读 · 0 评论