在线时间4746 小时
UID3441752
注册时间2017-11-21
NXP金币82800
TA的每日心情 | 开心 2025-7-11 08:53 |
---|
签到天数: 301 天 连续签到: 2 天 [LV.8]以坛为家I
管理员
  
- 积分
- 39232
- 最后登录
- 2025-7-18
|
NXP i.MX 8M Mini 环境的搭建
记录下如何搭建NXP i.MX 8M 的开发环境。
1. 看文档 / 找资料
不管任何时候,接触任何新的平台或学习新的知识,首先就是看官网提供的文档,或搜索下是否有相关的资料。
找到开发板的文档入口 : Evaluation Kit for the i.MX 8M Mini Applications Processor 详细介绍了开发板的资源以及相关资料下载路径。
详细介绍了各个文档的作用
2. 源码下载
阅读下载的文章中i.MX_Yocto_Project_User’s_Guide.pdf详细介绍了下载源码的步骤。
- <font size="3" face="微软雅黑">// 下载repo 工具
- curl http://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
- // 下载源码
- mkdir imx-yocto-bsp
- cd imx-yocto-bsp
- repo init -u http://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-rocko -m imx-4.9.88-2.0.0_ga.xml
- repo sync
- </font>
复制代码 源码下载过程遇到的错误1 : repo init 提示 fatal: Cannot get http://gerrit.googlesource.com/git-repo/clone.bundle
- <font size="3" face="微软雅黑">➜ imx-yocto-bsp ./repo init -u http://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-rocko -m imx-4.9.88-2.0.0_ga.xml
- fatal: Cannot get http://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 http://gerrit-googlesource.lug.ustc.edu.cn/git-repo
- </font>
复制代码 源码下载过程遇到的错误2 : ImportError: cannot import name 'spawn’
- <font size="3" face="微软雅黑">// 运行错误
- ➜ 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 之后解决
- </font>
复制代码 源码下载过程遇到的错误3 : ERROR: Unable to start bitbake server
- <font size="3" face="微软雅黑">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
- </font>
复制代码 下载最新代码
- <font size="3" face="微软雅黑">//查看最新的提交
- http://source.codeaurora.org/external/imx/imx-manifest/?h=imx-linux-rocko
- // 下载最新代码
- To use this manifest repo, the 'repo' tool must be isntalled first.
- --------------------------------------------------------
- $: mkdir ~/bin
- $: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
- $: chmod a+x ~/bin/repo
- $: PATH=${PATH}:~/bin
- To excute
- $: mkdir <release>
- $: cd <release>
- $: repo init -u http://source.codeaurora.org/external/imx/fsl-arm-yocto-bsp -b <branch name> [ -m <release manifest>]
- // 下载imx-linux-sumo分支代码
- repo init -u http://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-virt-4.14.98-4.11-0.10_ga.xml
- </font>
复制代码 2.1 编译
源码的编译主要使用fsl-setup-release.sh脚本完成
DISTRO=fsl-imx-x11 source fsl-setup-release.sh -b build , 详细用法如下
- <font size="3" face="微软雅黑">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.
- </font>
复制代码 通过分析 fsl-setup-release.sh 脚本了解的一些信息
- <font size="3" face="微软雅黑">// MACHINE默认参数为imx6qpsabresd
- if [ -z "$MACHINE" ]; then
- echo setting to default machine
- MACHINE='imx6qpsabresd'
- fi</font>
复制代码 build 目录中执行 bitbake -k core-image-minimal , -k 代表 : 发生错误后尽可能继续执行。 编译过程持续 2~3 h
2.2 分析output
参考Yocto Project Reference Manual -> 5.2. The Build Directory - build/ 了解编译成功后各个目录含义
build/downloads/ : 下载的源代码,可以通过修改 build/conf/local.conf中的DL_DIR ?= "${TOPDIR}/downloads"改变路径
build/sstate-cache/ : 含共享状态缓存,可以通过修改 build/conf/local.conf中的SSTATE_DIR ?= "${TOPDIR}/sstate-cache"改变路径
build/tmp/ : 构建系统的输出目录。 可以通过修改 build/conf/local.conf中的TMPDIR = “${TOPDIR}/tmp”"改变路径
3. 固件烧录
NXP 固件烧录借助于uuu (Universal Update Utility) mfgtools,全平台覆盖
Uboot 中通过fastboot 进入烧录模式
- <font size="3" face="微软雅黑">//fastboot devices
- u-boot=> fastboot devices
- switch to partitions #0, OK
- mmc1(part 0) is current device
- Starting download of 16776232 bytes
- ..........................................................................
- </font>
复制代码 PC端通过UUU 进行烧录
- <font size="3" face="微软雅黑">sudo ./uuu -b emmc_all imx-boot-imx8mmevk-sd.bin-flash_evk sdcard.img
- </font>
复制代码
文章出处:CSDN
|
|