linux内核驱动识别过程,转载_ARM-Linux内核驱动加载过程思路
Ø 取得驱动C文件并建立相应文件夹实现内核添加(以编译测试驱动程序为例)
1) 在相应的文件夹下面建立驱动文件夹
将C程序放入该驱动文件夹下
2) 创建或下载驱动C文件的头文件
3) 编辑该驱动集合(该驱动模块)下面的Makefile 添加编译选项
#===============driver_test============ obj-$(CONFIG_DRIVER_TEST_SYD168) += driver_test/
#===================================
4) 编辑该驱动集合(该驱动模块)下面的Kconfig 添加编译选项菜单
#=========Driver_test_syd168===========
source "drivers/char/driver_test/Kconfig"
#======================================
5) 编辑该驱动文件夹下面的Makefile 添加编译此驱动程序
obj-$(CONFIG_DRIVER_TEST_SYD168) += driver_test.o
6) 编辑该驱动文件夹下面的Kconfig 添加编译选项菜单
#
#tDriver device configuration
#
menu "Driver test by syd168"
config DRIVER_TEST_SYD168
bool "Driver test by syd168"
# depends on ACH_MINI2440
default y
---help---
Driver test by syd168 2011.5.2
Endmenu
7) 修改内核根目录(Linux-2.6.37)下的Makefile
修改
ARCH ?= arm 指定平台
CROSS_COMPILE ?= arm-linux- 指定编译器
8) 在驱动文件夹下面编译
#make
编译结果
built-in.o Kconfig modules.order
driver_test.c Makefile driver_test.ko
driver_test.o modules.builtin
9) 将驱动文件driver_test.ko拷贝到开发板/lib/modules
命令:#insmod driver_test.ko
安装驱动成功显示:Driver Init:Hello world
命令:#lsmod
查看当前安装的驱动:driver_test 704 0 - Live 0xbf000000
0xbf000000表示模块地址
卸载驱动要在/lib下面建立linux-2.6.37文件夹拷贝driver_test.ko到此文件夹下
命令:rmmod driver_test
卸载成功显示:Driver exit:Goodbye,world
Ø 取得驱动C文件不建立相应文件夹直接放到相应模块文件夹下
1) 将C文件拷贝到模块文件夹下面
2) 下载或编写相应模块头文件相应模块文件夹下(与C程序一起)
3) 编辑模块文件夹下Makefile添加相应的编译选项
obj-$(CONFIG_MINI2440_ADC) += mini2440_adc.o
4) 编辑模块文件夹下Kconfig 添加相应的选项菜单
config MINI2440_ADC
bool "ADC driver for Mini2440 development boards"
depends on MACH_MINI2440
default y if MACH_MINI2440
help
this is ADC driver for FriendlyARM Mini2440 development boards
Notes: the touch-screen-driver required this option
5) 修改内核根目录(Linux-2.6.37)下的Makefile
ARCH ?= arm 指定平台
CROSS_COMPILE ?= arm-linux- 指定编译器
6) 重新编译内核
7) 制作内核映像文件
8) 下载到开发板
9) 编辑测试程序(对测试文件自己编写或下载一个编译arm-linux-gcc)测试
KERNELDIR = /home/wenhao/platform/linux-2.6.34
PWD := $(shell pwd)
CROSS_COMPILE = /usr/local/arm/4.3.2/bin/arm-linux-
CC = $(CROSS_COMPILE)gcc
obj-m := key.o
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
.PHONY: modules clean
!注意:make和rm前是TAB键,同时Makefile放在驱动文件同级目录,直接执行make命令即可
linux内核驱动识别过程,转载_ARM-Linux内核驱动加载过程思路相关推荐
- Android View的加载过程
2019独角兽企业重金招聘Python工程师标准>>> 大家都知道Android中加载view是从Activity的onCreate方法调用setContentView开始的,那么V ...
- linux内核启动以及文件系统的加载过程
Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 lin ...
- Linux下C/C++程序编译链接加载过程中的常见问题及解决方法
Linux下C/C++程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时,常见报错信息如下: run.cpp:2:10: fatal error: dl ...
- 设备树语法,加载过程和与驱动的关系
文章目录 一.设备树语法 1.1 简介 1.2 基本数据格式 1.3 一个例子 1.3.1 根节点 2.3.2 CPU 1.3.3 节点名称 1.3.4 设备 1.3.5 status 1.3.6 编 ...
- linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例
转自:truemylife.linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例 基本概念: 磁盘.分区.物理卷[物理部分] 卷组[中间部分] 逻辑卷.文件系统[虚拟化后可控制部分] 磁 ...
- Linux操作系统分析-lab2-进程的创建与可执行程序的加载
学号:sa****340 姓名:**钰 一.进程的创建过程分析 1.创建进程 Linux提供了几个函数fork,vfork和clone系统调用创建新进程,其中,clone创建轻量级进程,必须指定要共 ...
- Linux下的静态库、动态库和动态加载库
from: http://www.techug.com/linux-static-lib-dynamic-lib 库的存在极大的提高了C/C++程序的复用性,但是库对于初学者来说有些难以驾驭,本文从L ...
- 非即插即用型设备驱动的加载过程
非即插即用型设备驱动的加载过程 1. 非PnP总线驱动在系统启动时通过扫描注册表发现非PnP设备的存在,并向OS报告ID信息.(例如根总线驱动通过扫描 HKLM\ SYSTEM\ CurrentCon ...
- 模块加载过程代码分析1
一.概述 模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区. 一个module对象,表示模块名的一个以null ...
- 1wifi 简介(框架)2系统启动后的 wifi加载 过程-图解 3系统启动后的 wifi 加载过程
http://blog.csdn.net/wh_19910525/article/details/7384480 一.wifi 组建原理: WIFI就是一种无线联网的技术,以前通过网线连接电脑,而现在 ...
最新文章
- Ext.Net学习笔记22:Ext.Net Tree 用法详解
- python主要运用于-Python八大主要应用领域,你都知道吗?
- 这名程序员28岁就退休了。。。
- linux shell删除所有文件夹下指定扩展名(关键字)的所有文件
- day055056Django之多表操作,多表查询
- 虚拟机中PXE-MOF:Exiting intel PXE ROM.Operating system not found解决方法
- python数据分析天气预报_数据分析----天气预报走向(pygal)
- python中聚类和分类的区别_聚类与分类有什么区别?
- visio-制作甘特图工具
- 分享--操作系统学习
- android仿照网易新闻源代码
- JavaWeb——动态页面技术(JSP/EL/JSTL)
- MySQL DDL--ghost工具学习
- 近段时间的学习碎片整理(7)
- 款android智能手机,索爱发布两款Android智能手机
- NEUQ-ACM 第四次双周赛(天梯赛模拟题L1~L2)
- 全国研究生数学建模比赛经验
- 蓝桥杯集锦03(python3)
- 20200820美团运维工程师一面面经
- 爬虫系列之百度云爬虫
热门文章
- 想象中的论文答辩和真实的论文答辩!哈哈哈哈哈哈……
- 相机标定的基本原理与经验分享
- 文件读取getline与fscanf_s
- windows启动mysql8服务_MySQL8.0服务启动(windows10)
- vue select js 设置默认值
- 使用cmake组建跨平台项目
- Advanced Sci | 打破生成式深度学习限制:低量数据下的“one-shot”药设计法
- Nat. Genet. | 基于遗传学主导的方法定义免疫相关性状的药物靶标
- for android 软件,安卓特工 for Android
- MPB:张云增、王年等-​柑橘根际和根表微生物组样品的收集及核酸提取方法