Linux内核添加mach-xxx记录(原厂向Linux内核添加硬件平台)

向 Linux 内核中添加 mach-xxx 记录( 从零配置SOC内核支持 )

前言

在linux内核arch/arm目录下添加 mach-xxx 的记录。mach-xxx芯片厂商添加的硬件平台,每一个mach-xxx都是一个设备。(下文以 imx6ull 开发板的 mach-imx 为基础修改而来)

1. 添加流程

  1. 创建 mach-xxx

    在arch/arm目录下创建mach-asu文件夹,将修改后的 mach-imx文件内容复制到mach-xxx中(记得备份mach-imx)。

  2. 在 arch/arm/Kconfig 中添加 mach-xxx 地址,如下图所示

请添加图片描述
3. 在 arch/arm/mach-xxx/Mackfile 的 obj-$(CONFIG_SOC_IMX6UL) 中添加 编译脚本生成文件asu-clk-imx6ull.o,如下图所示(Makefile修改过,NXP行数在118行)
请添加图片描述
注:因为 asu-clk-imx6ull.c 是我写的时钟驱动所以需要添加编译出.o文件,直接使用NXP时钟驱动不需要修改第3点。

  1. 在 arch/arm/mach-xxx/Kconfig 中修改 source 地址,如下图所示:

请添加图片描述
5. 在arch/arm/Makefile 中搜索 imx 替换为 asu 即可

请添加图片描述

2. debug过程

上述第一节的1-4步比较简单,根据报错信息进行修改即可,主要是第5步相较多了一个弯弯,下面把第5步debug过程记录一下,首先看下第5步的报错信息,如下图:

请添加图片描述
从上图看出设备树已经编译完成,并且经过1-4步的修改后内核中已经没有 mach-imx 目录,但是编译还是进入到该目录。进入到报错提示的Makefile.modbuiltin文件中查看,内容如下所示:

请添加图片描述
这里的 kbuild-dir 和 kbuild-file 就是寻找地址中(地址来源后面去说)的Makefile,然后 include $(kbuild-file) 包含起来。

这里打印详细的 $(kbuild-file) 信息,添加 $(warning warn: $(kbuild-file)) 重新编译,如下:

请添加图片描述
打印内容如下:

请添加图片描述
打印信息可以看出,是在 arch/arm/mach-imx/Makefile 这块卡住了,把路径转向mach-asu才可以。

既然问题是在 mach-imx 这一层,那定义这个路径的定义肯定在它的上层,所以这次从 arch/arm 下开始debug。
在 arch/arm/Makefile 中发现对机器目录名的定义:

# Machine directory name.  This list is sorted alphanumerically
# by CONFIG_* macro name.
machine-$(CONFIG_ARCH_ALPINE)		+= alpine
machine-$(CONFIG_ARCH_AT91)		+= at91
...
machine-$(CONFIG_ARCH_MXC)		+= imx  
...
ifneq ($(machine-y),)
MACHINE  := arch/arm/mach-$(word 1,$(machine-y))/
...

在 .config 文件中 CONFIG_ARCH_MXC = y

MACHINE  := arch/arm/mach-$(word 1,$(machine-y))
#可以解析为:
MACHINE	 :=arch/arm/mach-imx

# 将 imx 换为 asu 机器目录就转为了 arch/arm/mach-xxx
machine-$(CONFIG_ARCH_MXC)		+= xxx

上述步骤修改完后就将Linux内核中的 mach-imx 更换为 mach-xxx 了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值