静态编译进Linux内核

一、准备好可以正常引导开发板的源码

二、在内核源码kernel文件夹的driver目录下,创建led_arm文件夹

mkdir drivers/led_arm

三、将“LED驱动实验”的驱动程序拷贝到led_arm目录下(详情见上一次LED驱动博客)

将led.c拷贝在该文件夹下面

Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动。

每个config菜单项都要有类型定义,bool:布尔类型, tristate三态:内建、模块、移除, string:字符串, hex:十六进制, integer:整型

例如config HELLO_MODULE

bool "hello test module"

bool类型的只能选中或不选中,tristate类型的菜单项多了编译成内核模块的选项,假如选择编译成内核模块,则会在.config中生成一个CONFIG_HELLO_MODULE=m的配置,假如选择内建,就是直接编译成内核影响,就会在.config中生成一个CONFIG_HELLO_MODULE=y的配置.

①添加一个Kconfig文件

<span style="font-size:14px;">config MYLED
	tristate "MYLED"
	default n
	help
	this is a LED driver
</span>

②添加一个Makefile

<span style="font-size:14px;">obj-$(CONFIG_LEDTEST)+=led.o</span>

四、将我们编写的驱动支持选项增加进内核的配置菜单中。

修改drivers目录中的Kconfig文件

在最后一行添加语句

source "drivers/led_arm/Kconfig"

五、修改drivers/Makefile文件

增加以下语句

obj-$(CONFIG_LEDTEST)      +=led_arm/

六、重新配置内核

在源码根目录输入

#make Menuconfig

可以在菜单的最后,看到我们新加入的MYLED选项。

时间: 2024-08-26 20:28:58

静态编译进Linux内核的相关文章

将MPLS编译进linux内核中

系统环境:linux kernel 2.6.35.(此环境是上一篇文章中将ubuntu内核替换后的环境) 编译过程如下: 1)首先需要下载patch文件:linux-kernel-v2.6.35-mpls1.980.patch.下载链接: http://ftp.jaist.ac.jp/pub/sourceforge/m/project/mp/mpls-linux/mpls-linux/Patches/linux-kernel-v2.6.35.13-mpls1.980.patch 或者: http

【转】6.4.6 将驱动编译进Linux内核进行测试

原文网址:http://www.apkbus.com/android-98520-1-1.html 前面几节都是将Linux驱动编译成模块,然后动态装载进行测试.动态装载驱动模块不会随着Android系统的启动而自动装载,因此Android系统每次启动都必须使用insmod或modprobe命令装载Linux驱动模块. 对于嵌入式系统(包括嵌入式Android.嵌入式Linux等)一般都采用将Linux驱动编译进内核的方式.这样做虽然没有动态装载灵活,但Linux驱动会随着Android的启动而

详解将驱动程序编译进linux内核

1.进入目录linux-kernel-samsung-dev\drivers\char 2.新建目标目录01.led,将驱动相关文件复制到此目录 注:需确保复制的驱动文件是能正常运行的驱动 3.在目录01.led里编写Kconfig文件 menu "xxx" config XXX_LED tristate "xxx_ggg210_led" default n help The led water made by xxx which was used by platf

编译安装linux内核步骤

编译安装linux内核步骤: 一.获取内核源码 源码网址:www.kernel.org 二.解压内核源码 首先以root帐号登录,然后进入/usr/src子目录.如果用户在安装Linux时,安装了内核的源代码,则会发现一个linux-x.y.z的子目录.该目录下存放着内核x.y.z的源代码.此外,还会发现一个指向该目录的链接linux.删除该连接,然后将新内核的源文件拷贝到/usr/src目录中,并解压:     # tar zxvf Linux-2.3.14.tar.gz 文件释放成功后,在/

linux内核系列(一)编译安装Linux内核 2.6.18

1.配置环境 操作系统:CentOS 5.2 下载linux-2.6.18版本的内核,网址:http://www.kernel.org 说明:该编译文档适合2.6.18以上的Linux内核版本,只需所编译的 Linux内核版本不能低于Linux操作系统自身的内核版本,不然会遇到很多问题:   2.开始编译 cp  ./ linux-2.6.18.tar.gz  /usr/src/ tar –zxvf ./linux-2.6.18.tar.gz cd /usr/src/linux-2.6.18 /

如何编译安装Linux内核

操作系统环境 VMware workstation15 Pro ubuntu18.04 LTS 待编译内核5.3.10版本 内核下载地址 kernel.org 环境配置 在正式编译前需要安装部分软件. sudo apt update && sudo apt upgrade sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison 解压缩

编译升级linux 内核

Linux kerner即linux内核是整个系统的核心,负责管理硬件和进程之间的切换,平时是不需要进行修改的,那么为什么会有升级内核一说呢?主要来讲,升级内核是为获取新内核版本的的新功能.新特性以及支持的新设备,也就是内核可以集成更多硬件驱动,另外也可以解决旧版本内核版本存在的一直bug,也就是可以修补一些已经解决的内核漏洞,因此,在有些情况下升级内核还是有需要的. 那么问题来,在哪去下载内核呢? 当然是内核的官网了,官网地址是:https://www.kernel.org/ 下载的时候要下载

linux 内核及其相关内容

1·内核模块: Linux设备驱动属于内核的一部分,Linux内核的一个模块可以以两种方式被编译和加载: (1)直接编译进Linux内核,随同Linux启动时加载: (2)编译成一个可加载和删除的模块,使用insmod加载(modprobe和insmod命类似,但依赖于相关的配置文件),rmmod删除.这种方式控制了内核的大小,而模块 一旦被插入内核,它就和内核其他部分一样. 下面我们给出一个内核模块的例子: #include <linux/module.h> //所有模块都需要的头文件 #i

linux内核编译,配置本机驱动

1.前言  编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去.面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要.面对内核里面这么多驱动,不懂硬件的我们,看到都头大.本人第一次安装gentoo的时候,内核编译了5次,前4次主要失败原因是以太网卡驱动.无线网卡驱动.显卡驱动.声卡驱动都没一次性配置正确.虽然gentoo提供了genkernel命令,可以自动帮你编译内核,但还是想自己手工尝试下. 2.获取本机驱动信息 既然跟内核挂钩