Linux 驱动程序--- 入门 --- 将hello.c 编译进内核
来源:互联网 发布:qq ubuntu版下载 编辑:程序博客网 时间:2024/04/28 09:16
Linux驱动学习
(1) 知识结构:
1,Linux驱动设计规范 50%.
2,内核相关知识 25%.
3,硬件相关知识 25%.
(2) 学习方法:
理论 ---> 实验 ---> 疑问 ---> 理论 ---> 实验 .
(3) 驱动程序定义:
什么是驱动程序: 使硬件工作的软件.
(4) 驱动分类:
1,字符设备驱动.
2,网络接口驱动.
3,块设备驱动.
字符设备:
字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,
这样的驱动通常实现 open ,close ,read , write 系统调用.
块设备:
在大部分的Unix 系统,块设备不能按字节处理数据,只能一次传送一个或
多个长度是512字节 (或一个更大的2次幂的数) 的整块数据.
而Linux 则允许块设备传送任意数目的字节.
网络接口 :
任何网络事务都通过一个接口来进行,一个接口通常是一个硬件设备(eth0),
但是它也可以是一个纯粹的软件设备,比如回环接口 lo ,
一个网络接口负责发送和接收数据报文.
(5) 块和字符设备区别 :
仅仅是驱动的与内核的接口不同 .
(6) 驱动程序的安装:
1,模块方式.
2,直接编译进内核.
直接编译进内核 --- hello.c :
1,kconfig 文件.
2,Makefile 文件.
举例:将hello.c 编译进内核.
1,首先将 hello.c 代码拷贝到内核代码中.
由于是字符设备,所以拷贝到 Linux-2.6.29/drivers/char/ 目录下.
2,修改 Kconfig 文件:在 Linux-2.6.29/drivers/char/ 目录下 .
该文件的作用:产生 menuconfig 菜单内显示的内容 .
具体操作:增加内容:
config HELLO_DRIVER
bool " my hello driver "
{ 查看上步操作效果:保存退出到内核代码根目录下 执行 make menuconfig
在Device Drivers ---> Character devices ---> [ _ ] my hello driver(NEW)
将 [ _ ] my hello driver(NEW) 选中,保存退出配置,在内核代码根目录下 vi .config
查看配置完成的文件, 我们可以看到 CONFIG_HELLO_DRIVER = y }
3,修改 Makefile 文件. 在 Linux-2.6.29/drivers/char/ 目录下.
具体操作:增加内容:obj-$(CONFIG_HELLO_DRIVER) += hello.o
{ 所以,我们通过 Kconfig 文件直观显示并且选择我们需要编译进入内核的,
会在配置文件 .config 文件里有记录,make 时,Makefile根据配置文
件 .config 来编译内核. }
(7) Linux 用户如何使用驱动程序:
(8) 设备(字符,块)文件 位置 及 用途:
在 /dev 目录下 ls -al .
{ C 开头的是 字符设备文件, b 开头的是 块设备文件 .}
Linux 用户程序通过 设备文件(又名:设备节点) 来使用 驱动程序 操作 字符和块 设备文件.
- Linux 驱动程序--- 入门 --- 将hello.c 编译进内核
- 将hello程序作为驱动程序编译进系统内核
- 详解将驱动程序编译进linux内核
- hello.c内核模块编译 -- linux内核
- 如何将驱动程序静态编译进内核
- Linux 内核模块编译(hello.c)
- Linux 驱动程序入门(hello world)
- Linux驱动程序如何编译进内核
- Linux驱动程序如何编译进内核
- 直接编译hello模块进linux内核
- 驱动程序编译进内核
- Linux内核---51.驱动程序的hello world
- linux驱动入门-hello设备驱动程序编写及内核的更新(网卡的添加)
- hello world" linux驱动程序的编译与
- Linux驱动程序入门—Hello World
- Linux驱动程序入门—Hello World
- Linux驱动程序入门—Hello World
- Linux驱动程序入门—Hello World
- 【Android病毒分析报告】 - CatchSpam
- Bayes' Rule-贝叶斯定理
- JS Json 定义与操作
- SVN无法提交-RA layer request failed
- "ld: library not found for -lz.1.2.3"的问题解决
- Linux 驱动程序--- 入门 --- 将hello.c 编译进内核
- $_SERVER 笔记
- JS操作JSON总结
- 【Android病毒分析报告】 - Extension
- iOS cocos2d实现slider(滑块)控件效果源码
- soj - 1815 - 计算两点间的距离
- Spring中的Resource接口
- nginx+uwsgi来部署Django
- js脚本实现登录界面始终保持在最上端