RT-Thread Smart(简称rt-smart)是基于RT-Thread操作系统衍生,面向带MMU(Memory Management Unit),中高端应用的芯片,例如ARM Cortex-A,MIPS,带MMU的RISC-V芯片等。rt-smart在RT-Thread操作系统的基础上启用独立、完整的进程方式,同时以混合微内核模式执行。 自V5.0.0 起,rt-smart 分支已合并至 rt-thread master ...
以rt-smart在全志D1上的代码为例,主要注释了rt-smart在riscv64上的系统初始化和异常处理的代码仓库地址https://gitee.com/rtthread/rt-thread/tree/rt-smart 启动 代码路径 libcpu isc-v -headc906startup_gcc.S 登录后复制/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License...
获取文件大小 如何在 用户态获取文件大小,RT-Smart 的应用开发与 Linux 的用户应用开发基本类似,Linux 平台上的应用,可以轻松的移植到 RT-Smart 上。 fopen 可以在RT-Smart内核态使用,也可以在用户态使用,用户态的使用,一般都是借助 libc 与 系统调用,当前 RT-Smart 使用 musl gcc 工具链 获取文件大小,应该与 ...
由于rt-smart启动早期,根据虚拟地址计算实际的物理地址使用的是加法,// 所以PV_OFFSET这个固定偏移量就是:物理地址-虚拟地址,这样代码中使用加法根据虚拟地址算物理地址时,// 会造成上溢,只保留低32位,相当
RT-Smart架构概览 有幸从成为熊大RT-Smart的首批体验客户,拿到代码和开发板,玩儿了一下。感觉RT-Smart野心不小,延续了rt-thread小而美的特质,smart支持内核态和用户态分层,并且支持用户态地址空间互相隔离,这使得RTT可以支持的方案容量大大增加,从小型算力系统比如MCU到Cortex-A系列的富算力系统,都能够很好支持,优秀,...
RT-Smart 页初始化相关功能 物理页分配算法伙伴系统的实现 物理页管理初始化 在系统初始化早期,会先执行rt_page_init函数来对物理页管理所需要的数据结构进行初始化,下面是对这段代码的详细解释: 1#defineARCH_PAGE_SHIFT 12 2#defineARCH_PAGE_SIZE (1 << ARCH_PAGE_SHIFT) ...
在rt-thread中,我们经常使用一组API,rt_pin_mode, rt_pin_write。但是在rt-smart中这套东西是使用不了的。而需要使用设备驱动框架那一套东西,open,write,read. imx6ull的led灯的GPIO对应第5组第3个引脚。然后定义两个结构体:pin_mode,pin_status. ...
第二步调用的函数rt_hw_board_init,在rtthread标准版中主要执行芯片相关的初始化操作,例如获取CPU主频,开启systick定时器,执行BOARD_EXPORT宏导出的初始化函数。在rt-smart系统中,除了上述工作还新增了二级页表配置,ioremap配置,LWP用户态初始化等,板级初始化函数也是rt-smart适配到不同芯片时比较重要的步骤。
(1)编译uboot,可以从tftp服务器上loader固件(rt-thread非rt-smart)到内存执行。 (2)将程序链接地址改为0x100000,并让uboot加载到该处,并正常执行。 (3)分离出bsp代码,放到rt-samrt SDK包中,可以用musl库gcc编译通过。 (4)串口可正常输出信息。
1、RT-Smart 环境搭建 下载RT-Smart 用户态应用代码: 1git clone https://github.com/RT-Thread/userapps.git 进入到 userapps 目录,克隆 RT-Thread rt-smart 分支 1git clone -b rt-smart https://gitee.com/rtthread/rt-thread.git 更详细环境配置请移步到—> RT-Thread-优雅の在D1S上运行RT-Smart ...