内核设备驱动学习启动篇(个人笔记)

原创 2016年05月31日 22:00:12

一、搭建开发环境

1.安装VMware虚拟机,推荐安装比较新的版本,可以安装虚拟机工具(有些老版本有没)。

2.在VMware上安卓Linux系统,推荐Ubuntu12.04 32位,然后安装32位的库,安装完成之后安卓虚拟机工具,便于从Windows里拖拽复制文件。

3.下载Linux内核文件与交叉编译工具链。

4.在"/etc/enviroment"添加交叉编译工具链的路径,使用"arm-linux-gcc -v"命令测试是否添加成功。

5.解压Linux内核,进入Linux内核目录,使用"make menuconfig"配置Linux内核,具体选项“Y”表示选定,“N”表示取消,对于驱动还有“M”,表示把驱动编译成模块,并不编译进内 核。

6.然后保存配置,使用“make zImage”编译出内核镜像。


二、驱动开发

1.编辑软件,在环境下推荐使用eclipse,按教程配置环境,Linux和Windows下都可以使用。

2.把内核当做一个工程导入到编辑软件中,这样做的目的是在开发驱动时候可以方便的查找这提示函数。

3.开发驱动直接新建文件,然后引入相应的头文件按开发步骤进行即可。


三、推荐书籍

1.《嵌入式Linux应用完全开发手册》作者:韦东山

2.《Linux内核源代码情景分析》作者:赵炯

3.《Linux内核精析》作者:郑阿奇


注:第一次写博客,且为个人笔记,疏漏或者错误的地方请见谅!



linux设备驱动学习笔记--内核调试方法之proc

/proc 文件系统是 GNU/Linux 特有的。它是一个虚拟的文件系统,因此在该目录中的所有文件都不会消耗磁盘空间。通过它能够非常简便地了解系统信息,尤其是其中的大部分文件是人类可阅读的(不过还是...

linux学习笔记-读《Linux设备驱动开发详解》~第三章 Linux内核及内核编程

Linux内核源代码目录结构:arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如i386、ARM、PowerPC、MIPS等;block:块设备驱动程序I/O调度;crypto:常用...

linux设备驱动开发详解(基于4.0内核)_读书笔记二

Linux设备驱动中的并发控制 有两种可能的原因会造成程序出错,一种可能性是编译乱序,另一种可能性是执行乱序。 处理器为了解决多核间一个核的内存行为对另一个核可见的问题,引入了一些内存屏蔽的指令。...

linux设备驱动开发详解(基于4.0内核)_读书笔记一

ssize_t xxx_read(struct file *filp, char __user *buf, size_tcount, loff_t *f_ops); filp是文件结构体指针,buf是...

《Linux4.0设备驱动开发详解》笔记--第四章:Linux内核模块

4.1 内核模块程序结构 加载:insmod,modprobe(同时加载模块的依赖模块) 卸载:rmmod 查看已加载的模块及模块间的依赖关系:lsmod,实际上是分析/proc/modules文件 ...

kernel 启动流程之 【设备驱动加载】 学习笔记

先上总流程图,一图胜千言! 点击查看大图 head.S 初始化完成后跳转到 start_kernel 入口: kernel-3.18/init/main.c:505:asmlink...

linux设备驱动编程学习——内核树的配置与构造(稍后补完)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/701lab-logs/234910526.html         在配置好了NFS服务...

Linux内核学习-misc杂项设备驱动

Linux里面的misc杂项设备是主设备号为10的驱动设备,它的注册跟使用比较的简单,所以比较适用于功能简单的设备。它有自己的设备结构体: struct miscdevice  {     int m...

linux设备驱动学习(1)--内核源码树安装

最近开始看LDD3,按书说的,得安装内核源码树。 查看/usr/src/kernels下是否已经安装了内核源码树 如果没有,使用yum 安装 [root@CJS test]# yum i...

面对不断升级的内核,如何学习linux设备驱动

2013-02-28 10:39:06|  分类: 默认分类|举报|字号 订阅 面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多lin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内核设备驱动学习启动篇(个人笔记)
举报原因:
原因补充:

(最多只允许输入30个字)