当前位置: 首页 > news >正文

UCosIII 在 Tang Nano 20K 的 SparrowRV 软核移植

一直想完整的完成从FPGA到RTOS再到基础APP完成整个流程的理解,于是,尝试在开源的小麻雀操作系统上移植最简单的UCos-III移植,但由于不懂Verilog,所以磕磕碰碰,以下是其记录:

准备工作

由于使用的是一块小小的 Tang Nano 20K 开发板,其芯片为高云的 GW2AR-18C,且 SparrowRV 的作者已经提供了该开发板的移植实例工程,只需要在上面改一改就可以用了。

  1. 搭建高云的开发环境,从官网下载最新版即可;
  2. 在Gitee上拉取 SparrowRV ;
  3. 搭建Bsp的开发环境,这里使用的是Windows上的 MounRiver Studio,这个商业版或社区版都行;
  4. 拉取UCos-III的源码,去UCos-III GitHub这里,一般只需要拉uC-OS3、uC-CPU、uC-LIB这三个即可;

移植准备

  1. 首先,得保证FPGA工程可以综合的过,由于高云教育版软件的更新,fpga/gowin_tang_nano_20k 目录下以前的工程直接综合会报错,提示FPIOA引脚电压错误,将其改为3.3V,即LVCMOS33;
  2. 此时可以发现很多FPIOA依旧没有连接到物理引脚上,由于本次只用到了Uart0的Tx口,更具原理图可以得到实际Uart0的Tx引脚是69,将FPIOA的Location改为69,并将Pull Mode改为None;
  3. 此时综合将不再报错;
  4. 打开bsp/bsp_app里的MounRiver Studio工程,最新版本是基于VsCode开发的,不是以前的Eclipse开发的;
  5. 直接编译工程,编译通过即可确保拉下来的是没有问题的;
  6. 将拉取下来的三个文件夹放到工程根目录下开发环境将会自动添加这些文件夹到项目内;
  7. 删除工程内除RISCV架构相关的其他架构的文件(注意不要把Cfg文件夹删了);

开始移植

  1. 配置工程,在设置工程属性里添加头文件目录和汇编文件目录并关闭优化:

Snipaste_2025-10-05_11-46-41

Snipaste_2025-10-05_11-47-08

Snipaste_2025-10-05_11-47-18

  1. 修改Ports文件夹下的相关文件,这里是关于移植的东西:

os_cpu_a.S

这里关于总中断的地方不用改,因为其CSR寄存器遵循了标准。但是关于软中断切换和主动触发的地方要改:

点击查看代码
.equ  RISCV_CSR_MSIP,            0x345           # 添加自定义CSR软中断寄存器地址(写1触发软中断)#-------------------------------------------------------------------------------------------------OSCtxSw:
OSIntCtxSw:
# MIE_MSIE -- 启用软件中断位li     t0, RISCV_MIE_MSIEcsrrs  zero, mie, t0# 这将触发一个同步软件中断 MSIP = 0x01;csrrsi x0, RISCV_CSR_MSIP, 1ret#-------------------------------------------------------------------------------------------------Software_IRQHandler:
# 禁用全局中断并防止上下文切换期间的中断li     t0, RISCV_MSTATUS_MIEcsrrc  zero, mstatus, t0# 清除 hart0 的软件中断,MSIP = 0x01;csrrsi x0, RISCV_CSR_MSIP, 0...

安装中断

想要UCos-III跑起来,主要需要安装两个中断函数,它们都在Ports内,分别是 Software_IRQHandlerSysTick_Handler
由于 SysTick_Handler 和示例Bsp里的函数重名了,这里直接注释掉 trap_handle.c 里的定义就好,注意不要注释掉声明,因为它声明使用了 __attribute__((interrupt("machine")))
然后在 trap_handle.c 里直接调用UCos的Software_IRQHandler

Snipaste_2025-10-05_12-05-27

Snipaste_2025-10-05_12-06-09

调用系统

main 里调用 OSInitOSStart ,顺带创建个任务。

image

到这里移植就基本结束了,接下来就是写两个简单的任务。

基础应用

编写两个任务:

image

image

完成。

http://www.hskmm.com/?act=detail&tid=24826

相关文章:

  • SIP抓包工具 SIP抓包 SIP抓包
  • 2025声级计厂家最新权威推荐排行榜单! 数字声级计,精密声级计,防爆声级计,手持式声级计,剂量声级计公司推荐!
  • python中使用高并发分布式队列库celery的那些坑 - 指南
  • 在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名计算机控制AI框架需求洞察
  • Codeforces Round 1040 (Div. 1)
  • 2025十一集训——Day3做题
  • 目标检测任务的评估指标P-R曲线 - 指南
  • abc426 题解
  • 运行npp并打开实时双向同步的今日日记纯文本文档 2025年10月5日
  • 完整教程:python学习打卡day43
  • mac 下修改本机hosts
  • 2025测振仪厂家最新企业品牌推荐排行榜,自动诊断测振仪,防爆测振仪,智能测振仪,诊断故障测振仪推荐!
  • 【JNI】JNI环境搭建
  • CS自学笔记
  • vue: 报错: vue ResizeObserver loop completed with undelivered notifications.
  • 原来一个人真的是通过别人认识自己的
  • ds调度mssql多个T-SQL语句同步阻塞实现
  • 2025提升门厂家最新企业品牌推荐排行榜,保温提升门,钢质提升门,消防提升门,分段式提升门,工业提升门公司推荐!
  • 高考数学易错考点02 | 临阵磨枪 - 指南
  • 2025升降机厂家最新企业品牌推荐排行榜,固定式升降机,液压升降机,电动升降机,铝合金式升降机公司推荐!
  • 在 2025 年安装 Visual Studio 2013
  • 算法伦理与机器学习研究获PROSE奖
  • 实验1 C语言开发环境使用和数据类型、运算符、表达符
  • UiPath推出全新AI代理开发功能,简化自动化构建流程
  • 2025年T型螺栓厂家TOP企业品牌推荐排行榜,光伏T型螺栓,不锈钢T型螺栓,地铁专用T型螺栓,高铁T型螺栓公司!
  • 2025 年碳纤维布厂家最新推荐排行榜:精选建筑碳纤维布 ,加固碳纤维布,300克碳纤维布,碳纤维加固布公司
  • MySQL Docker 容器化部署全指南
  • 2025热浸塑钢管工厂最新企业品牌推荐排行榜 ,NHAP热浸塑钢管,电力热浸塑钢管,N-HAP热浸塑钢管,电力涂塑钢管公司推荐!
  • 2025广告喷绘公司最新推荐榜单, 覆盖广告喷绘广告牌,广告喷绘写真,广告喷绘广告牌写真,广告喷绘门头服务!
  • 详细介绍:ck-editor5的研究 (5):优化-页面离开时提醒保存,顺便了解一下 Editor的生命周期 和 6大编辑器类型