imx8开发笔记--基于yocto构建系统
硬件平台: imx8
操作系统: debian8
前期准备:系统配置
1.首先安装yocto需要使用的软件包(重要)
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev curl
$ sudo apt-get install ncurses-dev u-boot-tools
下边的包需要验证是否必须
$ sudo apt-get install xterm sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake make gcc g++ groff lzop asciidoc
2.修改系统默认语言为en_US.UTF-8
# dpkg-reconfigure locales
3.删除其他arm-linux-gcc编译器环境变量
yocto采用自带的编译器进行编译,需要注释掉其他交叉编译器环境变量。
配置编译环境: 进入目录执行配置(必须用普通用户执行,否则报错)
$ cd fsl-release-yocto
$ DISTRO=fsl-imx-xwayland MACHINE=imx8mqevk source fsl-setup-release.sh -b build-xwayland
DISTRO - 指定发行版
MACHINE - 指定平台型号
-b指定目标目录,执行该命令后会自动进入该目录
将downloads文件合并后,解压至fsl-release-yocto目录下
$ cat downloadsaaa* > download.tar.gz
$ tar -zxvf download.tar.gz
重要:否则编译的时候将自动从网下下载这些东西,但某些文件貌似因为墙的原因,无法下载,从而造成编译失败。
编译内核:
清除编译状态: $ bitbake -c cleansstate virtual/kernel
配置本地编译: $ bitbake -c patch virtual/kernel
重要:
此操作执行从本地文件编译,否则默认从网上下载,会很慢,而且有可能会失败。
配置kernel: $ bitbake -c menuconfig virtual/kernel
编译kernel: $ bitbake -c compile virtual/kernel
编译模块 :$ bitbake linux-imx -c compile_kernelmodules -f -v
(实际上在执行compile命令时会自动执行,因此此步骤可以省去)
部署
$ bitbake -c deploy -f -v linux-imx
将Image/dtb/modules文件输出至build-xwayland/tmp/deploy-linux-imx
目录中
执行patch操作后kernel源码位于:
build-xwayland/tmp/work-shared/imx8mqevk/kernel-source
执行menuconfig操作后会产生.config文件,位于:
build-xwayland\tmp\work\imx8mqevk-poky-linux\linux-imx\4.9.88-r0\build中
编译UBOOT:
进入uboot-imx目录下查看切换所需分支
$ cd uboot-imx/
$ git branch
ce-certify
imx_v2018.03_4.14.98_2.0.0_ga-1gddr
* imx_v2018.03_4.14.98_2.0.0_ga-2gddr
imx_v2018.03_4.14.98_2.0.0_ga-2gddr-MT3D1024M
切换分支:
$ git checkout imx_v2018.03_4.14.98_2.0.0_ga-2gddr-MT3D1024M
清除: $ bitbake -c cleansstate u-boot
编译: $ bitbake -c compile u-boot -f
部署: $ bitbake -c deploy u-boot
生成带有imx专有head信息的u-boot才能用于启动:
$ bitbake imx-boot
文件位置:tmp\deploy\images\imx8mqevk\imx-boot-imx8mqevk-sd.bin
cleansstate - 清除状态
patch - 设置本地编译(重要)
compile -f - 编译命令
deploy - 部署(将编译好的文件放至tmp/deploy目录下)
-v 显示运行状态
源码位于:tmp/work/imx8mqevk-poky-linux/u-boot-imx/2017.03-r0/git
WARNING: Host distribution "ubuntu-18.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.
警告:主机发行版“ubuntu-18.04”尚未通过此版本的构建系统进行验证;您可能会遇到意外的失败。建议您使用经过测试的发行版。
原因分析: 系统版本太高,尚未经过验证,实际上不影响使用,建议还是采用debian8/ubuntu16.0进行开发。
scripts/kconfig/mconf.o: In function `show_help':
mconf.c:(.text+0x914): undefined reference to `stdscr'
ncurses-dev没有安装的原因,安装后即可。
WARNING: /opt/imx8/fsl-release-yocto/sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-kernel/linux/linux-imx_4.9.88.bb.do_compile is tainted from a forced run
提示强制重新编译(-f选项),正常情况,无需理会。