Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    Melis3.0系统Quick Start

    RTOS
    1
    1
    283
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • q1215200171
      budbool LV 8 last edited by q1215200171

      本帖转自CSDN:https://blog.csdn.net/tugouxp/article/details/78320833
      作者:papaofdoudou

      Melis3.0系统Quick Start

      Melis3.0系统是全志科技面向数字媒体和IoT领域的轻量级物联网嵌入式实时操作系统,主打视频多媒体编,解,录周边产品应用。在整合内部开发资源的基础上, 与开源社区深度合作,致力建立服务于多媒体视频编解码,语音处理的端侧基础设施平台. Melis3.0系统具备极致性能, 极简开发,富媒体,富组件,wireless连接,模块化开发等功能特点, 可广泛应用于多媒体播放器,行车记录仪,游戏模拟器,DVB/DTMB机顶盒,儿童早教机,卡拉OK机, 传感器/网络模组,智能家居,智能IPC等产品的开发.

      Melis3.0在Sunxi OS家谱中的位置,关于Melis4.0的介绍请移步这里。
      7347c4eb6d124046993637a34f0f91a3.png
      支持多平台,多方案的多媒体架构
      20210130154804991.png

      Melis 3.0的特性

      极简开发

      • 代码量500~600万行,属于中大规模RTOS系统方案.
      • 基于Kbuild构建扩展,支持C和C++编译. menuconfig字符菜单配置界面. 支持Windows/Linux开发环境.
      • 支持ARMCC/GNU GCC CrossToochain.
      • 支持ARMDS5/开源GDB+OCD+ICE(JLink/OpenJtag/CMSIS-DAP)调试方式.
      • 支持KGDB裸机串口调试 .
      • 支持ADBD服务,可以通过adb进行调试与连接.
      • 采用松散多bin架构,系统由具备独立子功能的binary动态组合实现,模块之间高内聚,低耦合。便于分布式开发.
      • 支持V4L2和AW多媒体框架,方便集成各种编,解码方案.
      • 支持32位虚拟内存管理,单进程多线程模式共享系统0~4G虚拟存储空间.
      • 支持Devicetree和fex系统配置文件方式进行运行时配置,修改配置不需要重新编译内核。
      • 支持静态共享库(区别于UNIX&Linux家族的动态共享库),库的加载运行地址是固定的。

      网络服务

      • 支持BLE/BE协议栈
      • 支持IPV4/IPV6网络协议栈.
      • 支持基于mbedtls的安全套接字服务
      • 标准SDIO驱动兼容各种外挂模组,客户可自行决定支持新的WIFI模组.

      模块化设计

      类微内核架构(混合内核),支持应用,驱动和中间件代码独立编译链接,映像高度压缩,不用时可卸载节省运存。

      模块化要求内存管理支持二级页表设计。

      高性能内核

      按照内核和方案解耦的方式设计,当前基于zephyr,rt-thread双内核, 具备硬实时能力,核心架构良好,支持极小footprint的设备.

      RT-Thread和zephyr各有特点,两者比较,zephyr有广度,但高度欠缺,而RT-Thread恰恰相反,它支持较高的Linux语义,有高度,但广度不如zephyr.

      Melis3.0主要面向全志自身的编码解码产品线进行开发,需要一个API层面有高度的系统,但不需要支持太多的开发板,所以广度方面不甚重要.

      内存管理
      支持slab内存管理算法,有效减少内存外部碎片。
      支持虚拟空间动态创建,页面可支持4K大小

      调度策略

      在任何时候,系统执行有资格获得处理器的优先级最高的任务,在优先级相同的情况下,采用时间片轮转的调度策略. 这种调度策略有个简单的名字,叫做Round Robin(RR)调度策略

      丰富的文件系统支持

      支持常见文件系统格式,包括:

      • Fat12/16/32
      • exFat
      • udffs
      • ntfs
      • cdfs
      • devfs
      • ramfs
      • littlefs
      • spiffs
      • 支持文件系统块缓冲bcache,可以有效提高存储价质的读写效率。

      丰富的多媒体和GUI支持

      集成全志AW多媒体框架和OrangeGUI/MiniGUI图形框架,可支持中大规模多媒体录,编,解码产品的开发.

      支持全部的常见音频格式,支持的视频解码格式包括:

      • H263/H264/H265
      • VP9/VP8/VP6
      • MJPEG/MPEG2/MPEG4
      • AVS/AVS2/AVS+
      • Divx/Xvid
      • WMV1/WMV2/WMV3/WMV9/VC-1
      • Sorenson Spark
      • 支持LBC在线压缩/解压缩算法,有效提升高清多媒体码流的兼容度.
        等主流解码格式。
        支持的编码格式包括:
      • H264
      • H265
      • VP8
      • MJPEG

      Posix兼容
      支持Posix完整语义,面向MacOS,Unix,Linux可移植应用/中间件的跨系统移植.

      设备管理
      支持linux style的设备文件系统,所有设备以设备节点的方式向应用提供服务,应用通过标准化的接口open/read/write/ioctl/close对设备进行操作

      在Linux上搭建Melis3.0 开发环境

      1.下载交叉编译工具链:
      GCC 6.3.0 On Linux
      或者执行: git clone https://github.com/caozilong/melis-toolchain.git

      2.ToolChain的安装与配置:

      进入到控制台程序,在$(HOME)(其它具备权限的目录也可,例如/opt)目录下创建tools目录 并把工具链包copy到此目录.

      aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMDIzMTcxMTQwNTEy.png

      执行下图命令将工具链解压到当前目录下:

      aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMDIzMTcxNDEyODk1.png

      设置环境变量,执行如下命令将工具链所在目录加入到当前用户的PATH环境变量下:

      aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMDIzMTcyMzQzNzMx.png

      设置完毕后,退出当前终端重新登录, 在新控制台下执行命令行

      arm-melis-eabi-gcc -v
      

      输出信息如下图所示,表示编译器安装正确:
      aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMDIzMTcyNzIyOTk5.png

      3.获取Melis SDK源码:

      略

      4.配置melis sdk.

      Melis的构建系统基于Linux Kbuild实现,执行进入到 ./src 目录,执行 make menuconfig

      aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMDIzMTczMjI0MjA2.png

      选用默认的配置,直接保存.config文件,即是D100 数字电视老人机方案.

      5.编译melis sdk.

      退出menuconfig菜单, 执行make melis (或者make, make all) 编译完整的SDK, 编译结束后,目标文件放置在./src/workspace/$(project) 目录下.

      关于内核选型,为什么基于RT-Thread内核?

      最初进行开发的时候,候选内核其实有包括RT-Thread,FreeRTOS, Arm mBed, Zephyr以及 Nuttx在内的多个内核,并且Zephy已经开发适配到能够做视频播放的程度,但是最终选择了RT-Thread作为Melis3.0方案新架构的内核。有些内核,比如zephyr,mbed os, freeRTOS,这类系统用户很多,支持的开发板也很多,但是局限在一些小资源的开发板上,总体上给人的感觉是广度有余,高度不足,难以承担多媒体这种比较垂直类的应用, 而RT-Thread则具备更多的可能性,经过多方考量,最终选择了它并进行了深度适配。

      1 Reply Last reply Reply Quote Share 0
      • 1 / 1
      • First post
        Last post

      Copyright © 2022 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策