Linux设备驱动前的工作准备 ---- 内核的配置及Makefile编写

    我们知道,在我们编写驱动时,需要用到一些函数接口,这些接口是在内核源码的头文件中定义的。我们若需要用到这些函数,就需要先对其内核源码进行编译。下面给大家讲解如何制作及编写其Makefile。

I> 内核的配置

    1.我们若想要我们编译的模块能在我们的开发板上运行,这就需要先在开发板上用 uname -r 命令查看我们开发板所使用的内核。比如我的开发板使用的是2.6.30.4的内核。

    2.下载内核,可以直接去kernel的官网:https://www.kernel.org/网站下载。有时有些同学进到网站后,看不到一些老旧的内核版本,下面我讲解一下如何下载以往的内核。
    点击https://www.kernel.org/  ----> 点击https://www.kernel.org/pub/ ----> linux  ----> kernel  ----> v2.6 ---->  linux-2.6.30.4.tar.gz
    即可下载我们需要的内核。然后tar -zxvf linux-2.6.30.4.tar.gz即可解压得到我们需要的内核。

    3.编译内核
    由于我的开发板是TQ2440的,所以在编译内核之前,需要将顶层的Makefile中的ARCH改为arm,将CROSS_COMPILE 改为arm-linux- ,在这里注意,你要确保你Linux主机上已经安装了交叉编译器,并且我使用的配置脚本是s3c2410_defconfig这个脚本,在内核源码目录的arch/arm/configs/目录下可以找到对应平台的默认的配置脚本。之后我们执行 make s3c2410_defconfig即可生成一个.config配置脚本。之后再make编译。即可得到我们开发板对应的内核版本进行驱动的开发了。

注:我当时没有使用s3c2410_defconfig这个配置脚本进行配置,直接用make menuconfig打开了一下图形界面,其实也没有配置,然后到make编译的时候就出现了一些错误和警告。所以在此的建议是你们先用默认的配置文件配置一下内核,再去编译内核。

II> Makefile的编写

ifneq ($(KERNELRELEASE),)
    obj-m:=led_drv.o
else
    KERNELDIR:=/home/ubuntu/workdir/code/linux-2.6.30.4
    PWD :=$(shell pwd)


default:
    make -C $(KERNELDIR) M=$(PWD) modules
clean:
    make -C $(KERNELDIR) M=$(PWD) clean
endif

注:在Makefile中,我们只需要修改两处。
<1>obj-m这个变量是我们的驱动的名字。

<2>KERNELDIR这个变量是我存放内核源码的绝对路径。

 

 

 

关注我,分享好玩科技,探索未知世界

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值