如何配置与编译适用于ADSP-SC589的U-boot和Linux内核

1 概述

在开发过程中,我们常常需要配置和构建特定的Linux内核,以将需要用到的模块编译进内核,不用的模块不编译进内核,实现内核的最大精简。这篇文章介绍了如何解压U-boot和Linux内核源码以及如何使用Buildroot配置Linux内核。配置完成后的内核是标准内核,如果想增加某些模块,可参考ADI Linux指引手册的后半部分。

2 解压源代码

在工作开始之前,我们需要把U-boot源代码和Linux内核源代码复制到指定位置,这里将目录~/sc5xx_dev作为指定位置。

mkdir ~/sc5xx_dev

2.1 解压u-boot源代码

执行以下命令将u-boot源代码解压到工作目录~/sc5xx_dev。

$ cd ~/sc5xx_dev
$ cp /opt/analog/cces-linux-add-in/1.3.1/uboot-sc5xx-1.3.1/src/ubootsc5xx-1.3.1.tar.gz ./
$ tar -zxvf uboot-sc5xx-1.3.1.tar.gz

现在源码已经存放在目录~/sc5xx_dev/uboot下了。

2.2 解压buildroot和Linux内核源代码

执行以下命令将Linux内核源码解压到工作目录~/sc5xx_dev。

$ cd ~/sc5xx_dev
$ cp /opt/analog/cces-linux-add-in/1.3.1/buildroot-sc5xx-1.3.1/src/buildroot-sc5xx-1.3.1.tar.gz ./
$ tar -zxvf buildroot-sc5xx-1.3.1.tar.gz

现在源码已经存放在目录~/sc5xx_dev/buildroot下了。

3 配置并编译u-boot

3.1 配置u-boot

$ cd ~/sc5xx_dev/uboot
$ make distclean
$ make sc589-ezkit_defconfig

3.2 编译u-boot

$ make

3.3 生成的文件

文件描述
u-boot.ldr用于引导的u-boot镜像
u-boot可执行的u-bootELF文件

4 按照默认配置编译Linux内核与Buildroot

4.1 默认配置

$ cd ~/sc5xx_dev/buildroot
$ make distclean
$ make sc589-ezkit_defconfig

4.2 编译

以下代码会同时编译Linux内核与Buildroot

$ cd ~/sc5xx_dev/buildroot
$ make

5 定制编译Linux内核与Buildroot

5.1 使用Linux-menuconfig定制Linux内核

$ cd ~/sc5xx_dev/buildroot
$ make linux-menuconfig

执行命令后会进入Linux-menuconfig配置菜单:
在这里插入图片描述
根据ADI官方Linux用户指南中各驱动的要求按Y激活相应的选项,全部配置完成后选择save选项保存,之后退出。

$ make linux-rebuild

执行以上指令后,Linux内核会被重新配置。

5.2 在buildroot中启用新package

$ cd ~/sc5xx_dev/buildroot
$ make menuconfig

执行以上命令会出现menuconfig菜单:
在这里插入图片描述
在菜单中激活你需要的package,之后选择save选项,退出。

$ make

使用以上命令后,会重新编译buildroot。

5.3 生成文件位置

位置描述
output/images/uImage生成的Linux可引导镜像
output/images/vmImageLinux内核镜像
output/images/sc589-ezkit.dtb编译出的设备树文件
output/images/rootfs.ext3ext3格式的根文件系统镜像
output/target/根文件系统的内容
output/build/linux-custom/Linux源代码树的build输出
output/build/各种包的build输出

6 生成能从非易失性存储介质(如SD卡)启动的内核镜像

如何将u-boot和Linux内核移植到ADSP-SC589上中,我们已经演示了如何从SD卡中引导Linux内核镜像vmimage。然而,要想从SD卡中引导我们自己构建的Linux内核,还需要执行以下操作,并且使用内核镜像uimage来替代vmimage。
在buildroot目录下执行命令make menuconfig,进入可视化配置窗口:
在这里插入图片描述
进入Filesystem images选项:
在这里插入图片描述
找到initial RAM filesystem linked into linux kernel选项并确保该选项没有被选中。
在这里插入图片描述
保存并退出。

执行命令make linux-menuconfig,进入内核配置窗口:

在这里插入图片描述
进入General setup选项,确保其中的选项 Initial RAM filesystem and RAM disk (initramfs/initrd) support没有被选中。

在这里插入图片描述
保存并退出

之后重新编译内核与文件系统。

$ make

注意

如果还想使用原来与文件系统编译在一起的uImage,请在重新使能 Initial RAM filesystem and RAM disk (initramfs/initrd) support选项后,在Initramfs source file(s) 选项中输入你想要编译的cpio格式文件系统镜像的路径,之后重新编译。

在这里插入图片描述
在这里插入图片描述

7 一些Buildroot小技巧

7.1 清除之前的编译输出

有时我们想要运行make clean或make distclean来从头开始执行一个干净的构建。这两个命令会删除上次构建期间的所有输出,以及dl文件夹,备份dl文件夹是一个很好的做法,因为下载它们需要很长时间。

7.2 重新构建更新的package

有时我们会对package或package的源码(位于output/package目录)的配置进行更改。如果仅仅在更改后执行make命令是没用的,取而代之的是我们需要执行make <pkg>-rebuild命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值