linux驱动开发相关知识
来源:互联网 发布:画结构式的软件 编辑:程序博客网 时间:2024/06/05 07:01
Linux的二进制包的可执行文件都安装在Linux系统 /usr/bin 下面;如果从源代码安装,可执行文件通常都在 /usr/local/bin 下面,除非配置时指定了安装位置。
驱动开发相关开源码
kernel-devel
kernel-headers
kernel
kernel-header:提供内核的信息,里面是内核的头文件以及Kconfig和Makefile,也是内核对外的一个接口,当需要向内核提供兼容的功能模块时,需要提供内核的信息。
kernel-devel:包含用于内核开发所需的内核头文件以及Makefile,而kernel-souce包含所有内核源代码。这个包安装完毕后会创建类似的路径:/usr/src/kernels/3.10.0-327.x86_64
如果是用编写的模块开发的话,只需引用相应的内核头文件,只有devel包即可,如果你要修改现有的内核源代码并重新编译,那必须是kernel-souce。
Linux RPM包说明
src的rpm安装路径
xxxxxxxxx.rpm:RPM 的格式,已经经过编译且包装完成的 rpm 档案
xxxxx.src.rpm:SRPM的格式,包含未编译的原始码。
以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法:
l 方法一:
1. 执行rpm -iyour-package.src.rpm
2. cd/usr/src/redhat/SPECS
3. rpmbuild -bpyour-package.specs 和软件包同名的specs文件
4. cd/usr/src/redhat/BUILD/your-package/ 和你的软件包同名的目录
5. ./configure 和编译普通的源码软件一样,可以加上参数
6. make
7. makeinstall
l 方法二:
1. 执行rpm -iyou-package.src.rpm
2. cd/usr/src/redhat/SPECS (前两步和方法一相同)
3. rpmbuild -bbyour-package.specs 一个和你的软件包同名的specs文件
在/usr/src/redhat/RPM/i386/(根据具体包的不同,也可能是i686,noarch等等)在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。
执行: rpm -ivh即可安装完成。
或者安装命令:
rpm -rebuild*.src.rpm
cd/usr/src/dist/RPMS
rpm -ivh*.rpm
说明:rpm -rebuild*.src.rpm命令将源代码编译并在/usr/src/dist/RPMS下生成二进制的rpm包,然后再安装该二进制包即可。
NVMe驱动代码
单独编译NVME驱动
在路径:
/usr/src/debug/kernel-3.10.0-327/linux-3.10.0-327. x86_64/drivers/block
中,增加Makefile内容如下:
obj-$(CONFIG_BLK_DEV_NVME) += nvme.o
nvme-objs := nvme-core.o nvme-scsi.o
PWD := $(shell pwd)
default:
make-C /usr/src/kernels/3.10.0-327.x86_64/ M=$(PWD) modules
clean:
rm –rf *.o *.ko
然后直接make 即可生成nvme.ko文件。
关于Makefile可以参考如下:
KERNELVER ?= $(shell uname -r)
KERNROOT = /lib/modules/$(KERNELVER)/build
nvme:
$(MAKE) -C $(KERNROOT) M=`pwd`/drivers/block
clean:
$(MAKE) -C $(KERNROOT) M=`pwd`/drivers/block clean
Nvme驱动代码nvme的代码位于drivers/block目录内,文件不多,主要就两个文件:nvme-core.c和nvme-scsi.c。
系统日志
dmesg
dmesg命令显示linux内核的环形缓冲区信息,可以从中获得诸如系统架构、cpu、挂载的硬件,RAM等多个运行级别的大量的系统信息。
l 输出dmesg命令的前20行日志
dmesg | head -20
l 输出dmesg命令最后20行日志
dmesg | tail -20
l 清空dmesg缓冲区日志
使用如下命令dmesg -c来清空dmesg的日志。该命令会清空dmesg环形缓冲区中的日志。可以查看存储在/var/log/dmesg文件中的日志。连接任何的设备都会产生dmesg日志输出。
RPM包中平台说明
i386:适用于所有的 x86 平台,不论是旧的pentum 或者是新的 pentum-IV 与 K7 系列的 CPU等等,都可以工作。i 指的是 Intel 相容的 CPU 的意思, 386是 CPU 的等级。
i586:是 586 等级的电脑pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU (socket 7 插脚 );
i686:在pentun II以后的 Intel 系列 CPU ,及 K7 以后等级的CPU
noarch:没有任何硬体等级上的限制。一般来说,这种类型的 RPM里面没有 binary file 存在。
参考
Ctags on OSX
http://www.gmarik.info/blog/2010/ctags-on-OSX/
linux里的nvme驱动代码分析(加载初始化)
http://blog.csdn.net/panzhenjie/article/details/51581063
- linux驱动开发相关知识
- linux设备驱动开发详情-linux内核模块相关知识
- windows驱动开发相关知识
- linux驱动相关知识整理
- LINUX驱动IOCTL函数相关知识
- Linux USB驱动相关细节知识
- Linux USB驱动相关细节知识
- Linux USB驱动相关细节知识
- [Linux-wifi]wifi驱动相关知识
- 嵌入式Linux驱动开发的知识图谱
- USB驱动相关知识
- web开发(十)之模型驱动的相关知识
- 嵌入式学习-驱动开发前奏-lesson1-内核模块相关知识
- 【Linux驱动】文件描述符以及相关知识
- linux驱动开发相关头文件说明
- 驱动开发琐碎知识
- usb驱动开发知识
- Linux驱动开发--嵌入式开发相关下载地址
- ubuntu 12 安装bcm 43142无线网卡驱动
- 3709: [PA2014]Bohater
- 素材 会用到的网站
- lucene分词器解析
- [luogu-2679]noip2015day2-T2 子串 题解
- linux驱动开发相关知识
- C++ 高精度算法
- 【jzoj5343】【NOIP2017模拟9.3A组】【健美猫】
- 遍历 Map 对象, 利用反射为 Class 对象的对应的属性赋值.
- NoSQL数据库压测工具
- centos7安装thrift
- Python在数学建模中的简单应用
- 设计模式_Java_工厂方法模式的概述和使用
- 项目——通过自动回复机器人学Mybatis(七)