如何在中国境内 加快NXP MPUs BSP的下载速度与分析方式 (Yocto 篇)

在项目支持过程中, 项目初始阶段,提供了相关说明文件后, 首先最常收到的反馈是,公司对外的速度慢,BSP相关仓库几乎都是国外的链结,下载龟速,请提供已经完整下载的BSP包,提供了真正完整下载的仓库&下载池备份后,又嫌弃太大,不知如何使用与复用该宝贝.
为此有所感,想记录并渐进的分享一些心得,为了标题,如何吸引读者进来阅读该分享内容,思考了许久.具体的主题应该是,如何在中国境内,加快NXP MPUs 家族,使用Yocto Project的 Linux BSP的建制,其仓库下载与分析方式.

Yocto项目的构建主机基于OpenEmbedded(OE)项目,使用BitBake工具构建完整的Linux 镜像. 关于Yocto project的bitbake工具使用,与新增meta-layer, 修改kernel / uboot 等并不在该篇文章内着墨, 在NXP MPU族群中,各别MPU的开发环境建制与倚赖工具,可以在NXP官方各别的Yocto Project User's Guide内得知, 也可以同时在大大通的博文专区内,找到其他大神博主的分享.

该篇主要是介绍,如何在中国境内,利用国内的资源加快仓库下载过程中的速度,与如何分析.

  • 起头难.
在阅读使用说明后, 好不容易安装好上位机的必须套件, 排除了repo工具的自更新问题, 开始使用 repo 工具初始化下载清单文件库或指定与下载对应分支清单文件后, 开始基于清单文件内的仓库到本地,终端就停留着,久久才更新下进度.


  • 透过repo初始化,并同步欲下载的分支清单列表.
format: repo init -u 网站 -b 分支 -m <指定的清单列表>
example: repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-zeus -m imx-5.4.47-2.2.0.xml
  • 替换成国内的镜像网址.
http://source.codeaurora.cn -mirror-> https://source.codeaurora.org 

example: repo init -u http://source.codeaurora.cn/external/imx/imx-manifest -b imx-linux-zeus -m imx-5.4.47-2.2.0.xml
 初始化时替换成 国内的镜像. 我的环境下,其下载速度基本上是 3MB/s 以上
初始化加速04


  • repo工具的自更新问题
repo工具,是由python所写的脚本, 由google提供,它会在每次初始化时, 先到官方的网站上确认是否有新的更新, 因为国内网路长城, 若没有透过科学上网,基本上屏蔽了google的相关网站, 没事国内的学术网站有其镜像,例如清华, 由于repo本身是python脚本,一般是修改脚本内容,将其连线更新的网址换成国内镜像. 该方式比较不建议,主要是目前新版本的ubuntu都已经有repo的套件(虽然不一定是最新的repo版本) , 若直接修改系统工具库内的repo,后续可能也不好维护更新, 在阅读repo脚本后,有一环境变数 "REPO_URL"定义着摆放的网址. 可以在工作主机的终端环境下,设置该环境变数. ( 直接在 shell下执行该指令,或加入自己的home目录下的 .bashrc 内(如果你常用的shell是bash)
export REPO_URL="https://mirrors.tuna.tsinghua.edu.cn/git/git-repo"

  • 同步, 清单文件透露的讯息
清单文件解析1
清单文件解析2
修改清单文件内的截取地址描述.
修改清单文件列表的 网址描述 , 替换成国内的镜像网址.

http://source.codeaurora.cn -mirror-> https://source.codeaurora.org
https://github.com.cnpmjs.org -mirror-> https://github.com

修改完清单文件再同步,大大的缩短了时间. 如在我的环境下, 费时 2m23.386s
下载时间比较01
  • 好不容易同步完相关的meta source文件后, 初始化并建立了对应MPU开发板的工作目录, 使用BitBake工具构建生成对应的镜像文件, 开始了不知道结束时间的等待.例如:  bitbake , 第一次的建构,会先各关联套件的代码从托管网站上下载下来, default的位置摆放在 /downloads 目录下, 称之下载池(Download pool)内,bitbake工具,会基于bblayer的描述内容去对应的指定托管网站例如github或存放的网站下载点下载相关联的套件


若照先前的逻辑,修改对应套件bbalyer的描述脚本. 更换位置 --> 缺点.要针对每一个相依套件的bblayer描述脚本修改. 真心费时费力~
例如 fmt package ,对应的 bblayer描述脚本如下. 需将其URL修改成镜像地址
bblayer script


  • 善用 gitconfig的'替代 insteadOf'功能描述:
由于repo脚本 最终调用的还是 git , bitbake工具与yoctro 套件库的bblayer描述,大部份也都是透过git来下载同步仓库. 我门可以用git的取代功能来置换. 只要维护该置换表,无需改动原始的bblayer脚本. 下列我整理了一些常用的镜像,这在国内网路长城的环境下可以非常大的加快克隆仓库的速度. (重点就这个. 拿去使用吧!!)
.gitconfig ,git工具的设置文件. 摆放在对应账号home文件目录下. 该文件属性为text,可以用文字编辑器打开编修.
语法.
[url "]替换的地址字串"]
insteadOf = 欲取代的目标地址字串
[url "http://mirrors.ustc.edu.cn/aosp/"]
insteadOF = https://android.googlesource.com

[url "https://github.com.cnpmjs.org/google/boringssl"]
insteadOF = https://boringssl.googlesource.com/boringssl

[url "http://source.codeaurora.cn"]
insteadOF = https://source.codeaurora.org

[url "http://source.codeaurora.cn"]
insteadOF = git://source.codeaurora.org

[url "https://github.com.cnpmjs.org/YoeDistro/meta-python2"]
insteadOF = https://github.com.cnpmjs.org/openembedded/meta-python2

[url "https://github.com.cnpmjs.org/qemu/"]
insteadOF = https://git.qemu.org/git/

[url "https://github.com.cnpmjs.org/lgirdk/poky"]
insteadOF = https://git.yoctoproject.org/git/poky

[url "https://github.com.cnpmjs.org/qt/"]
insteadOf = git://code.qt.io/qt/

[url "https://github.com.cnpmjs.org/"]
insteadOf = https://code.qt.io/

[url "https://github.com.cnpmjs.org/qt-creator"]
insteadOF= git://code.qt.io/qt-creator

[url "https://github.com.cnpmjs.org/"]
insteadOF = git://github.com/

[url "https://github.com.cnpmjs.org/"]
insteadOF = https://github.com/

[filter "lfs"]
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
[url "https://mirrors.sustech.edu.cn/AOSP/"]
insteadof = https://android.googlesource.com
git_instead

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论