HonestQiao 发表于 2023-12-20 15:24

【米尔-TI AM62x开发板-试用评测】使用Yocto工具构建开发板完整镜像和SDK工具

<div class='showpostmsg'><p>米尔官方为米尔-TI AM62x开发板提供了两种已经制作好的镜像:</p>

<p> &nbsp;可以直接使用上述镜像进行烧录和使用。</p>

<p>&nbsp;</p>

<p>因为后续要在这块开发板上,进行应用的开发,所以我选择了参考官方资料,进行完整系统的编译,以及SDK工具的构建,能够把步骤顺利的完成,在后续的开发过程中,进行应用的编译,一般就不会遇到什么大的问题了。</p>

<p>&nbsp;</p>

<p><strong>一、硬件环境准备</strong></p>

<p>首先是开发板和SD卡,开发板已经有了,SD卡建议选择一块高速的SD卡,至少32G。</p>

<p>然后是编译环境用的系统硬件,一定要CPU主频高、核心多、内存大,因为编译系统,真的很耗时的。</p>

<p>官方推荐的硬件:Yocto 项目的构建对开发主机的要求比较高,要求处理器具有双核以上 CPU,8GB 以 上 内存,500GB 硬盘或更高配置。可以是安装 Linux 系统的主机,也可以是运行 Linux 系 统的虚拟机。</p>

<p>&nbsp;</p>

<p>双核?8G?开什么玩笑,这跑的动嘛?</p>

<p>&nbsp;</p>

<p>我所使用的硬件如下:</p>

<p> &nbsp;&nbsp;&nbsp;</p>

<p>这款CPU是10核心,20线程的。内存嘛,配这个CPU内存当然不会少了。</p>

<p>另外,编译剩余的磁盘空间,建议最好准备150G备用。注意,是剩余磁盘空间。</p>

<p>&nbsp;</p>

<p><strong>二、系统环境准备</strong></p>

<p>官方推荐的系统环境是&nbsp;Ubuntu20.04 64bit ,我实际使用色环境是Ubunt 23.04 64bit,也成功完成了所需要的编译工作。</p>

<p>为了更好的使用apt下载安装软件包,可以参考:&nbsp;<a href="http://tuna.tsinghua.edu.cn/help/ubuntu/" target="_blank">http://tuna.tsinghua.edu.cn/help/ubuntu/</a>&nbsp;来进行apt源的设置,以便让下载速度嗖嗖嗖的快。</p>

<p>谁知完成后,使用下面的命令,安装软件包:</p>

<pre>
<code class="language-bash">apt update
apt upgrade
apt install -y git build-essential \
diffstat texinfo gawk chrpath socat doxygen dos2unix python3 bison \
flex libssl-dev u-boot-tools mono-devel mono-complete curl lrzsz lzop \
python3-distutils pseudo python3-sphinx g++-multilib bc python3-pip \
libc6-dev-i386 jq git-lfs pigz zstd liblz4-tool cpio file autoconf automake \
xinetd tftpd-hpa nfs-kernel-server minicom libncurses5-dev dos2unix screen \
zstd lz4 python3-pyelftools python3-setuptools swig repo

git config --global user.name "你在github的用户名"
git config --global user.email "你在github的邮箱"
git config --list</code></pre>

<p>上述工作做完,就准备好了系统环境了。</p>

<p>&nbsp;</p>

<p><strong>三、系统编译SDK准准备</strong></p>

<p>首先,要从&nbsp;<a href="http://down.myir-tech.com/MYD-YM62X/" target="_blank">http://down.myir-tech.com/MYD-YM62X/</a>&nbsp;下载&nbsp;<a href="http://down.myir-tech.com/MYD-YM62X/03_Tools.zip" target="_blank">03_Tools.zip</a>,下载后解压备用。</p>

<p>我这边的操作步骤如下:</p>

<pre>
<code class="language-bash">mkdir -p ~/Projects/myir
cd ~/Projects/myir

wget -c http://down.myir-tech.com/MYD-YM62X/03_Tools.zip
unzip 03_Tools.zip

</code></pre>

<p>然后,安装系统编译SDK:</p>

<pre>
<code class="language-bash">cd ~/Projects/myir/03_Tools/Toolchain
chmod u+x arago-2023.04-toolchain-2023.04.sh
./arago-2023.04-toolchain-2023.04.sh

</code></pre>

<p>运行后,会提示安装到哪里,我选择安装到:/opt/</p>

<p>&nbsp;</p>

<p>安装完成后,应用其对应的环境设置,并检查环境是否生效:</p>

<pre>
<code class="language-bash">. /opt/arago-2023.04/environment-setup-aarch64-oe-linux

$CC -v</code></pre>

<p>输出如下,表示系统编译SDK环境设置成功:</p>

<p></p>

<p>&nbsp;</p>

<p>使用tree命令查看安装的目录结果如下&nbsp;:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p><strong>四、系统源码准备</strong></p>

<p>首先,要从&nbsp;<a href="http://down.myir-tech.com/MYD-YM62X/" target="_blank">http://down.myir-tech.com/MYD-YM62X/</a>&nbsp;下载&nbsp;<a href="http://down.myir-tech.com/MYD-YM62X/04_Sources.zip" target="_blank">04_Sources.zip</a>,下载后解压备用。</p>

<p>我这边的操作步骤如下:</p>

<pre>
<code class="language-bash">cd ~/Projects/myir

wget -c http://down.myir-tech.com/MYD-YM62X/04_Sources.zip
unzip 04_Sources.zip

</code></pre>

<p>然后解压对应的Yocto源码包:</p>

<pre>
<code class="language-bash">mkdir ~/Projects/myir/myd-ym62x-yocto
cd ~/Projects/myir/myd-ym62x-yocto
unzip ../04_Sources/myd-ym62x-yocto.zip

# 查看目录结构
tree -L 2 ../myd-ym62x-yocto</code></pre>

<p>解压后的文件结构如下:</p>

<p> &nbsp;</p>

<p>其中,build和downloads,都是在编译过程中生成的。</p>

<p>&nbsp;</p>

<p>另外,官方还提供了从github下载源码的方式,感兴趣的可以了解尝试。为了稳妥起见,我直接用官方提供的压缩包解压了使用。</p>

<p>&nbsp;</p>

<p><strong>五、系统镜像构建</strong></p>

<p>通过前面的步骤,现在环境和源码都准备好了,可以开始正式编译系统了。</p>

<p>1. 环境配置:</p>

<p>首先进行环境配置:</p>

<pre>
<code class="language-bash">cd ~/Projects/myir/myd-ym62x-yocto/oe-layersetup
./oe-layertool-setup.sh -f configs/processor-sdk/processor-sdk-09.00.00-myd-am62x-config.txt
</code></pre>

<p>配置完成后,会生成build目录,然后应用配置:</p>

<pre>
<code class="language-bash">. conf/setenv</code></pre>

<p>&nbsp;</p>

<p>2. 下载工具源码包:</p>

<p><span id="cke_bm_16513S" style="display: none;">&nbsp;</span>正式编译前,需要做一些修改:</p>

<pre>
<code class="language-bash">cd build
vim conf/local.conf
</code></pre>

<p>修改其中的DL_DIR,具体为:~/Projects/myir/myd-ym62x-yocto/oe-layersetup/downloads</p>

<p>&nbsp;</p>

<p>然后执行命令,下载需要的软件包:</p>

<pre>
<code class="language-bash">bitbake myir-image-full --runall=fetch</code></pre>

<p>执行后,会呼啦呼啦的下载软件包。</p>

<p> &nbsp;</p>

<p>需要提醒的是,这个步骤,耗时比较长,比较长,比较长。也可以参考官方说明,从百度网盘下载。可是,百度网盘,垃圾,不用会员,比个龟都慢。还是老实用命令下载吧。</p>

<p>这个命令,运行完了,再次运行,连续三次,确保最后输出:</p>

<p>那就说明,都下载好了,可以继续进行了。</p>

<p>&nbsp;</p>

<p>然而,实际情况,并没有这么顺利。我在执行这条命令的过程中,老是提示&nbsp;quectel-cm 下载错误。</p>

<p>研究了一番,做了一点简单的处理,给解决了。</p>

<p>修改这个命令配置文件:</p>

<pre>
<code class="language-bash">vim ~/Projects/myir/myd-ym62x-yocto/oe-layersetup/sources/meta-myir/meta-myir-bsp/recipes-connectivity/quectel-cm/quectel-cm.bb
</code></pre>

<p>具体修改:</p>

<pre>
<code class="language-ini">#S_SRC ?= "git://github.com/MYIR-TI/quectel-cm.git;protocol=https"
S_SRC ?= "https://github.com/MYIR-TI/quectel-cm.git;branch=master"
SRC_URI = "54ac7475b83c08fa4eafdfb3377381fd42e87dbcf32290fc1b11260af0f728a8"
</code></pre>

<p>然后再次执行:</p>

<pre>
<code class="language-bash">bitbake myir-image-full --runall=fetch</code></pre>

<p>执行成功后,再次执行两次,确保没有问题。</p>

<p>&nbsp;</p>

<p>最后,再手工下载一下:</p>

<pre>
<code class="language-bash">cd ~/Projects/myir/myd-ym62x-yocto/oe-layersetup/build/arago-tmp-default-glibc/work/aarch64-oe-linux/quectel-cm/1.0-r0
git clone https://github.com/kmilo17pet/quectel-cm.git git</code></pre>

<p>&nbsp;</p>

<p>3. 构建系统完整镜像包</p>

<p>现在,就可以用命令,进行系统构建了:</p>

<pre>
<code class="language-bash">bitbake myir-image-full</code></pre>

<p>执行后,会开始进行各项构建工作,输出如下:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p><strong><span style="color:#e74c3c;">特别提醒,这个过程,是耗时最长,CPU烧得最厉害的阶段了</span></strong>,大家看一看我这个i9-10900吧:</p>

<p> &nbsp; &nbsp;</p>

<p>你可能需要10个小时,或者更长的时间,才会完成所有的编译工作。</p>

<p>&nbsp;</p>

<p>另外,中途,你还得不时来看看,有没有遇到问题。因为,我这边,在编译过程中,真还就遇到问题了:</p>

<p> &nbsp;</p>

<p>我也不清楚它这个的具体产生的原因,看起来不像是因为我的系统版本太高的缘故,是给json.c、json.h打patch打上去有问题。</p>

<p>既然是打patch有问题,那咱就手动打好了,具体操作如下:</p>

<pre>
<code class="language-bash">vim ./arago-tmp-default-glibc/work/aarch64-oe-linux/systemd/1_250.5-r0.arago7/git/patches/0001-shared-json-allow-json_variant_dump-to-return-an-err.patch</code></pre>

<p>然后参考下图,把红框的部分,给去掉,直接删掉好了:</p>

<p> &nbsp;</p>

<p>然后修改json.c文件:</p>

<pre>
<code class="language-bash">vim arago-tmp-default-glibc/work/aarch64-oe-linux/systemd/1_250.5-r0.arago7/git/src/shared/json.c</code></pre>

<p>找到代码中对应的位置,修改为下面的样子:</p>

<p> &nbsp;</p>

<p>然后,继续执行:</p>

<pre>
<code class="language-bash">bitbake myir-image-full</code></pre>

<p>直到漫长的等待过后,执行完成,再次执行,再次执行,结果如下:</p>

<p> &nbsp;</p>

<p>并检查构建的结果:</p>

<p> &nbsp;</p>

<p>现在,系统镜像构建完成了,myir-image-full-myd-am62x-20231218090554.rootfs.wic.xz 可以用于烧录到SD卡了。</p>

<p>&nbsp;</p>

<p>4. 烧录镜像启动系统</p>

<p>我选择用balenaEtcher进行烧录,源直接选择sz文件,目标选择要烧录的SD卡,即可开始Flash:</p>

<p></p>

<p>&nbsp;</p>

<p>烧录完成,把开发板断电,把拨码开关拨到SD卡位置:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>再插上SD卡,上电,系统启动后,进入默认的图形界面,点击右上角的小图标,可以打开窗口运行命令:</p>

<p> &nbsp;</p>

<p>看起来,负载可真高啊。</p>

<p>&nbsp;</p>

<p>经过官方技术人的指导,才知道:6231是单核的性能是不够运行weston,我们默认应该有写判断如果是6231会自动开启lvgl的demo,您只要输入命令systemctl disable weston关掉weston就可以了。</p>

<p>&nbsp;</p>

<p><strong>六、构建开发用的SDK工具链</strong></p>

<p>前面安装的SDK是系统编译用的,要为这个系统进行应用开发,则需要应用开发SDK工具链。</p>

<p>在完整镜像构建成功的前提下,应用开发SDK工具链的构建,就较为简单了,一条命令即可:</p>

<pre>
<code class="language-bash">bitbake -c populate_sdk myir-image-full

</code></pre>

<p>构建成功后,再执行两遍,最终输出如下:</p>

<p>&nbsp;</p>

<p>这个部分的构建,具体需要多久,我就没有统计了,反正比上面的系统构建时间要短就是了。</p>

<p>构建的结果如下:</p>

<p> &nbsp;</p>

<p>生成的应用开发SDK工具链就可以用于安装了来为应用开发提供支持了,后续应用开发过程中,再做对应的分享。</p>

<p>&nbsp;</p>

<p><strong>七、总结</strong></p>

<p>总的来说,米尔提供的这套Yocto构建系统的环境和源码,使用起来,还是比较顺利的,除了修改了两个小小的问题,以及需要较多系统资源和较长时间外,其他还没有遇到什么拦路虎。</p>

<p>另外,还在许还有bootloader和kernel等的编译,相信在此基础上,应该都不会有什么问题了。</p>

<p>在研究学习的过程中,遇到了问题及时提出来,米尔的技术人员大力帮助,帮忙解决。</p>

<p>我相信这将会是一场非常愉快的学习体验过程。</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

lugl4313820 发表于 2023-12-20 15:33

<p>编译就是耗时间耗硬盘,想想就头大呀,帮主大佬这帖子写得也是太辛苦了!</p>

HonestQiao 发表于 2023-12-21 13:41

lugl4313820 发表于 2023-12-20 15:33
编译就是耗时间耗硬盘,想想就头大呀,帮主大佬这帖子写得也是太辛苦了!

<p>极其不好,能把人给编挂!!!</p>

beyond_笑谈 发表于 2024-4-26 09:18

<p>看了一下用户指南中Yocto对电脑配置的要求,再看看电脑配置,默默收起了板卡</p>
页: [1]
查看完整版本: 【米尔-TI AM62x开发板-试用评测】使用Yocto工具构建开发板完整镜像和SDK工具