记录下如何搭建NXP i.MX 8M 的开发环境。
1. 看文档 / 找资料
不管任何时候,接触任何新的平台或学习新的知识,首先就是看官网提供的文档,或搜索下是否有相关的资料。
- 找到开发板的文档入口 : Evaluation Kit for the i.MX 8M Mini Applications Processor 详细介绍了开发板的资源以及相关资料下载路径。
- 详细介绍了各个文档的作用
2. 源码下载
- 阅读下载的文章中i.MX_Yocto_Project_User’s_Guide.pdf详细介绍了下载源码的步骤。
// 下载repo 工具
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
// 下载源码
mkdir imx-yocto-bsp
cd imx-yocto-bsp
repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-rocko -m imx-4.9.88-2.0.0_ga.xml
repo sync
- 源码下载过程遇到的错误1 : repo init 提示 fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
➜ imx-yocto-bsp ./repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-rocko -m imx-4.9.88-2.0.0_ga.xml
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: error [Errno 101] Network is unreachable
fatal: cloning the git-repo repository failed, will remove '.repo/repo'
// 解决方案:
先单独克隆repo,然后将git-repo里面的repo文件复制到bin目录,在同步源码的工作目录新建.repo文件夹,把git-repo重命名为repo复制到.repo目录下:
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
参考解决:Cannot get http://gerrit.googlesource.com/git-repo/clone.bundle
- 源码下载过程遇到的错误2 : ImportError: cannot import name 'spawn’
// 运行错误
➜ imx-yocto-bsp bitbake fsl-image-validation-imx
Traceback (most recent call last):
File "/home/mike/Work/nxp-imx8/imx-yocto-bsp/sources/poky/bitbake/bin/bitbake", line 31, in <module>
import bb
File "/home/mike/Work/nxp-imx8/imx-yocto-bsp/sources/poky/bitbake/lib/bb/__init__.py", line 79, in <module>
from bb import fetch2 as fetch
File "/home/mike/Work/nxp-imx8/imx-yocto-bsp/sources/poky/bitbake/lib/bb/fetch2/__init__.py", line 1843, in <module>
from . import clearcase
File "/home/mike/Work/nxp-imx8/imx-yocto-bsp/sources/poky/bitbake/lib/bb/fetch2/clearcase.py", line 72, in <module>
from distutils import spawn
ImportError: cannot import name 'spawn'
// 解决方案
安装sudo apt-get install python3-distutils 之后解决
- 源码下载过程遇到的错误3 : ERROR: Unable to start bitbake server
ERROR: Unable to start bitbake server
ERROR: Last 10 lines of server log for this session (/home/mike/Work/nxp-imx8/imx-yocto-bsp/bitbake-cookerdaemon.log):
self.cooker = bb.cooker.BBCooker(self.configuration, self.featureset)
File "/home/mike/Work/nxp-imx8/imx-yocto-bsp/sources/poky/bitbake/lib/bb/cooker.py", line 197, in __init__
self.initConfigurationData()
File "/home/mike/Work/nxp-imx8/imx-yocto-bsp/sources/poky/bitbake/lib/bb/cooker.py", line 356, in initConfigurationData
self.databuilder.parseBaseConfiguration()
File "/home/mike/Work/nxp-imx8/imx-yocto-bsp/sources/poky/bitbake/lib/bb/cookerdata.py", line 316, in parseBaseConfiguration
raise bb.BBHandledException
bb.BBHandledException
ERROR: The following required tools (as specified by HOSTTOOLS) appear to be unavailable in PATH, please install them in order to proceed:
chrpath
//解决方案
sudo apt-get install chrpath
sudo apt-get install texinfo
参考Unable to connect to bitbake server
2.1 编译
- 源码的编译主要使用fsl-setup-release.sh脚本完成
- 用法如下
DISTRO=<distro name> MACHINE=<machine name> source fsl-setup-release.sh -b <build dir>
// DISTRO
DISTRO= <distro configuration name> is the distro, which configures the build environment and it is stored in meta-fsl-
bsp-release/imx/meta-sdk/conf/distro .
对应源码中的 sources/meta-fsl-bsp-release/imx/meta-sdk/conf/distro/fsl-imx-x11.conf,可以看到
DISTRO = "fsl-imx-x11"
// MACHINE
MACHINE= <machine configuration name> is the machine name which points to the configuration file in conf/machine in
meta-freescale and meta-fsl-bsp-release.
// 编译输出的目录
-b <build dir> specifies the name of the build directory created by the fsl-setup-release.sh script.
通过分析 fsl-setup-release.sh 脚本了解的一些信息
代码语言:javascript复制// MACHINE默认参数为imx6qpsabresd
if [ -z "$MACHINE" ]; then
echo setting to default machine
MACHINE='imx6qpsabresd'
fi
3. 固件烧录
- NXP 固件烧录借助于uuu (Universal Update Utility) mfgtools,全平台覆盖