[RISC-V]移植rtthread nano到risc-v芯片

RT-Thread移植(二):CPU架构 在嵌入式领域有多种不同 CPU 架构,例如 Cortex-M、ARM920T、MIPS32、RISC-V 等等。为了使 RT-Thread 能够在不同 CPU 架构的芯片上运行,RT-Thread 提供了一个 libcpu 抽象层来适配不同的 CPU 架构。libcpu 层向上对内核提供统一的接口,包括全局中断的开关,线程栈的初始化,上下文切换等。 阅读详情

本文由RT-Thread论坛用户@DENGCHOW原创发布:https://club.rt-thread.org/ask/article/3187.html

“这么说吧,就是为了这口醋,我才包的这顿饺子。”

仓库地址:https://gitee.com/dengchow/yuheng-riscv-soc.git

〇、前言

本文记录的是在 risc-v 芯片上移植 rt-thread nano 的过程。

使用到的 risc-v 芯片是玉衡(YuHeng,yuheng-riscv),一款并不存在于现实世界的芯片,同 picorv32 和 darkriscv 一样,仅存在与仿真环境中。

一、硬件平台

玉衡(YuHeng,yuheng-riscv)基于开源 RISC-V 指令集架构,是一款极简的 32 位 RISC-V 处理器核。仅用于检测和实验。

玉衡不具备任何商用价值,但可以作为很好的学习平台。

使用玉衡,能够很好的了解计算机体系结构、操作系统、通信协议、编译原理等相关知识。
另外,所有的运行环境均为精简搭建,因此还可以很轻易的熟悉搭建过程。

不仅会用,还要知道为什么会用。是当初设计的初衷。

特点与功能

  1. 支持 RV32IMFD 扩展指令集,通过RISC-V指令兼容性测试

  2. 采用五级流水线设计:IF、ID、EX、MEM、WB

  3. 采用自定义的总线设计:RBM(RISC-V Bus Matrix)

  4. 支持中断:矢量中断和非矢量中断

  5. 支持多种外设: UART、TIMER 等

  6. 支持 C 程序运行

  7. 支持 RT-Thread Nano 3.1.5

  8. 支持 UART 模拟器,可在仿真环境中进行调试

  9. …

二、软件平台

rtthread nano 的版本是 3.1.5,直接从官网上下载的。

之所以不使用完整版 rt-thread,是因为我个人认为 rt-thread 的精华是 kernel 和 FinSH。

因此 rtthread nano 足够了。

其实根本的原因是 YuHeng 上只有最最基本的外设,除了 UART 就是 TIMER。惭愧。

三、移植过程

移植过程比较特殊,因为是先有的 rtthread nano,然后才去改造的 yuheng-riscv。

最终效果

  • 使用项目中给出的运行脚本,可以直接创建出 Vivado 工程。

  • 为了方便 Simulation,设计一个 uart_monitor,有了它之后,就可以直接在 testbench 中捕捉 UART 的输出。

  • 仿真是比较慢的。

  • 由于是在 Vivado 上进行 Simulation,可以监视任何一个信号。

  • 从 wave 和 log 两个角度进行结果输出。

接下来,介绍一下移植过程。

移植过程

rtthread 调度线程的时候使用到 rt_hw_context_switch 和 rt_hw_context_switch_to 两个函数。

而这两个函数实际并没有真的去切换线程,在 ARM Cortex 中会触发 PendSV 中断,在 PendSV 中完成的线程切换。

在中科蓝讯的 ab32vg1 中,是有一个 low_prio_irq 的,作用和 PendSV 是一样的。

很尴尬, yuheng-riscv 中是没有类似的设置。

在设计 yuheng-riscv 是只有非矢量中断的,即只有一个固定的中断 trap_handler,然后通过软件来构建中断向量表。
如 sdk\rtthread-nano\interrupt.c 中所示。

本着尽量不改动 rtthread nano 源码的出发点,决定对 yuheng-riscv 的中断机制进行修改。

  • 增加硬件中断向量表。

  • 增加 soft_handler 中断用于线程切换。

剩余的移植工作如 tick 的添加, UART 的添加,这个就不做介绍了,毕竟 rtthread nano 中通过 TODO 都进行标识了。
一步一步的修改添加即可。

四、总结

总之,rtthread 还是很友好的。

整体来说 yuheng-riscv 还只是一个 demo,功能是有了,性能还是差不少。

“醋还行,饺子差点。”

公众号二维码-白色版.jpg

RT-Thread底层汇编及在arm与riscv上的差异 一、内核寄存器 SCB_VTOR 0xE000ED08 向量表偏移寄存器 ICSR 0xE000ED04 中断控制状态寄存器 PENDSVSET_BIT 0x10000000 值来触发PendSV异常 SHPR3 0xE000ED20 系统优先级寄存器 PENDSV_PRI_LOWEST 0xFFFF0000 PendSV和SysTick优先级值 二、三个中断 2.1 全局中断 /* * rt_base_t rt_hw_interrupt_disable(); */ .global rt_hw 阅读详情

相关推荐

国产MCU-CW32F030开发学习--移植rtthread-nano

RT-Thread Nano

dele 1033

RT-thread移植指南-RISC-V

目录 RT-thread移植指南-RISC-V.. 3 1. 概述... 3 1.1 移植资料参考... 3 1.2 移植开发环境准备... 4 2. 移植步骤... 4 2.1 全局中断开关函数... 5 2.2 线程上下文切换函数... 5 2.3. 线程栈的初始化... 6 2.4 时钟节拍的配置... 6 2.5 中断函数(中断时现场保护、中断注册和使能)... 8 2.5.1 interrupt_gcc.S:... 8 2.5.2 中断注册、使能...

空 7059

二、RT-Thread移植_trrhread移植

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!” />你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!!

2401_84003941的博客 1235

RISC-V单片机快速入门02-移植RT_Thread Nano

前言: 上一节,我们使用芯来科技Nuclei Studio IDE搭建了裸机开发环境,本节我们开始正式移植RT_Thread系统。 一、基础知识 1.RT_Thread简介 RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功

weixin_45006076的博客 1791

RT-Thread NANO V4.1.1 移植实战:从内存管理陷阱到多线程稳定运行

本文详细记录了RT-Thread NANO V4.1.1实时操作系统在资源受限MCU上的移植实战过程。文章重点剖析了移植过程中遇到的关键内存管理陷阱——RT_USING_SMALL_MEM宏的配置问题,并提供了从源码获取、工程搭建、板级适配到多线程测试的完整解决方案,帮助开发者实现稳定可靠的多线程运行环境。

nnn11的博客 415

stm32 移植 rt-thread

既然我们要移植Rt-thread 首先就要了解RT-thread RT-Thread Nano 简介 RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。 下图是 RT-Thread Na..

位文杰的博客 9748

移植 RT-Thread Nano 到 RISC-V

本文介绍了如何移植 RT-Thread Nano 到 RISC-V 架构,以 Eclipse GCC 环境为例,基于一个 GD32V103 MCU 的基础工程作为示例进行讲解。No.1移...

FILLMOREad的博客 1937

APM32F103C8T6标准库开发与RT-Thread nano移植实践

嵌入式实时操作系统(RTOS)为资源受限的MCU提供了高效的多任务管理能力。Cortex-M3内核微控制器搭配轻量级RT-Thread nano,可满足物联网设备对实时性和低资源占用的双重需求。标准库开发方式贴近寄存器操作,有助于理解外设时钟、GPIO和串口底层机制。极海APM32F103C8T6作为国产高性价比MCU,与STM32F103C8T6引脚和外设高度兼容,为旧项目迁移提供了一条低风险路径。从Cortex-M3基础架构、RT-Thread调度原理入手,介绍标准库点灯工程和USART驱动,进而完成R

weixin_34043301的博客 305

RT-Thread Nano移植使用整理

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/an0038-nano-introduction 一、RT-Thread Nano 简介 RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适

OnlyLove_的博客 7837

RT-thread移植指南-RISC-V.docx

RT-thread移植指南-移植到RISC-V

欧姆龙PMAC CK3M控制器新手避坑指南:从开箱到EtherCAT总线配置的完整流程

本文详细介绍了欧姆龙PMAC CK3M控制器的完整配置流程,从开箱检查到EtherCAT总线配置,特别针对新手常见问题提供避坑指南。内容包括硬件连接、软件安装、EtherCAT主站初始化、从站配置、电机参数设置等关键步骤,帮助工程师快速掌握PMAC控制器的使用技巧。

weixin_42532938的博客 387

RT-Thread NANO V 4.1.1 的移植

是一个的,它是由C语言开发,采用,具有,是一款的、的RTOS。其包括和等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等领域大量使用的32位ARM入门级MCU的场合。下图是的软件框图,包含支持的CPU架构与内核源码,还有可拆卸的FinSH组件:ARM:Cortex M0/ M3/ M4/ M7 等、RISC-V 及其他。:线程管理、线程间同步与通信、时钟管理、中断管理、内存管理。

wxy888888的博客 1343

SAP 对接CBS(http方式)

CLEAR:lv_xml_crc32_string. CONCATENATEcrc32_passwordcrc32_keyi_stringINTOlv_xml_crc32_string. CONDENSElv_xml_crc32_string. CALLFUNCTION'SCMS_STRING_TO_XSTRING' EXPORTING text=lv_xml_crc32_string encoding='8400' "GB...

3597

RT-Thread Nano 移植原理

前言本篇文档介绍 Nano 移植原理,针对的是不同 MCU 的移植,如 Cortex M,RISC-V,或者是其他 MCU 的移植。移植过程主要分为两个部分:libcpu 移植与板级移植...

FILLMOREad的博客 911

小样本物体检测

Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector 关键:提出了一个小样本数据集:数据集 步骤: 提取support img为一过滤特征 使用support img的特征来过滤query img,最后将过滤后的特征输入RPN网络中 RPN网络层的输出,会进行多头判断,使用全局信息检测,使用局部信息检测,一对多检测 Attention-Based Region Proposal Network Increme

qq_21157073的博客 5266

STM32-printf重定向串口输出

声明 本文内容转载至https://www.mculover666.cn/posts/2251182441/ 1.printf与fputc printf 定义在 <stdio.h> 头文件中,如下: int printf(const char *format, ...); printf 函数根据 format 字符串给出的格式打印输出到 stdout(标准输出)中,当然,printf 函数是不会一个字符一个字符去输出,它会调用更底层的 I/O 函数:fputc去逐个字符打印。 fputc 也定

qq_41215167的博客 4539

RT-thread Nano移植

一:CubeMX添加RT-Thread操作系统组件 链接:https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc 安装RT-Thread: 1.操作步骤 (Help -> Manage embedded software packages) \ 2.添加软件包: 3.添加链接: 4.添加software packs 二:创建工程项目: 创建工程选择Nano组件:Softwares...

weixin_48302823的博客 1838

k230 +canMV+ LVGL控件 仿手表表盘触摸屏滚动、选中后弹窗效果完整示例程序

现在智能手表用的越来越多,其交互方式比较有特点,现在k230开发板上,基于LVGL(Light and Versatile Graphics Library)编写一个嵌入式GUI应用程序,使用LVGL配合触摸屏实现模仿智能手表的表盘滚动效果,实际效果如下:程序使用LVGL图形库和MediaManager程序,创建带有触摸屏交互的GUI应用。程序主要功能包括显示初始化、LVGL初始化、创建GUI界面(包含一个可滚动的按钮列表,每个按钮点击会弹出消息框),以及处理触摸屏输入。

weixin_47446386的博客 1175

《嵌入式系统 - RT-Thread开发笔记》 第二部分 RT-Thread Nano移植与使用 - 第4章 RT-Thread Nano移植原理

原文地址 本文介绍 Nano 移植原理,针对的是不同 MCU 的移植,如 Cortex M,RISC-V,或者是其他 MCU 的移植。移植过程主要分为两个部分:libcpu 移植与板级移植,在讲解移植之前,本文档对 RT-Thread Nano 的启动流程与移植目录结构先进行说明。 4.1 RT-Thread Nano启动流程 RT-Thread 启动流程如下所示,在图中标出颜色的部分需要用户特别注意(黄色表示 libcpu 移植相关的内容,绿色部分表示板级移植相关的内容)。 RT-Thread 启动代码

不问归期的博客 1721

如何使用 ESP32 CAM 进行自动车牌识别 (ANPR)

用于提取 JSON 值并在 OLED 上显示文本的函数。有一个可用的函数,即 extractJsonStringValue 来提取字符串值。它是独立函数,但您仍然可以使用一些 JSON 库来执行相同的功能。

jkh920184196的博客 1303

电机驱动和电源等大电流设计中的并联 MOSFET设计

在电机驱动等应用中,半桥拓扑(通常为 3 相)用于生成在电机中产生正扭矩或负扭矩的交流电源信号。想要更高的输出电流能力,只有通过并联形成每个功能开关的 MOSFET,才能实现高输出电流。当多个功率 MOSFET 并联以增加系统整体电流能力容量时,通常假设电流在并联器件之间均等分配或均等共享。然而,在并联 MOSFET 时,需要考虑并联器件之间的电流分配。PCB 布局的若干特性和特定的MOSFET 参数会影响这种分配,并在参数不匹配或布局不对称时导致均流不平衡。

小幽余生不加糖 2485

STM32的RT-Thread-Nano移植

一.CubeMX添加RT-Thread操作系统组件 获取RT-Thread Nano软件包 https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc 安装RT-Thread 参考:基于 STM32CubeMX 添加 RT-Thread 操作系统组件(一)- 详细介绍操作步骤_Ch_champion的博客-优快云博客_cubemx rtthread 二.CubeMX新建工程 选用的是STM32F103C8T6。 使用

qq_45874317的博客 485

YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 2310

用GD32VF103玩转RISC-V+RT-Thread:低成本物联网节点开发全记录

本文详细介绍了如何利用GD32VF103单片机和RT-Thread操作系统开发低成本物联网节点。从RISC-V工具链配置、RT-Thread移植到外设驱动开发,再到物联网组件集成和低功耗优化,全面展示了这一国产芯片与操作系统的强大组合在嵌入式开发中的应用实践。

weixin_30335353的博客 579

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

HAL库与Cubemx\rt-thread Nano系列教程-01-新建HAL工程及移植RT-Nano到Alios Developer Kit

HAL库、CUBEMX、RT-Thread联合开发,你想不想学,我教你呀,教程正式开启啦,欢迎关注,持续更新

qq_16519885的博客 1904

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 【AI简报20211203期】国产GPU全面开花!黑芝麻智能与RT-Thread达成战略合作
下一篇: RDC到场礼,ART-Badge V2.0开发记录,极客感十足
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值