天天看點

全志 Melis-4.0(rt-thread核心) 環境搭建與初步編譯介紹

什麼是Melis?

Melis是全志科技自研的一套rtos系統。自全志科技建立以來,該系統就已經問世,并持續抗戰了近十年,其主要應用其自家的F系列晶片産品上,在MP3與老人機非常流行的時代,該系統配合着其F系列的晶片,真的是能抗能打,早在2012-2013年的時候,Melis的裝機量就已經過億,但因為其屬于自研系統,全志科技并沒有将其開源,導緻雖裝機量很多,但是很少人知道。

  Melis之是以能抗戰那麼久,或者說全志科技之是以能在那個晶片行業并不出彩的年代堅持下來,我覺得主要歸功于其F1C100s/F1C200s這個代的晶片。這款晶片差不多是十年前的産品,但是因為其具有很強的編解碼能力,以及異于常人的成本效益,現如今依然活躍在各個微媒體市場。

  Melis經過了多個疊代,現如今配合着其最新推出的F133(risc-V)晶片,推出了最新的Melis4.0系統,并使用了更多人熟悉的RT-thread核心,在GitHub上,部分進行了開源,引領廣大開發愛好者參與進risc-V的生态建設中。最近想用F133做一點有趣的開發,是以也開始研究Melis4.0。

  個人覺得,通過學習melis系統,可以讓學習者更了解系統的構成,什麼是系統調用?系統是如何加載子產品的?什麼是BSP?等,對于學習者來說,是非常不錯的入門選擇。

開發環境

  • Ubuntu22.04虛拟機
  • MQ-R(F133) 芒果派開發闆

代碼下載下傳

GitHub的項目位址如下:

倉庫的簡介提示,如果需要編譯代碼,需要手動下載下傳一下相應的工具鍊并将工具鍊放在對應目錄裡。

工具鍊位址如下:

建議直接下載下傳這個,因為工程中預設的也是這個

全志 Melis-4.0(rt-thread核心) 環境搭建與初步編譯介紹

代碼下載下傳好後,解壓。并将下載下傳好并解壓好的工具鍊放在代碼的toolchain目錄下。(我這裡将原項目目錄更名為了source,并不影響其它)

全志 Melis-4.0(rt-thread核心) 環境搭建與初步編譯介紹

一切準備就緒後,即可開始編譯。如果是新的系統,建議先安裝一些依賴庫,後續可能會用到。

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
           

編譯

環境變量

在代碼編譯之前,我們可能需要設定很多環境變量(lunch 、croot、pack等),因為每一次的環境變量都是比較固定的,是以,項目中,将這些初始化環境變量的操作,都整合成了兩個腳本,分别是"envsetup.sh"和“melis-env.sh”。因為melis-env.sh最終會自動調用“envsetup.sh”,是以,我們隻需要執行“melis-env.sh”即可

#初始化環境變量
melis-env.sh
           

初始化環境變量後,我們需要通過“lunch”來選擇我們需要編譯的項目,lunch是通過掃描projects檔案夾下的檔案夾,進行識别一共有多少套方案,lunch選中後,系統的編譯參數、打包參數,運作參數等,就會使用對應方案檔案夾中的配置檔案。(具體為什麼叫lunch,原因不詳,或許本應該是launch?學習英語任重道遠!)

對應方案

#通過lunch來選擇要編譯的項目
lunch
           
全志 Melis-4.0(rt-thread核心) 環境搭建與初步編譯介紹

因為我使用的是麻雀的開發闆,是以我這裡選擇3.

編譯

以上流程走完後,原工程是可以直接make的,但是第一次編譯,或者選擇了不同方案後編譯,建議都是要clean一下,重新lunch一次,避免環境不幹淨。

#先clean一下
make clean

#再把方案清一下
make distclean

#重新lunch,再選擇一次方案
lunch

#執行make操作
make
           

注意,如果你在kconfig中,增加了某些選項,但是沒有在deconfig中增加對應的配置,直接make可能會報錯。需要通過make menuconfig來重新生成預設的編譯配置。

#通過make menuconfig選擇編譯參數
make menuconfig
           

注意:curses.h: No such file or directory ,那是因為環境沒弄好,“sudo apt install libncurses5-dev” 即可

全志 Melis-4.0(rt-thread核心) 環境搭建與初步編譯介紹

第一次編譯,直接儲存即可。配置預設是儲存在目前目錄下的 “.config”檔案中,最好不要改檔案名。如果不想每次編譯都make menuconfig,那麼就将目前的“.config”的内容,更新到對應方案目錄下的deconfig檔案中。比如我要改的話,那我就需要将“.config”檔案中的内容,全部替換到**“projects/d1s-mq/configs/deconfig”**檔案中,這樣每次lunch之後,系統預設來這裡來拿編譯參數。

以上完成後,就可以直接make了,如果沒改過任何東西的話,是可以直接編譯通過的。如果不通過,可能要檢查一下自己的環境是否安裝完善,勤加百度,即可解決問題。

打包

編譯成功後,可以通過pack,将編譯好的檔案,全部打包成一個.img的固件。

因為固件可能是用于卡燒錄的,用于nor燒錄的,用于nand燒錄的,根據燒錄方式的不同,需要搭配不同的參數,預設是打包生成nor燒錄的固件。

#通過pack指令,打包生成固件(預設生成nor固件)
pack

#生成nand燒錄固件
pack -a nand

#生成卡燒錄的固件
pack -a card
           

最終的固件将會生成在“out/對應方案/”目錄下。

注意:如果出現如下錯誤:

全志 Melis-4.0(rt-thread核心) 環境搭建與初步編譯介紹

這個時候,打包是沒有成功的,cd到對應目錄下,檢視檔案夾下,又是存在這個dragon檔案,有點神奇。其實是因為dragon這個程式是在32位機器上編譯出來的,這是32位的程式,在64位的Ubuntu中運作需要提前安裝32位的庫。

請執行操作:

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
           

重新pack後,沒有提示,打包成功。

注意事項:

source melis-env.sh 的操作僅在目前終端有效,新開終端,或者關閉了終端後,需要重新source一下,才能進行下面的操作。

lunch操作與source操作一樣,都是隻對目前終端有效,每次打開新終端,都需要進行一次source、lunch。

小貼士:

source了之後,可以使用各種快捷調整指令,友善開發

croot   回到項目根目錄
ckernel   跳轉至kernel檔案夾
cmodoule  跳轉至子產品檔案夾

。。。(更多操作,可以看環境腳本“envsetup.sh”中的function有哪些)
           

————————————————

版權聲明:本文為CSDN部落客「waxly-」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/qq_43280079/article/details/127189338