内核配置和裁剪

________________________________________________________________________________

驱动模块静态增加

一、驱动文件

步骤:
1、在kernel/device目录下相应的外设目录新建一个文件夹,在里面放自己驱动(比较好管理和区别原有的驱动)
2、在新建文件夹创建Kconfig和Makefile文件
3 、config文件编写

底层Kconfig

menu "menu_name"

config Symbol_name
     type "drv_name"
     default x(默认值,根据类型和需求设置)
     help
        xxxxxx

endmenu

4、makefile文件编写



二、新建文件夹上层目录文件修改

1 上层Kconfig内容增加
在这里插入图片描述

2 上层Makefile内容增加
在这里插入图片描述

三、menuconfig效果

menuconfig有相应的选项,编译后出现 ".o"文件
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

四、编译

编译 根据 顶层 “.config” 文件里面信息决定哪些配置需要编译进内核,哪些需要编译成模块(insmod安装那种)、哪些是不需要的驱动(相当于注释掉)

一般情况下厂商初始化好的.config文件放在arch/arm/configs里面

1.第一次编译需要修改下Makefile文件

修改顶层Makefile文件(指定ARCH架构和CROSS_COMPILE交叉编译器前缀名字)
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-gnueabihf- (这个具体情况会不一样,填写相应交叉编译器的前缀即可)

2.内核编译命令

修改完Makefile文件以后,每次make menuconfig配置好内核后,根据需求去获得相应的内核文件,编译完的内核文件一般放在arch/arm/boot目录下

make zImage -j8 (-j 多少线程编译,可以加快编译速度)
make uImage 
根据需要编译相应的内核

________________________________________________________________________________

模块驱动动态添加

只需要一个makefile即可

//makefile文件内容
obj-m += xxx.o  <----驱动文件的.o名字
KERNEL_DIR := 内核目录的绝对路径

//交叉编译器的绝对路径+前缀
CROSS_COMPILE := /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
PWD = $(shell pwd)

default:
	make -C $(KERNEL_DIR) M=$(PWD) modules
	rm -rf .*.cmd *.mod.c *.o *.symvers *.order .tmp_versions
clean:
	rm -rf .*.cmd *.mod.c *.o *.symvers *.order .tmp_versions *.ko

Ps:
1、如果内核目录顶层makefile没有把ARCHCROSS_COMPILE属性写死的话,命令要加入这两个属性的值

make ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNEL_DIR) M=$(PWD) modules

________________________________________________________________________________

清理

在这里插入图片描述

________________________________________________________________________________

可能出现的问题

1.新建的驱动没有生成对应的.o文件

检查这三个对应的CONFIG配置信息是否写对

在这里插入图片描述


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值