当前位置: 首页 > 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.jsqmd.com/news/8658/

相关文章:

  • 深入解析:Elasticsearch的集群管理介绍
  • SIP抓包工具 SIP抓包 SIP抓包
  • 2025声级计厂家最新权威推荐排行榜单! 数字声级计,精密声级计,防爆声级计,手持式声级计,剂量声级计公司推荐!
  • US$78.85 KEYDIY KD ZB10-4 Universal Smart Remote Key (Start) 4 Buttons for Honda Type 5pcs/lot
  • python中使用高并发分布式队列库celery的那些坑 - 指南
  • 实用指南:Appium如何支持ios真机测试
  • 在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名计算机控制AI框架需求洞察
  • 无人机桥梁3D建模、巡检、检测的航线规划 - 详解
  • 目标检测任务的评估指标P-R曲线 - 指南
  • abc426 题解
  • 运行npp并打开实时双向同步的今日日记纯文本文档 2025年10月5日
  • mac 下修改本机hosts
  • Asp.Net Core SignalR的协议协商挑战
  • 251005
  • 【光照】Unity如何在Cubemap中采样反射信息?
  • US$365.75 Mercedes-Benz Authorization License For CGDI A2 Key Programmer
  • 2025/10/3
  • 2025 铜覆钢厂家最新企业品牌推荐排行榜单,铜覆钢接地棒,铜覆钢圆钢,铜覆钢扁钢,铜覆钢圆线公司推荐
  • 【JNI】JNI环境搭建
  • CS自学笔记
  • JDBC - Wrapper接口
  • 深入解析:[论文阅读]Poisonprompt: Backdoor attack on prompt-based large language models
  • fasthx fastapi服务器端渲染看框架
  • vue: 报错: vue ResizeObserver loop completed with undelivered notifications.
  • ds调度mssql多个T-SQL语句同步阻塞实现
  • C# 文档 I/O 操作详解:从基础到高级应用
  • 2025提升门厂家最新企业品牌推荐排行榜,保温提升门,钢质提升门,消防提升门,分段式提升门,工业提升门公司推荐!
  • 高考数学易错考点02 | 临阵磨枪 - 指南
  • 2025升降机厂家最新企业品牌推荐排行榜,固定式升降机,液压升降机,电动升降机,铝合金式升降机公司推荐!
  • 在 2025 年安装 Visual Studio 2013