简介
通过网上查找关于全志自研操作系统Melis RTOS,发现这款操作系统自全志科技创建以来,就已经问世,并持续抗战了近十年,其主要应用其自家的F系列芯片产品上,在MP3与老人机非常流行的时代,该系统配合着其F系列的芯片,真的是能抗能打,早在2012-2013年的时候,Melis的装机量就已经过亿,但因为其属于自研系统,全志科技并没有将其开源,导致虽装机量很多,但是很少人知道。
Melis经过了多个迭代,现如今配合着其最新推出的F133(risc-V)芯片,推出了最新的Melis4.0系统,并使用了更多人熟悉的RT-thread内核,在GitHub上,部分进行了开源,引领广大开发爱好者参与进risc-V的生态建设中。
Melis4.0利用 shell 脚本、makefile 等文件来组织 c/asm 源代码的编译逻辑,调用gcc 工具链完成源代码的编译链接,烧录生成的可执行目标文件,实现对 SOC 平台的整体控制,达到产品方案开发的目的,同时使整个开发环境完全自主可控,增强扩展性。
借着dongshanPI-D1s这款评估板,着手研究一下这个操作系统,初步了解了一下他的源码,其中包含Hal部分驱动代码、driver部分代码,应用代码等,还提供了工程管理,感觉具备STM32类的单片机开发的人也可以上手,所以准备从这里入手学习。
具体的介绍请参见Melis的相关文档,都是中文的,值得推荐。
Melis通用架构图
环境搭建
采用ubunt 16.04 server 64位系统。
代码获取
mkdir ~/dongshanpi/
cd ~/dongshanpi
git clone https:
cd D1s-Melis
git submodule update --init –recursive
系统基本环境
安装开发所需的软件包:
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
兼容32位模式:
因为我们安装的ubunt是64位的,编译过程中需要32位支持,所以需要起用ubunt的32位模式支持。
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo apt install lib32z1
编译
在刚刚建立ubuntu环境下完成D1s-Melis的编译。
首先建立目录:
mkdir ~/dongshanpi-d1s
进入建立的目录:
cd ~/dongshanpi-d1s
克隆源码:
git clone https:
cd D1s-Melis
git submodule update --init --recursive
执行编译过程
source melis-env.sh
lunch
选择 4.dis-nezha
make :执行编译当前选定工程
编译结束后可以看到编译成功的提示。
pack : 打包编译结果为img格式的映像,用于烧录。
打包完成后,生成了melis_d1s-nezha_uart0_8Mnor.img文件。
烧录
将刚才生成的文件导出到windows的环境中,使用PhoneixSuit工具烧录到D1s开发板中。
打开PhoneixSuit工具软件,选择“一键刷机”,通过“浏览”按钮选择刚才下载的img文件。
连接开发板的两条Type-C数据线,然后按住“FEL”按键,复位系统,此时PhoneixSuit工具会自动刷写刚才选择的img文件到norflash中。
运行测试
映像文件刷写完成,连接TTL串口工具到PE2和PE3引脚。打开串口终端,按复位键,在终端中可以看到系统启动的信息。
系统采用RT-Thread作为核心,所以shell是finsh风格的。