文章分类 - linux
摘要:用gcc编译出来的可执行程序只有在linux系统下面可以运行。 假设你在Linux系统编译生成了可执行文件,我们本意是要系统打开摄像头,但是如果你在window系统上运行可能就是打开相册。同样的可能这个可执行文件在ARM下面可能是关机。 不同系统的机器码含义是不一样的。所以你在linux系统下面写的
阅读全文
摘要:1. 写好内核驱动程序.c 2. Makefile 必须是Makefile `` makefile ifneq ($(KERNELRELEASE),) obj m := charDev.o else PWD := $(shell pwd) KDIR := /lib/modules/ /build a
阅读全文
摘要:原文链接:https://blog.csdn.net/qq_38265137/article/details/83146421 什么是NFS? NFS就是Network File System的缩写, 它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 NFS服务器可以让
阅读全文
摘要:inode: 在linux中inode结构用于表示文件,file结构表示打开的文件的描述,因为 对于单个文件而言可能会有许多个表示打开的文件的描述符,因而就可能会的对应有多个file结构,但是都指向单个inode结构。 该结构里面包含了很多信息,但是,驱动开发者只关心里面两个重要的域: 三者之间关系
阅读全文
摘要:https://www.cnblogs.com/hanxiaoyu/p/5677677.html struct file结构体定义在include/linux/fs.h中定义。 文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 struct file。 它由内核在打开文件
阅读全文
摘要:编写Linux驱动,看见返回值为 “return EINVAL” EINVAL 是定义在 errno.h 中的一个宏定义,它定义了一个整形变量(此处值为22),是错误代码的一个取值。EINVAL表示 无效的参数,即为 invalid argument ,包括参数值、类型或数目无效等。 可见,EINV
阅读全文
摘要:https://blog.csdn.net/liuhangtiant/article/details/85227125 copy_from_user和copy_to_user这两个函数分别是将用户空间的数据拷贝到内核空间以及将内核空间中的数据拷贝到用户空间。这两个函数一般用于系统调用中,前者将用户空
阅读全文
摘要:参考: http://www.freesion.com/article/708880748/ 有两种方式解决: 在当前linux 系统的kernel源码下修改config文件,CONFIG_MODULE_SIG=n 在驱动的Makefile文件里面添加这行CONFIG_MODULE_SIG=n (这
阅读全文
摘要:参考: https://blog.csdn.net/cjluxuwei/article/details/37878021 在编译内核模块时, 如有Makefile文件如下: ifneq ($(KERNELRELEASE),) param objs := file1.o file2.o obj m :
阅读全文
摘要:参考: https://blog.csdn.net/wsclinux/article/details/50907567 mknod 创建块设备或者字符设备文件。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、语法 mknod [选
阅读全文
摘要:查找MKDEV时,发现2个MKDEV。 观察第一个版本,这个宏定义是在linux内核外定义的( ifndef __KERNEL__),所以开发驱动时看的是版本2. ma是主设备号,mi是次设备号 主设备号由dev_t的高12位表示 次设备号是dev_t的低20位 MKDEV应该是把主设备号和次设备号
阅读全文
摘要:参考: https://www.cnblogs.com/sky heaven/p/7390370.html 较常用的 flags(分配内存的方法): GFP_ATOMIC —— 分配内存的过程是一个原子过程,分配内存的过程不会被(高优先级进程或中断)打断; GFP_KERNEL —— 正常分配内存;
阅读全文
摘要:参考:https://blog.csdn.net/wx601056818/article/details/80113983 KERN_EMERG是为了控制内核log输出级别,必须添加。 使用printk时,Linux内核根据日志级别,可能把消息打印到当前控制台上,这个控制台是一个字符设备。这些消息从
阅读全文
摘要:https://www.cnblogs.com/wangzahngjun/p/4992045.html
阅读全文
摘要:通过重新编译内核来添加系统调用 注意新内核与系统内核版本,需要的辅助工具:sudo apt install bison flex pkg config build essential libncurses5 dev libssl dev libelf dev 内核解压在/usr/src.目录下 添加
阅读全文
摘要:const S_IRWXU = S_IRUSR or S_IWUSR or S_IXUSR
阅读全文
摘要:文件开关 第一个参数表明要打开或创建文件的名称(包括路径部分)。 第二个参数文件的打开方式,其取值与标准库中的open相应参数类似,可以取O_CREAT,O_RDWR,O_RDONLY等。 第三个参数创建文件时使用,设置创建文件的读写权限,其它情况可以设为0 第一个参数是filp_open返回的fi
阅读全文
摘要:http://code.woboq.org/linux/linux/ 在线浏览kernel 源码。强烈推荐. https://blog.csdn.net/tiantao2012/article/details/53510304 https://blog.csdn.net/heli200482128/
阅读全文
摘要:`$(MAKE) C $(KERNELDIR) M=$(PWD) modules` C 选项的作用是指将当前工作目录转移到你所指定的位置。(一般是转到内核目录下,执行里面的makefile) “M=”选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,需要在make modules 命令中
阅读全文

浙公网安备 33010602011771号