<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[在MQ-R（F133）上 进行全志Melis-4.0(rt-thread内核)环境搭建与初步编译介绍]]></title><description><![CDATA[<h3>什么是Melis？</h3>
<p dir="auto">Melis是全志科技自研的一套rtos系统。自全志科技创建以来，该系统就已经问世，并持续抗战了近十年，其主要应用其自家的F系列芯片产品上，在MP3与老人机非常流行的时代，该系统配合着其F系列的芯片，真的是能抗能打，早在2012-2013年的时候，Melis的装机量就已经过亿，但因为其属于自研系统，全志科技并没有将其开源，导致虽装机量很多，但是很少人知道。<br />
  Melis之所以能抗战那么久，或者说全志科技之所以能在那个芯片行业并不出彩的年代坚持下来，我觉得主要归功于其F1C100s/F1C200s这个代的芯片。这款芯片差不多是十年前的产品，但是因为其具有很强的编解码能力，以及异于常人的性价比，现如今依然活跃在各个微媒体市场。<br />
  Melis经过了多个迭代，现如今配合着其最新推出的F133（risc-V）芯片，推出了最新的Melis4.0系统，并使用了更多人熟悉的RT-thread内核，在GitHub上，部分进行了开源，引领广大开发爱好者参与进risc-V的生态建设中。最近想用F133做一点有趣的开发，因此也开始研究Melis4.0。<br />
  个人觉得，通过学习melis系统，可以让学习者更了解系统的构成，什么是系统调用？系统是如何加载模块的？什么是BSP？等，对于学习者来说，是非常不错的入门选择。</p>
<h3>开发环境</h3>
<ul>
<li>Ubuntu22.04虚拟机</li>
<li>MQ-R（F133） 芒果派开发板</li>
</ul>
<h3>代码下载</h3>
<p dir="auto">GitHub的项目地址如下：</p>
<pre><code>https://github.com/Tina-Linux/d1s-melis
</code></pre>
<p dir="auto">仓库的简介提示，如果需要编译代码，需要手动下载一下相应的工具链并将工具链放在对应目录里。</p>
<p dir="auto">工具链地址如下：</p>
<pre><code>https://github.com/Tina-Linux/d1s-melis/releases
</code></pre>
<p dir="auto">建议直接下载这个，因为工程中默认的也是这个</p>
<p dir="auto"><img src="/assets/uploads/files/1666839377410-866b889317404ca1b2f9ddc9e2eec3a7.png" alt="866b889317404ca1b2f9ddc9e2eec3a7.png" class=" img-responsive img-markdown" width="1025" height="475" /></p>
<p dir="auto">代码下载好后，解压。<strong>并将下载好并解压好的工具链放在代码的toolchain目录下。</strong>（我这里将原项目目录更名为了source，并不影响其它）</p>
<p dir="auto"><img src="/assets/uploads/files/1666839395519-59aa7ebbbda34e6b8e9e03fca377ef1b.png" alt="59aa7ebbbda34e6b8e9e03fca377ef1b.png" class=" img-responsive img-markdown" width="935" height="515" /></p>
<p dir="auto">一切准备就绪后，即可开始编译。如果是新的系统，建议先安装一些依赖库，后续可能会用到。</p>
<pre><code>sudo apt install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev
</code></pre>
<h2>编译</h2>
<h3>环境变量</h3>
<p dir="auto">在代码编译之前，我们可能需要设置很多环境变量（lunch 、croot、pack等），因为每一次的环境变量都是比较固定的，因此，项目中，将这些初始化环境变量的操作，都整合成了两个脚本，分别是"<a href="http://envsetup.sh" target="_blank" rel="noopener noreferrer nofollow ugc">envsetup.sh</a>"和“<a href="http://melis-env.sh" target="_blank" rel="noopener noreferrer nofollow ugc">melis-env.sh</a>”。因为melis-env.sh最终会自动调用“<a href="http://envsetup.sh" target="_blank" rel="noopener noreferrer nofollow ugc">envsetup.sh</a>”，因此，我们只需要执行“<a href="http://melis-env.sh" target="_blank" rel="noopener noreferrer nofollow ugc">melis-env.sh</a>”即可</p>
<pre><code>#初始化环境变量
melis-env.sh
</code></pre>
<p dir="auto">初始化环境变量后，我们需要通过“lunch”来选择我们需要编译的项目,lunch是通过扫描projects文件夹下的文件夹，进行识别一共有多少套方案，lunch选中后，系统的编译参数、打包参数，运行参数等，就会使用对应方案文件夹中的配置文件。（具体为什么叫lunch，原因不详，或许本应该是launch？学习英语任重道远！）</p>
<h3>对应方案</h3>
<pre><code>#通过lunch来选择要编译的项目
lunch
</code></pre>
<p dir="auto"><img src="/assets/uploads/files/1666839439881-238c5f319f3f4294bd88fb32c7027bdb.png" alt="238c5f319f3f4294bd88fb32c7027bdb.png" class=" img-responsive img-markdown" width="723" height="231" /></p>
<p dir="auto">因为我使用的是麻雀的开发板，因此我这里选择3.</p>
<h3>编译</h3>
<p dir="auto">以上流程走完后，原工程是可以直接make的，但是第一次编译，或者选择了不同方案后编译，建议都是要clean一下，重新lunch一次，避免环境不干净。</p>
<pre><code>#先clean一下
make clean

#再把方案清一下
make distclean

#重新lunch,再选择一次方案
lunch

#执行make操作
make
</code></pre>
<p dir="auto">注意，如果你在kconfig中，增加了某些选项，但是没有在deconfig中增加对应的配置，直接make可能会报错。需要通过make menuconfig来重新生成默认的编译配置。</p>
<pre><code>#通过make menuconfig选择编译参数
make menuconfig
</code></pre>
<p dir="auto">注意：curses.h: No such file or directory ，那是因为环境没弄好，“<strong>sudo apt install libncurses5-dev</strong>” 即可</p>
<p dir="auto"><img src="/assets/uploads/files/1666839482473-2326e51f410b4585ac031a1e9fb66b74.png" alt="2326e51f410b4585ac031a1e9fb66b74.png" class=" img-responsive img-markdown" width="1596" height="811" /></p>
<p dir="auto">第一次编译，直接保存即可。配置默认是保存在当前目录下的 “.config”文件中，最好不要改文件名。如果不想每次编译都make menuconfig,那么就将当前的“.config”的内容，更新到对应方案目录下的deconfig文件中。比如我要改的话，那我就需要将“.config”文件中的内容，全部替换到**“projects/d1s-mq/configs/deconfig”**文件中，这样每次lunch之后，系统默认来这里来拿编译参数。</p>
<p dir="auto">以上完成后，就可以直接make了，如果没改过任何东西的话，是可以直接编译通过的。如果不通过，可能要检查一下自己的环境是否安装完善，勤加百度，即可解决问题。</p>
<h3>打包</h3>
<p dir="auto">编译成功后，可以通过pack，将编译好的文件，全部打包成一个.img的固件。<br />
因为固件可能是用于卡烧录的，用于nor烧录的，用于nand烧录的，根据烧录方式的不同，需要搭配不同的参数，默认是打包生成nor烧录的固件。</p>
<pre><code>#通过pack指令，打包生成固件（默认生成nor固件）
pack

#生成nand烧录固件
pack -a nand

#生成卡烧录的固件
pack -a card
</code></pre>
<p dir="auto">最终的固件将会生成在“out/对应方案/”目录下。</p>
<p dir="auto">注意：如果出现如下错误：</p>
<p dir="auto"><img src="/assets/uploads/files/1666839521389-78a656727f054bd08345a4376815e359.png" alt="78a656727f054bd08345a4376815e359.png" class=" img-responsive img-markdown" width="1539" height="343" /></p>
<p dir="auto">这个时候，打包是没有成功的，cd到对应目录下，查看文件夹下，又是存在这个dragon文件，有点神奇。其实是因为dragon这个程序是在32位机器上编译出来的，这是32位的程序，在64位的Ubuntu中运行需要提前安装32位的库。</p>
<p dir="auto">请执行操作：</p>
<pre><code>sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 -y
sudo apt install lib32z1 -y
</code></pre>
<p dir="auto">重新pack后，没有提示，打包成功。</p>
<h3>注意事项：</h3>
<ul>
<li>
<p dir="auto">source <a href="http://melis-env.sh" target="_blank" rel="noopener noreferrer nofollow ugc">melis-env.sh</a> 的操作仅在当前终端有效，新开终端，或者关闭了终端后，需要重新source一下，才能进行下面的操作。</p>
</li>
<li>
<p dir="auto">lunch操作与source操作一样，都是只对当前终端有效，每次打开新终端，都需要进行一次source、lunch。</p>
</li>
</ul>
<h3>小贴士：</h3>
<p dir="auto">source了之后，可以使用各种快捷调整指令，方便开发</p>
<pre><code>croot   回到项目根目录
ckernel   跳转至kernel文件夹
cmodoule  跳转至模块文件夹
。。。（更多操作，可以看环境脚本“envsetup.sh”中的function有哪些）
</code></pre>
<p dir="auto"><strong>原文链接：<a href="https://blog.csdn.net/qq_43280079/article/details/127189338" target="_blank" rel="noopener noreferrer nofollow ugc">https://blog.csdn.net/qq_43280079/article/details/127189338</a></strong><br />
<strong>作者@waxly-</strong></p>
]]></description><link>https://bbs.aw-ol.com/topic/2407/在mq-r-f133-上-进行全志melis-4-0-rt-thread内核-环境搭建与初步编译介绍</link><generator>RSS for Node</generator><lastBuildDate>Thu, 14 May 2026 06:59:34 GMT</lastBuildDate><atom:link href="https://bbs.aw-ol.com/topic/2407.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Oct 2022 02:59:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 在MQ-R（F133）上 进行全志Melis-4.0(rt-thread内核)环境搭建与初步编译介绍 on Mon, 27 Feb 2023 04:49:13 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/1865">@livpo</a>  已经编译成功，但是usb键盘没有反应，触摸屏也没反应。这个sdk默认支持的是什么输入，或是可以支持什么输入~</p>
]]></description><link>https://bbs.aw-ol.com/post/13973</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/13973</guid><dc:creator><![CDATA[soso90]]></dc:creator><pubDate>Mon, 27 Feb 2023 04:49:13 GMT</pubDate></item></channel></rss>