[RISCV]为RISC-V移植FreeRTOS系列之一 -- 目录结构

前言

写这篇文章的时候,我基本已经完成了这项工作了,花了一周的时间来把freertos porting到Andes公司的N25 riscv core上,本来其实是想支持国产的RT-Thread,但是奈何资料太少了,可能我后续会基于现有版本来继续porting一个rt-thread版本的。
唉,想支持国产真难啊 >.<

下面就把这个过程做一个记录,毕竟这也算是真正从ldscript开始到两个任务同时跑起来,完全自己研究以后做出来的,想来也挺有意义,虽然之前也porting过STM32版本的,但是那个都是在大量教程和source code的基础上做的,真正没有怎么深入研究。好了,废话说的太多了,下面详细说说怎么来做这件事。


作者:wangyijieonline
链接:https://blog.csdn.net/wangyijieonline/article/details/109677855
来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载必须注明出处。


一、FreeRTOS是什么?

这个问题之前讨论过,这里就不展开说了,可以参考我之前写的另一篇文章
[RTOS]uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点

这里将其称之为一种RTOS(实时操作系统),尤其对资源受限的嵌入式设备友好。
在2019年3月12日,官宣支持riscv.
在这里插入图片描述

二、RISC-V是什么?

RISC-V(发音为"risk five")是一种新的指令集体系结构(ISA),最初旨在支持计算机体系结构研究和教育,但现在我们希望它将成为行业实现的标准开放体系结构。我们定义 RISC-V 的目标包括:

  • 一个完全开放的 ISA,可免费提供给学术界和工业界。
  • 真正的 ISA 适合直接本机硬件实现,而不仅仅是模拟或二进制转换。
  • 避免为特定微体系结构样式(例如,微编码、按顺序、分离、顺序不定)或实现技术(例如,全定制、ASIC、FPGA)进行"过度架构"的 ISA,但允许在其中任何一种中有效实现。
  • ISA 分为一个小基整数 ISA,可作为定制加速器或教育目的的基础,以及可选的标准扩展,以支持一般用途软件开发。
  • 支持经修订的2008年 IEEE-754 浮点标准 [8]。
  • ISA 支持广泛的用户级 ISA 扩展和专用变体。
  • 适用于应用程序、操作系统内核和硬件实现的 32 位和 64 位地址空间变体。
  • 支持高并行多核或多核实现(包括异构多处理器)的 ISA。
  • 可选的可变长度指令,用于扩展可用的指令编码空间,并支持可选的密集指令编码,以提高性能、静态代码大小和能效。
  • 完全可虚拟化的 ISA,以简化虚拟机管理程序开发。
  • 一种 ISA,它简化了新的主管级和虚拟机管理级 ISA 设计的实验。

以上对于riscv的介绍摘自The RISC-V Instruction Set Manual, Volume I: UserLevel ISA, Version 2.0, 点击链接查看下载pdf版本

三、移植freertos

1.下载freertos的最新源码

Download FreeRTOS
在这里插入图片描述
写这篇文章的时候最新版是202011.00版,下这个就可以了,大同小异,推荐使用最新版因为会有一些bug的修复,尤其是这种刚刚被支持的MCU类型。

2. 建立工程目录结构

在这一步之前还需要准备一个工程,一个纯裸机的工程,最起码中断、printf这些要已经跑通了的。

把下载下来的压缩包打开,我们其实需要的就是FreeRTOS这个文件夹,他里面已经包含了所有的源码,暂时用不到Plus,这里面是一些进阶的应用层软件上的东西,我们只要把我们的地基打好,这些软件上的东西都不是什么大问题。
在这里插入图片描述
FreeRTOS这个文件夹直接全都解压到我们的source code目录下,像下面这样,其中我这个截图中的common目录放的是一些interrupt、reset、trap、system init相关的文件,driver目录是bsp,ldscript目录是链接脚本文件,libc目录是printf的具体实现,startup目录是start.S文件。
在这里插入图片描述
下面需要对FreeRTOS这个目录进行瘦身,

1, 关于Demo文件夹

打开Demo文件夹看看其实他就是给我们准备了两个例子,以Demo/RISC-V_RV32M1_Vega_GCC_Eclipse/projects/RTOSDemo_ri5cy为例blinky_demo(闪灯)和full_demo,但是对我们来说即便是blinky也太复杂了。还有ld文件我们已经准备好了,FreeRTOSConfig.hmain.c文件大同小异。在这里插入图片描述
所以,删掉整个Demo目录

2, 关于Source文件夹

打开Source/portable,发现这里面也给出了一堆demo。
在这里插入图片描述

这里我们只留两个文件夹,一个Source/portable/GCC/RISC-V文件夹(我这里是用的cmake建立的工程,其他IDE用户自己决定用哪个),另一个Source/portable/MemMang文件夹。

3, 新建一个App文件夹

还记得刚才删掉的Demo文件夹吗,我们现在要新建一个App文件夹,用来放两个文件。
一个FreeRTOSConfig.h,一个main.c,内容先不管,我们先把目录结构建立好。

好了,这样我们通过增删(主要是删)在基本不变动原有目录结构的前提下建好了目录结构,如下:
在这里插入图片描述

4, 关于Test文件夹

这个文件夹可删可不删,对我们现阶段来说没什么用,是一些function test之类的相关的,为了减小仓库的体积这里还是建议删掉,后面要用可以再添加进来。

总结

本文主要介绍了建立freertos移植目录结构的问题,而之所以要这样做,就是为了以后如果有版本升级的时候直接替换不会对工程产生很大影响。

文章太长看起来费劲,代码级的移植放在下一篇文章

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: rt-thread是一个轻量级的实时操作系统,并且它可以被移植到不同的处理器架构上,包括RISC-V。移植rt-thread到RISC-V处理器需要进行一些步骤。 首先,需要根据RISC-V处理器的体系结构和指令集特性,进行rt-thread的适配和修改。这可能涉及到整理处理器的文件和寄存器初始化的代码,以匹配RISC-V的特性。 其次,需要编写RISC-V处理器对应的启动代码,这些代码的目的是初始化处理器并设置一些必需的环境变量,例如堆栈指针和中断向量表。 接下来,需要实现RISC-V处理器的硬件抽象层(HAL),包括时钟管理、中断管理、内存管理和设备驱动等。这些代码将负责处理处理器底层的硬件操作和通信。 然后,根据目标RISC-V处理器的内存映射和外设配置,进行rt-thread的内核配置和编译。这包括选择所需的组件、功能和驱动器,并进行相应的配置。 最后,在RISC-V处理器上运行rt-thread,并进行测试和调试。这可能包括验证系统的稳定性、性能和功能。如果有必要,还可以进行性能优化和问题修复。 通过以上步骤,就可以成功地将rt-thread移植RISC-V处理器上,并实现在该处理器上运行实时操作系统的功能。这样可以为RISC-V处理器提供更多的应用和开发选择。 ### 回答2: rt-thread是一个开源的实时操作系统,支持多种硬件平台。而RISC-V是一种基于开源指令集架构的处理器架构。要将rt-thread移植RISC-V平台,需要进行以下步骤: 1. 首先,需要了解RISC-V处理器的初步知识,包括其指令集、寄存器、内存架构等等。这样才能更好地理解RISC-V的工作方式和特性。 2. 接下来,需要根据RISC-V处理器的特点,对rt-thread进行修改和适配。这包括对内核的调度器、中断处理、任务管理等进行适配,以使其能够在RISC-V平台上正常工作。 3. 在适配过程中,需要根据RISC-V的指令集架构,对rt-thread的汇编代码进行修改。这涉及到对寄存器、堆栈、内存访问等方面的调整,以确保rt-thread能够在RISC-V上正确运行。 4. 还需要根据RISC-V平台的硬件特性,对rt-thread的设备驱动进行适配。这包括对串口、GPIO、定时器等外设的驱动程序进行修改,以使其能够与RISC-V平台上的硬件相匹配。 5. 最后,进行一系列的测试和验证,确保rt-thread在RISC-V平台上的正常运行。这包括对实时性、稳定性、性能等方面进行测试,以验证移植的正确性和可靠性。 综上所述,rt-thread移植RISC-V平台需要对rt-thread进行修改和适配,同时还需要对汇编代码和设备驱动程序进行调整。最终需要进行测试和验证,以确保rt-thread在RISC-V平台上的正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山猫Show

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值