RT-Thread Smart
RT-Thread Smart(简称 rt-smart)是基于 RT-Thread 操作系统衍生的新分支,面向带 MMU的AP级芯片,例如 ARM Cortex-A 系列芯片、MIPS 芯片等,此次适配也是首次在RISC-V指令集的AP芯片上适配。rt-smart 在 RT-Thread 操作系统的基础上启用独立、完整的进程方式,同时以混合微内核模式执行。
RT-Thread Smart把应用从内核中独立出来,形成独立的用户态应用程序,并具备独立的地址空间。
以下是 RT-Thread Smart的整体结构框图,在硬件平台的基础上通过 MMU、系统调用的方式把整个系统分成了内核态及用户态。
进程管理模块rtthread-smart / kernel / components / lwp,它包括了如下的几个部分:
面向用户态的系统调用(system call,lwp_syscall.c/h); 用户态进程管理(lwp_pid.c/h, lwp.c/h); elf 可执行应用程序加载器; 基于 MMU 的虚拟内存管理,地址空间管理; 进程间的 channel 通信机制及共享内存机制; 而在整体操作系统中,内核中还额外的包括了: 文件系统接口(DFS) - 虚拟文件系统接口; BSD socket 接口(SAL/socket) - 抽象套接字; 设备驱动框架接口; 可选的设备驱动(如 UART,GPIO,IIC 等);
目前芒果派和RTT已经将内核固件适配好,后续还将不断升级完善。用户态源码已经全部开源供,开发者们可以拿到源码自由地开发。
芒果派-哪吒MQ
哪吒MQ是国内知名开源品牌【芒果派】基于全志D1s芯片设计的精致屏显AIoT集成方案开发板。D1s是全志针对智能解码市场推出的高性价比AIoT芯片。它使用64bit RISC-V架构的阿里平头哥C906处理器,区别于D1芯片,D1s内置了64M DDR2,可以支持H.265,、H.264、MPEG-1/2/4、JPEG等全格式视频解码,支持ADC/DAC/I2S/PCM/DMIC/OWA等多种音频接口,具有高集成度、高性价比等优势。
得益于D1s芯片加持,DSI接口的强大功能,赋予了麻雀点屏神器的头衔,板载WiFi以及双Type-C的接口也显示出紧跟潮流的设计理念,理念紧跟潮流的同时也保留了芒果派一贯的优良传统,独立BOOT按键、超高集成度......都是麻雀虽小,五脏俱全的最佳佐证。
适配实操——运行rt-smart系统
准备工具
内核:rt_smart_kernel.bin 硬件:麻雀,MQ1或MQ1W RT-smart包(自带编译器):mango_rtsmart_app.zip
分区
使用fdisk分区。 将u盘挂载到ubuntu系统后,笔者设备路径是/dev/sdb。使用的32GB TF卡,扇区大小512字节,根据说明预留8M的空闲,那么计算得知分区扇区开始于:16384。 命令:sudo fdisk /dev/sdb 选:o,n,p,1,16384,回车 正确的分区效果如下: 然后格式化sdb1: 刷入RT-SMART内核
启动RTT
此时将TF卡放入麻雀,串口0(底部排针的7,8脚),串口波特率500000,然后上电:
运行应用程序
祭出祖传hello程序:根据说明自行编译,输出为:hello.elf 文件,直接拷贝到TF卡的文件系统中
然后重新将tf卡放进麻雀,开机启动:
扩展之编译
请在Linux下使用此开发环境包(已经自带64位Linux系统的编译器环境),如果要在Windows下使用,请自行配置安装编译在tools目录下,然后参照smart-env.sh里的脚本配置好环境变量。
在Linux下使用步骤:
首先执行source smart-env.sh riscv64,也可以根据自己的环境稍作修改。
进入userapp目录进行应用编译,例如编译自带的hello应用程序,只需要执行scons --app=hello。
编译好的应用程序会生成在root/bin目录下,将其拷贝到SD卡中(注意是8M偏移的起始分区),然后进入rt-smart系统中,启动挂载成功后即可运行。
|