RISC-V MCU移植RTOS系列教程(一)

本文介绍了在RISC-V内核的单片机,特别是WCH的赤菟V103和V307芯片上移植RTOS时的注意事项。内容涉及如何处理中断时的硬件压栈、寄存器保存,以及在开启硬件浮点时的寄存器管理。重点讨论了青稞V3和V4F内核的特点,以及如何利用CSR 0x804控制位进行中断处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ARM上移植实时操作系统大家可能比较熟悉,且例程较多,对于RISC-V内核的单片机,可能相对比较陌生。下面结合WCH沁恒微电子的赤菟V103(CH32V103)和赤菟V307(CH32V307)两款RISC-V内核芯片来详细说下针对RISC-V平台,移植实时操作系统的注意点。

之所以选择赤菟V103和赤菟V307两个芯片主要是其极具代表性:首先,直观上其外设的使用方法和我们之前熟悉的F103,F107等是兼容的,这样降低了我们使用和移植时的难度,基于WCH提供的外设库,我们以前上层的代码甚至于不用修改可直接使用。其次,赤菟V103是WCH RISC-V青稞内核家族中的青稞V3A内核,V307为青稞V4F内核,青稞V3内核支持RV32IMAC指令集,即除支持RISC-V基本的32位整数指令集外,还支持硬件乘除法,原子指令,压缩指令。青稞V4F在青稞V3A的基础上增加了单精度硬件浮点,并且其性能也比青稞V3A高。除此所有的青稞V4内核还支持自定义压缩指令-XW扩展,包括以下指令c.lbu/c.lhu/c.sb/c.sh/c.lbusp/c.lhusp/c.sbsp/c.shsp。

这里需要注意的是一般情况下,移植RTOS的时需要关闭硬件压栈,因为在切换任务时,我们希望自己控制出栈入栈的内容。但是针对青稞V4F核,CSR 0x804中有增加控制位(bit5)GIHWSTKNEN(全局中断和硬件压栈关闭使能),可以进中断时置位该位,关闭中断和硬件压栈,我们手动保存当前线程栈&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值