内核驱动学习(一)
来源:互联网 发布:c语言自学要多久 编辑:程序博客网 时间:2024/06/08 04:37
一、内核简介
1、linux系统分为用户空间与内核空间,用户空间包括应用程序和C库,内核空间包括系统调用接口(sci)、狭义内核、体系结构相关内核代码( Architecture-Dependent Kernel Code)
2、划分为用户空间和内核空间的原因是:CPU有不同的工作模式,linux利用这个特性,使操作系统本身得到保护;;应用程序运行在用户模式。
3、通过系统调用和硬件中断可以完成从用户空间到内核空间的转换
3、内核的构成:系统调用接口(SCI)、进程管理(PM)、内存管理(MM)、虚拟文件系统(VFS)、网络协议栈(Network Stark)、设备驱动(DD)、体系结构相关代码(Arch)
二、内核源代码结构
1、目录结构
arch 内核所支持的CPU体系在该目录下都有对应的子目录
documentation 内核文档 :主要是阅读,功能介绍等
drivers 设备驱动程序
include 头文件;与平台无关的头文件放在include/linux子目录下,与平台相关的代码则放在相应的子目录
fs 文件系统的实现代码
net 网络协议的实现代码
三、linux内核的配置与编译
1、安装到开发板的三个文件bootloader、内核映像文件(2M左右)、文件系统的映像
2、内核映像文件的产生:配置、编译、安装、清理
3、配置: make menuconfig(菜单)
常用配置菜单项:处理器类型;网络协议支持;设备驱动;文件系统;
4、配置结果文件放在内核文件下的隐藏文件.config文件。。。。内核配置结果的参考文件可以去arch/arm/configs目录下获取
5、内核的编译 :分为编译内核;编译内核模块;打包,制作ramdisk
6、编译内核:make bzImage(注意大小写),编译好的内核位于arch/<CPU>/boot/目录下
7、①编译内核模块: make modules ②把散落的内核模块集中移动到/lib/modules: make modules_install
8、打包,制作init ramdisk: mkinitrd 打包的名字-版本 打包的目录
9、安装内核:把编译好的内核与ramdisk复制到/boot/目录下面
10、清理:配置中产生/config文件 编译中产生了.o中间文件 :make clean //make distclean
四、内核模块的开发
1、内核模块特点:不编译进bzImage 内核运行期间动态安装和卸载
- 内核驱动学习(一)
- Linux内核学习-字符设备驱动学习(一)
- Linux内核学习-字符设备驱动学习(一)
- Linux内核驱动学习(一)----内核简介 | 配置 | 编译| 安装(PC平台下)
- Linux内核驱动学习(一)----内核简介 | 配置 | 编译| 安装(PC平台下)
- linux内核与驱动学习笔记(一)---内核的划分
- 内核驱动学习(二)
- 内核驱动学习(三)
- Linux内核驱动(一)U-Boot
- Windows内核学习笔记(一)--浅谈驱动对象、设备对象与请求
- linux设备驱动学习(一):内核的相关基础概念
- Linux内核与驱动开发学习总结:DMA与中断(一)
- linux 设备驱动开发学习笔记(一):最简单的内核模块
- 设备驱动学习之字符设备驱动内核代码分析(一)——设备号申请接口
- 安装内核源代码(驱动学习)
- Linux内核驱动模块(转载学习)
- linux驱动内核学习
- Linux内核驱动学习
- DC poj 1064 Cable master
- “斐波那契查找”真的比“二分查找”快么?
- pat_1009
- 堆栈详解
- 1.基本语言
- 内核驱动学习(一)
- 《Accelerate C++》读书笔记(三)
- Spring 注解学习
- 你利用好网络这个工具了吗?
- P51第八题
- \r与\n的区别
- java.lang.ArrayIndexOutOfBoundsException异常分析及解决
- Java之美[从菜鸟到高手演变]之设计模式四
- HDU1506_DP