Ø      取得驱动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内核驱动加载过程思路相关推荐

  1. Android View的加载过程

    2019独角兽企业重金招聘Python工程师标准>>> 大家都知道Android中加载view是从Activity的onCreate方法调用setContentView开始的,那么V ...

  2. linux内核启动以及文件系统的加载过程

    Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 lin ...

  3. Linux下C/C++程序编译链接加载过程中的常见问题及解决方法

    Linux下C/C++程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时,常见报错信息如下: run.cpp:2:10: fatal error: dl ...

  4. 设备树语法,加载过程和与驱动的关系

    文章目录 一.设备树语法 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 编 ...

  5. linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例

    转自:truemylife.linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例 基本概念: 磁盘.分区.物理卷[物理部分] 卷组[中间部分] 逻辑卷.文件系统[虚拟化后可控制部分] 磁 ...

  6. Linux操作系统分析-lab2-进程的创建与可执行程序的加载

    学号:sa****340  姓名:**钰 一.进程的创建过程分析 1.创建进程 Linux提供了几个函数fork,vfork和clone系统调用创建新进程,其中,clone创建轻量级进程,必须指定要共 ...

  7. Linux下的静态库、动态库和动态加载库

    from: http://www.techug.com/linux-static-lib-dynamic-lib 库的存在极大的提高了C/C++程序的复用性,但是库对于初学者来说有些难以驾驭,本文从L ...

  8. 非即插即用型设备驱动的加载过程

    非即插即用型设备驱动的加载过程 1. 非PnP总线驱动在系统启动时通过扫描注册表发现非PnP设备的存在,并向OS报告ID信息.(例如根总线驱动通过扫描 HKLM\ SYSTEM\ CurrentCon ...

  9. 模块加载过程代码分析1

    一.概述 模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区. 一个module对象,表示模块名的一个以null ...

  10. 1wifi 简介(框架)2系统启动后的 wifi加载 过程-图解 3系统启动后的 wifi 加载过程

    http://blog.csdn.net/wh_19910525/article/details/7384480 一.wifi 组建原理: WIFI就是一种无线联网的技术,以前通过网线连接电脑,而现在 ...

最新文章

  1. Ext.Net学习笔记22:Ext.Net Tree 用法详解
  2. python主要运用于-Python八大主要应用领域,你都知道吗?
  3. 这名程序员28岁就退休了。。。
  4. linux shell删除所有文件夹下指定扩展名(关键字)的所有文件
  5. day055056Django之多表操作,多表查询
  6. 虚拟机中PXE-MOF:Exiting intel PXE ROM.Operating system not found解决方法
  7. python数据分析天气预报_数据分析----天气预报走向(pygal)
  8. python中聚类和分类的区别_聚类与分类有什么区别?
  9. visio-制作甘特图工具
  10. 分享--操作系统学习
  11. android仿照网易新闻源代码
  12. JavaWeb——动态页面技术(JSP/EL/JSTL)
  13. MySQL DDL--ghost工具学习
  14. 近段时间的学习碎片整理(7)
  15. 款android智能手机,索爱发布两款Android智能手机
  16. NEUQ-ACM 第四次双周赛(天梯赛模拟题L1~L2)
  17. 全国研究生数学建模比赛经验
  18. 蓝桥杯集锦03(python3)
  19. 20200820美团运维工程师一面面经
  20. 爬虫系列之百度云爬虫

热门文章

  1. 想象中的论文答辩和真实的论文答辩!哈哈哈哈哈哈……
  2. 相机标定的基本原理与经验分享
  3. 文件读取getline与fscanf_s
  4. windows启动mysql8服务_MySQL8.0服务启动(windows10)
  5. vue select js 设置默认值
  6. 使用cmake组建跨平台项目
  7. Advanced Sci | 打破生成式深度学习限制:低量数据下的“one-shot”药设计法
  8. Nat. Genet. | 基于遗传学主导的方法定义免疫相关性状的药物靶标
  9. for android 软件,安卓特工 for Android
  10. MPB:张云增、王年等-​柑橘根际和根表微生物组样品的收集及核酸提取方法