- 修改linux目录下的顶层Makefile
252 ARCH ?= $(SUBARCH)
253 CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
把ARCH 和 CROSS_COMPILE这两个变量的值分别赋为arm和arm-linux-gnueabihf-,即把上面2行改为
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-gnueabihf-
- 复制imx_v7_mfg_defconfig为自己的配置文件如imx_glen_emmc_defconfig,并进行配置如下:
glen@ubuntu:~/linux/imx6ull/linux/glen_linux$ make imx_glen_emmc_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
- 在./arch/arm/boot/dts/Makefile文件添加制作设备树文件的名称
dtb-$(CONFIG_SOC_IMX6ULL) += \
imx6ull-14x14-ddr3-arm2.dtb \
imx6ull-14x14-ddr3-arm2-adc.dtb \
......
imx6ull-glen-emmc.dtb \
imx6ull-14x14-evk-gpmi-weim.dtb \
imx6ull-14x14-evk-usb-certi.dtb \
imx6ull-9x9-evk.dtb \
imx6ull-9x9-evk-btwifi.dtb \
imx6ull-9x9-evk-ldo.dtb
- 并且在./arch/arm/boot/dts/目录下复制 imx6ull-14x14-evk.dts 为imx6ull-glen-emmc.dts,文件名与上述Makefile制作设备树文件的名称一致
- 制作编译内核脚本,
#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_glen_emmc_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j4
进行编译,产生如下编译信息,即内核编译与设备树文件都制作成功。
......
CHK include/generated/compile.h
DTC arch/arm/boot/dts/imx6ull-glen-emmc.dtb
DTC arch/arm/boot/dts/imx6ull-14x14-evk-gpmi-weim.dtb
DTC arch/arm/boot/dts/imx6ull-14x14-evk-usb-certi.dtb
DTC arch/arm/boot/dts/imx6ull-9x9-evk.dtb
DTC arch/arm/boot/dts/imx6ull-9x9-evk-btwifi.dtb
DTC arch/arm/boot/dts/imx6ull-9x9-evk-ldo.dtb
DTC arch/arm/boot/dts/imx6sll-lpddr2-arm2.dtb
DTC arch/arm/boot/dts/imx6sll-lpddr3-arm2.dtb
DTC arch/arm/boot/dts/imx6sll-lpddr3-arm2-csi.dtb
......
LD [M] drivers/input/evbug.ko
LD [M] drivers/input/mouse/psmouse.ko
LD [M] drivers/input/serio/serport.ko
LD [M] drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
LD [M] drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
LD [M] drivers/rpmsg/imx_rpmsg_pingpong.ko
LD [M] fs/binfmt_misc.ko
LD [M] drivers/rpmsg/imx_rpmsg_tty.ko
LD [M] fs/fat/msdos.ko
LD [M] fs/isofs/isofs.ko
LD [M] fs/nls/nls_iso8859-15.ko
LD [M] fs/udf/udf.ko
LD [M] lib/crc-ccitt.ko
LD [M] lib/crc-itu-t.ko
LD [M] lib/crc7.ko
LD [M] lib/libcrc32c.ko
AS arch/arm/boot/compressed/piggy.lzo.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
- 使用tftp指令加载内核,
1)在uboot下设置环境变量setenv bootargs 'root=/dev/mmcblk1p2 rootwait rw'
注:这里这样设置是因为笔者开发板的eMMC的第2个分区已经保存了根文件系统,才可以这样设置,保障后续内核畅通。
2)加载zImage文件到内存
=> tftp 80800000 zImage
FEC1 Waiting for PHY auto negotiation to complete... done
Using FEC1 device
TFTP from server 192.168.1.55; our IP address is 192.168.1.50
Filename 'zImage'.
Load address: 0x80800000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
########################################################
1.5 MiB/s
done
Bytes transferred = 5582704 (552f70 hex)
3)加载设备树文件到内存
=> tftp 83000000 imx6ull-glen-emmc.dtb
Using FEC1 device
TFTP from server 192.168.1.55; our IP address is 192.168.1.50
Filename 'imx6ull-glen-emmc.dtb'.
Load address: 0x83000000
Loading: ###
1.3 MiB/s
done
Bytes transferred = 35969 (8c81 hex)
4)启动内核
=> bootz 80800000 - 83000000
Kernel image @ 0x80800000 [ 0x000000 - 0x552f70 ]
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Using Device Tree in place at 83000000, end 8300bc80
Starting kernel ...
ffffx~
Freescale i.MX Release Distro 4.1.15-2.1.0 ALIENTEK-IMX6U /dev/ttymxc0
ALIENTEK-IMX6U login: random: nonblocking pool is initialized
Freescale i.MX Release Distro 4.1.15-2.1.0 ALIENTEK-IMX6U /dev/ttymxc0
ALIENTEK-IMX6U login:
这里看到内核的启动成功了。
本文详细介绍了在ARM架构下编译Linux内核的过程,包括修改Makefile,配置自定义内核参数,创建设备树文件,以及使用tftp指令加载内核和设备树到内存中启动内核的方法。
——linux移植(中)&spm=1001.2101.3001.5002&articleId=103917047&d=1&t=3&u=321c52105f614c7dbaa4c2695fa460a4)
168

被折叠的 条评论
为什么被折叠?



