ALPHA I.MX自学笔记(一,环境搭建)
资源准备
一、目录创建
-
资源与项目目录创建
RESOURCE_DIR=~/Sources/02-IMX6/01-Resource PROJECT_DIR=~/Sources/02-IMX6/02-Projects/01-SDK_work mdir -p ${RESOURCE_DIR} ${PROJECT_DIR}
二、工具链安装
-
资源下载
git clone https://e.coding.net/alientek-linux/imx6ull/05_Tools.git ${RESOURCE_DIR} --depth=1 ## 64位系统 tar -xvf ${RESOURCE_DIR}/05_Tools/01、交叉编译器/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz -C ~/.local/share/
-
添加到环境变量
# 备份~/.bashrc文件 cp -arf ~/.bashrc ~/.bashrc.bak # ~/.bashrc增加如下内容 # set PATH so it includes user's toolchain if it exists if [ -d "$HOME/.local/share/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin" ] ; then PATH="$HOME/.local/share/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin:$PATH" fi
-
测试
# 退出当前ssh终端 exit #重新连接测试,执行正常即成功 arm-linux-gnueabihf-gcc -v
-
说明
- arm-linux-gnueabihf-gcc 是教程系统的交叉编译工具链,用于编译教程内核、 uboot、例程等
等源码。 - poky-arm-gcc 里面的 fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-
4.1.15-2.1.0.sh 是出厂系统交叉编译工具链,用于编译出厂内核、 uboot、出厂 QT 系统、自己 QT
应用等等。
- arm-linux-gnueabihf-gcc 是教程系统的交叉编译工具链,用于编译教程内核、 uboot、例程等
因为选择了教程系统的交叉编译工具链,所以uboot、kernel都要选择教程源码
三、uboot源码安装
-
下载
git clone https://e.coding.net/alientek-linux/imx6ull/01_Soure_Code.git ${RESOURCE_DIR} --depth=1
-
解压并命名
tar -xvf ${RESOURCE_DIR}/01_Soure_Code/04、NXP官方原版Uboot和Linux/uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 -C ${PROJECT_DIR} mv ${PROJECT_DIR}/uboot-imx-rel_imx_4.1.15_2.1.0_ga/ ${PROJECT_DIR}/uboot
四、linux源码安装
-
下载
步骤三中已经下载过源码,所以再重复下载
-
解压并重命名
tar -xvf ${RESOURCE_DIR}/01-Resource/01_Soure_Code/04、NXP官方原版Uboot和Linux/linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 -C ${PROJECT_DIR} mv ${PROJECT_DIR}/linux-imx-rel_imx_4.1.15_2.1.0_ga ${PROJECT_DIR}/linux
五、顶层Makefile
LOCAL_DIR = $(strip $(shell pwd))
SDK_TOP = $(LOCAL_DIR)
UBOOT_DIR = $(LOCAL_DIR)/uboot
KERNEL_DIR = $(LOCAL_DIR)/kernel
CPU_CORES = $(shell grep '^core id' /proc/cpuinfo |sort -u |wc -l)
UBOOT_DEFCONFIG ?= mx6ul_14x14_evk_emmc_defconfig
KERNEL_DEFCONFIG ?= imx_v7_defconfig
export ARCH ?= arm
export CROSS_COMPILE ?= arm-linux-gnueabihf-
build_all := uboot kernel
clean_all := $(addsuffix _clean,$(build_all))
.PHONY : clean $(build_all) $(clean_all)
all: ${build_all}
clean:
$(MAKE) $(clean_all)
uboot:
$(MAKE) -C $(UBOOT_DIR) $(UBOOT_DEFCONFIG)
$(MAKE) -C $(UBOOT_DIR) -j${CPU_CORES}
uboot_clean:
$(MAKE) clean -C $(UBOOT_DIR)
kernel:
$(MAKE) -C $(KERNEL_DIR) $(KERNEL_DEFCONFIG)
$(MAKE) -C $(KERNEL_DIR) -j${CPU_CORES}
kernel_clean:
$(MAKE) clean -C $(KERNEL_DIR)
VSCode配置
-
内核配置:.vscode/settings.json
"files.exclude": { "**/.git": true, "**/.github": true, "**/.svn": true, "**/.hg": true, "**/CVS": true, "**/.DS_Store": true, "**/*.o":true, "**/*.su":true, "**/*.cmd":true, "**/*.tmp*":true, "Documentation":true, /* 屏蔽不用的架构相关的文件 */ "arch/[b-z]*" :true, /* except arm */ "arch/a[a-qs-z]*" :true, "arch/ar[a-ln-z]*" :true, "arch/arm[0-9]*" :true, "arch/arm/mach-[ac-z]*" :true, /* except arm/mach-bcm */ "arch/arm/mach-b[a-be-z]*" :true, /* 屏蔽排除不用的配置文件 */ "arch/arm/configs/[ac-z]*":true, /* 屏蔽掉不用的DTB文件 */ "arch/arm/boot/dts/[ac-z]*":true, "arch/arm/boot/dts/*.tmp":true, },