mx6ull的linux移植
下载源码
https://github.com/nxp-imx
nxp官方维护的仓库
编译
编译要选择的模板目录载arch/arm/configs/下,
模板选择imx_v6_v7_defconfig
tftp
采用网络下载的方法,
1 | sudo apt-get install tftpd-hpa # Debian/Ubuntu |
创建目录
然后修改配置文件
1 | sudo vim /etc/default/tftpd-hpa |
下面为配置
1 | cat /etc/default/tftpd-hpa |
上面不生效,被覆盖了,采用链接的方式链接过去
重启
1 | sudo systemctl restart tftpd-hpa |
一些说明
linux的移植相比于uboot。直接拷贝arch/arm/configs/里面的配置,自已名字改一份,
比较容易。
而对于驱动,驱动的编译会在makefile里有一个config的选项,如果在.config里开起,就会去编译。
设备树的makefile中,
1 | imx6sx-udoo-neo-full.dtb |
注意最后一项不需要 \。
CONFIG_SOC_IMX6ULL 去deconfig文件中开启,对于图形化配置界面,则使用kconfg界面去开启。
对于deconfig文件和.config文件,两者的差异是:
在 Linux 内核源码中,arch/arm/configs/
下的配置文件和源码根目录下的 .config
文件虽然都用于配置内核编译选项,但它们的作用和使用场景有所不同。以下是两者的主要区别:
1. arch/arm/configs/
下的配置文件
- 作用:提供预定义的默认配置模板。
- 类型:通常是架构相关的配置文件(如
imx_v6_v7_defconfig
)。 - 用途:
- 作为构建
.config
的起点。 - 提供一个特定平台或功能集的标准配置。
- 作为构建
- 生成方式:
- 用户可以通过
make ARCH=arm imx_v6_v7_defconfig
命令将该配置文件复制到源码根目录下,生成.config
文件。
- 用户可以通过
- 特点:
- 静态文件,不随编译过程变化。
- 可以有多个不同的 defconfig 文件,对应不同平台或需求。
示例:
1 | make ARCH=arm imx_v6_v7_defconfig |
2. .config
文件(位于源码根目录)
- 作用:当前内核编译的实际配置文件。
- 内容:包含了所有选中的内核选项(例如
CONFIG_SOC_IMX6ULL=y
)。 - 生成方式:
- 通常由
defconfig
文件生成,也可以通过make menuconfig
、make kconfig
等图形化工具修改后保存。
- 通常由
- 用途:
- 编译时直接被 Kbuild 使用来决定哪些代码需要编译。
- 所有模块、驱动、功能的启用/禁用都由此文件控制。
- 特点:
- 动态文件,会随着用户配置而改变。
- 是最终生效的配置文件。
示例:
1 | make menuconfig # 修改配置后保存,会更新 .config |
总结对比
特性 | arch/arm/configs/xxx_defconfig |
.config |
---|---|---|
位置 | 在 configs 目录下 | 在源码根目录 |
用途 | 提供默认配置模板 | 实际使用的配置文件 |
是否可编辑 | 可以编辑,但一般只读 | 可随时修改 |
生成方式 | 用户手动选择或创建 | 由 defconfig 或 menuconfig 生成 |
是否生效 | 否,仅作为模板 | 是,直接影响编译结果 |
应用场景建议
- 如果你是初次移植内核,可以从
arch/arm/configs/
中选择一个最接近目标平台的defconfig
文件作为起点。 - 如果你已经有一个
.config
文件,并需要微调配置,可以使用make menuconfig
来修改.config
。 - 在调试或开发过程中,
.config
是主要操作对象;而defconfig
更多用于标准化和复用配置。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 naro!