2024年3月11日发(作者:)

RISCVMCU

FreeRTOS

移植与应用开发

付元斌

,

张爱华

,

何小庆

()

北京麦克泰软件技术有限公司

,

北京

100085

摘要

:

具有相同的

RISCV

指令集的处理器实现并不相同

本文将针对基于

RISCV

开源指令集的处理器芯片

介绍

F

嵌入式系统很

GD32VF103MCU

,

reeRTOS

IAREWRISCV

编译和开发环境下的移植过程

采用

RTOS

,

难监控系统的运行时行为

发现应用存在的问题

,

本文基于

T

分析系统中可能

racealzer

分析工具直观地跟踪系统行为

,

y

的错误

,

提高代码的鲁棒性

;

关键词

:

Bumblebee

内核

;

TracealzerFreeRTOS

移植

;

RISCV

处理器

y

中图分类号

:

TP316.2

文献标识码

:

A

PortinndAlicationDevelomentofFreeRTOSBasedonRISCVMCU

g

a

ppp

rocessofFreeRTOSunderIAREWRISCVenvironmentforthe

p

rocessorchiD32VF103basedonRISCVoensourceinstruc-

pp

G

p

eRTOS

,

itisdifficulttomonitortheruntimebehaviorofthesstemandfind

p

ticle

ypp

:

Abstract

Pro

p

aerwillintroducethemiration

ppg

(,)

00085

,

China

jg

M

gy

C

jg

1

,,

FuYuanbinZhanihuaHeXiaoin

g

A

qg

code.

,

willusetheTracealzeranalsistooltovisuallsstembehavioranalze

p

ossibleerrorsinthesstem

,

andimrovetherobustnessofthe

yyyyyyp

:;;;

Kewords

BumblebeeKernelTracealzerFreeRTOS

p

ortinRISCVMCU

yg

y

0

内核

,

芯片提供了

1

以及

108MHz

的主频

,

6~128KB

,

集架构

(

具有良好的应用前景

目前

RISA

)

ISCV

架构

的处理器陆续发布

,

其生态环境及应用也在不断丰富

,

相对于

A

RM

架构

,

RISCV

的应用还处于起步阶段

,

,/

杂的应用需要

R

μ

TOS

支撑

目前许多

RTOSCOS

原则的开源指令

RISCV

是基于精简指令集

(

RISC

)

片上闪存和

6~3

具有多个通用定时器和

2KB

SRAM

,

、、、、

都提

IIIFreeRTOSRTThreadZehrOSembOS

,

py

供了对

R

传统

ISCV

处理器的支持

采用了

RTOS

,

的调试手段很难监控系统的实时行为

,

RTOS

上进行

开发时需要额外的工具和方法验证你的软件行为

,

提高代

码的可靠性

本文使用兆易创新的

G

D32VF103VEVAL

开发板

,

I

介绍如何将

FAREWRISCV

编译和开发环境

,

reeRTOS

2

SPIIC

GPIO

GD32VF103VEVAL

评估板

(

)

1

使用

G

板载

JD32VF103VBT6

作为主控制器

,

TAG

(

提供了多达

6ECLIC

)

8

个外部中断并可嵌套

16

个可编

程优先级

,

GD32VF103MCU

支持多种外设如

UART

多通道

DMA

控制器

GD32VF103MCU

的中断控制器

接口以及丰富的外设资源

的资源

NucleiBumblebee

内核支持

RV32IMAC

指令集

架构

;

特权模式支

持机器模式和用户

模式

,

可以实现

RTOS

与应用的隔

寄存器组包含

32

V

标准的状态寄存

器以及内核自定义

通用寄存器

RISC

1 GD32VF103VEVAL

评估板

RTOS

GD32VF103

上的移植仅使用了内核相关

移植到

G

并使用

PD32VF103

,

erceio

Tracealzer

工具分

py

析基于

FreeRTOS

的应用程序运行时行为

,

提升软件安全

;

1 GD32VF103RISCVMCU

GD32VF103RISCVMCU

基于

NucleiBumblebee

4

Microcontrollers&EmbeddedSstems

2021

年第

1

y

www

.

mesnet

.

com

.

cn

,

产生的计时器中断和软件中断可以用于

RTIMER

)

TOS

时钟节拍处理和任务切换

,

CSR

寄存器

内核提供了计时器单元

(

TimerUnit

alzer

提供超过

30

种视图可视化

RTOS

运行时行为

,

y

图间以直观的方式相互关联

,

洞察运行时行为

(

包括任务

,

运行时间信息

各任务之间的通信流

CPU

的使用率等

)

帮助开发人员解决问题

,

提高软件的可靠性

,

改善软件的

性能

,,

用于管理所有的中断源

InterrutControllerECLIC

)

p

ECLC

的每个中断源可以配置为向量或非向量处理模式

Bumblebee

内核支持在

RISCV

标准

CLIC

基础上

优化而来的改进型内核中断控制器

(

EnhancedCoreLocal

3 FreeRTOS

移植到

GD32VF103MCU

向量模式中断被处理器内核响应后

,

处理器直接跳入该中

断的向量入口存储的目标地址

;

非向量模式中断被处理器

响应后

,

处理器直接跳入所有中断共享的入口地址

但中

断响应时

,

处理器硬件不会保存上下文

,

需要软件实现

只有与

FreeRTOS

内核绝大部分都采用

C

语言编写

,

处理器相关的上下文切换采用汇编语言实现

,

目的是保证

上下文切换的效率

FreeRTOS

移植到

GD32VF103

开启和关闭中

MCU

上的关键要点是实现以下

4

个步骤

:

2 FreeRTOS

Tracealzer

介绍

y

FreeRTOS

是英国人

RichardBarr003

年发布的开

y

2

源实时内核

F

是世

reeRTOS

支持超过

35

CPU

架构

,

断的方式

;

进入和退出临界区的方式

;

产生周期性的中断

作为系统的时钟节拍

;

任务的上下文切换

3.1

中断管理和临界区实现

代码的临界区也称为代码的临界段

,

这部分代码在执

行时不允许被打断

FreeRTOS

的临界区通过关中断来

实现

,

在进入临界段之前须关中断

,

而临界段代码执行完

毕后要立即开中断

GD32VF103MCU

ECLIC

中断控

,

界最受开发者欢迎的

R

2TOS017

年每

3

分钟就有一

(

次下载

F

包括

F

reeRTOS

有一个系列软件

,

reeRTOS

源版本

)

授权版本

)

安全版

OenRTOS

(

SAFERTOS

(

p

,

)

Am

开源物联网操作系统

)

开源

azonFreeRTOS

(

FreeRTOS

遵循

MITlicense

模式

),

制器有一个中断目标阈值级别寄存器

(

可以实现部

mth

在移植

F

通过设置

m

reeRTOS

,

th

来实现开关中断

,

于优先级别比阈值高的中断则不受

F

中断

reeRTOS

管理

,

不存在额外的延迟

和运行时行为的关联变得不那么明显

,

传统的调试器不足

以理解系统的行为

,

特别是运行时行为

Perceio

Tracealzer

工具运行在

Windows

py

、、

可用于目标系统运行

LLinuxPC

,

inuxFreeRTOS

、、、/

OenRTOSSAFERTOSWindRiverVxWorksCOS

p

μ

在多线程软件系统中

,

RTOS

带来的复杂度让源代码

分中断屏蔽

,

优先级别低于该阈值的中断将不会被响应

3.2

系统时钟节拍支持

操作系统需要一个时钟节拍

,

以实现系统的延时

时等与时间相关的处理

时钟节拍是特定的周期性中断

,

中断的周期就是节拍的时间

节拍的时间长短根据实际

应用决定

,

时钟节拍的频率越高

,

系统的开销就越大

RISCV

架构定义了一个

64

位宽度的

mtime

计数器

,

mtime

计数值增加到与

mtimecm

p

寄存器预设的值相等

,

可以产生中断

选择

mtime

计数器来产生系统时钟

节拍

,

根据

mtime

的时钟频率和系统节拍频率算出

当中断发生后

,

通过改写

mmtimecmtimecm

p

的值

,

p

2.1 FreeRTOS

的功能

III

embOS

RTOS

应用行为分析

FreeRTOS

支持抢占和时间片轮询两种任务调度方

,

支持无限数量的应用任务

;

提供队列

信号量

互斥信

号量

事件标志等内核机制

,

满足任务间同步及通信需求

;

FreeRTOS

提供了针对

IAR

GCC

工具链的标准

RISC

支持

3V

处理器内核移植示例

,

2

位及

64

位架构内核

此外

,

针对低功耗应用提供了

tickless

模式

最新版本

()。

它包含了预配置的

ORV32I

RV64IenISAVEG-

p

AboardSiFiveHiFive

开发板

QEMU

模拟器以及用于

Microchi2GL025

开发板的

AntmicroRenode

模拟器

p

M

示例

,

可以扩展支持任何

R

但因为每种

ISCV

处理器

,

3.3

实现上下文切换

mtime

的值来清除中断

能够正确完成任务调度的关键是上下文切换

上下文切

换的过程包括

:

把即将退出运行态的任务的运行现场保存

到其任务堆栈

;

从下一个要运行的任务的堆栈中恢复它的

运行现场

上下文切换的时间应尽可能短

,

一般由汇编代

码编写

,

作为操作系统移植的一部分

上下文切换分为任

务级别及中断级别的切换

上下文切换的代码通常放在

异常处理程序中

,

该异常的优先级别应设置为最低

R

能够用来作为任务切

ISCV

架构的处理器上

,

上下文是某一时间点

CPU

的寄存器内容

,

FreeRTOS

需要有移植的

RISCV

处理器在微架构实现上的不同

,

工作

2.2 Tracealzer

分析工具

y

轻松地收集多任务

Tracealzer

软件工具能够快速

y

软件有用和有意义的行为

,

可以快速集成到现有的开发环

,

通过快照模式或流模式采集系统运行时数据

Trace-

敬请登录网站在线投稿

()

g

2021

年第

1

5

ECLIC

单元进行统一管理

我们实现的

FreeRTOS

移植

选用软件中断作为上下文切换的实现机制

调用

e

软件中断通过往

mcall

指令来触发

;

si

p

寄存器写

“”

触发

,

清除

G10

D32VF103

的软件中断连接到

换的异常有两种

:

ecall

异常和软件中断

ecall

异常通过

_

m

_

h

()

软件中断服务函数的上下文切换正

eclicsiandler

p

确性

启动第一个任务和任务上下文切换的代码验证能

正常工作

,

移植的

FreeRTOS

已可以实现基本的任务调

,

接着再继续测试开关中断操作和临界区是否正常

试开关中断需要增加另外一个外设中断

,

将其优先级别分

别设置大于或小于

m

代码中手动调用

th

阈值进行测试

,

,

开关中断操作

A

检测中断触发是否与设计的模式一

PI

,

验证

FreeRTOS

对中断的控制

采用同样的方法测试

进入和退出临界区

3.4

移植文件修改

FreeRTOS

与处理器相关的移植代码存储在

p

ort-

M.s

p

ort.c

三个文件当中

p

ortmac-

p

进入和

ro.h

头文件定义了

FreeRTOS

使用的数据类型

退出临界区的宏

实现开关中断的宏

,

以及触发和清除软

件中断的宏

)

ortASM.s

中用汇编语言实现

vPortStartFirstTask

(

p

,

用于启动第一个任务

,

它的核心操作是从

p

xCurrent-

_

m

()

务函数

e

将当前的寄存器现场

(

通用

clicsiandler

p

_

h

寄存器

x

机器模式状态寄存器

m1

x5~x31

,

status

以及机

)

保存到当前在运行任务的器模式异常

PC

寄存器

mec

p

堆栈当中

,

然后从

p

xCurrentTCB

取出下一个就绪中优先

测试系统的

通过

FreeRTOS

系统服务调用测试

,

各项服务

(

如信号量

消息队列

事件标志等

)

是否正常

,

测试在受

F

消息等操作是

reeRTOS

管理的

ISR

中发信号

否正确

基础调试测试都通过之后

,

已经基本可以验证移植是

否成功

在此基础上还可以借助额外的工具继续验证

,

如通过

EWRISCV

自带的

FreeRTOS

调试插件显示的

信息进行确认

(

如图

2

所示

)

TCB

中取出当前就绪任务中优先级最高任务的堆栈指针

通过

S

实现软件中断的服

SP

,

P

恢复寄存器现场

此外

,

级最高任务的堆栈指针

S

完成任务的

P

恢复寄存器现场

,

上下文切换

ort.c

文件中重点实现堆栈初始化函数

p

xPortInitia-

p

)、

启动

FliseStack

(

reeRTOS

调度器特定的处理函数

()、

系统时钟节拍定时器初始化函数

xPortStartScheduler

(),

以及系统时钟节拍中断服务

vPortSetuTimerInterrut

pp

()。

这几个函数分别需要根据

函数

xPortSsTickHandler

y

RISCV

架构和

GD32VF103MCU

硬件特性来实现其

功能

2 EWRISCVRTOS

调试插件

Task

窗口

4 Tracealzer

分析工具的应用

y

4.1

移植跟踪记录器库

Tracealzer

的跟踪记录器库是运行在嵌入式目标端

y

的一个软件库

,

F

负责记录

reeRTOS

项目集成在一起

,

3.5

移植测试和验证

验证移植采用调试和借助相应的辅助工具来进行

,

使

I

在代码中创建两个用户任

AREWRISCV

建立项目

,

务进行调试

,

代码调试时需要验证

:

RTOS

在运行时产生的事件

记录的事件如果是存储在

);

这种工作方式称为快照模式

(

如果是

RAM

,

Snashot

p

()。

跟踪记录器库不依赖于处理器硬件

,

只需

Streamin

g

要使用一个高精度的定时器产生时间戳

,

为记录的事件添

加时间信息

RISCV

架构的处理器可以利用内核的

mccle

计数

y

器来产生时间戳

,

Cmccle

是一个

64

位的计数器

,

PU

y

的周期进行计数

,

所以频率与

C

精度非常

PU

时钟相同

,

mccle

由两个

32

位的寄存器组成

,

Tracealzer

只需

yy

GD32VF103

的时间戳实现接口

:

通过通信端口实时发送到

P

则工作在流模式

C

端软件

,

通过在系统时钟节拍

ISR

和软件中断

ISR

中添加

断点

,

结合

RISCV

mtime

mccle

寄存器验证系统

y

时钟节拍正确产生

,

且软件中断能够正常触发

栈中恢复的寄存器内容是否与堆栈初始化时写入的内容

()

函数的工作正确性

Task

通过添加断点查看从任务堆

启动第一个任务时

,

()

一致

,

从而测试

p

vxPortInitialiseStackPortStartFirst-

在软件中断服务程序

在执行任务上下文切换时

,

中添加断点

,

单步执行

,

同时通过

EWRISCV

memor

y

观察窗口查看压栈到当前任务堆栈中的内容是否与对应

的寄存器内容相同

;

在恢复下文时

,

检查从下一个执行任

务堆栈中恢复的寄存器内容是否与堆栈中的一致

验证

要使用低

32

位寄存器

trcHardwarePort.h

中定义

_

HWT

_

T#defineTRCCYPETRC

_

FREE

_

RUNNING

_

32BIT

_

IN-

_()

#defineTRC

_

HWTC

_

COUNTreadcsrmccle

y

CR

#defineTRC

_

HWTC

_

PERIOD0

6

Microcontrollers&EmbeddedSstems

2021

年第

1

y

www

.

mesnet

.

com

.

cn

#defineTRC

_

HWTC

_

DIVISOR4

#defineTRC

_

HWTC

_

FREQ

_

HZTRACE

_

CPU

_

CLOCK

_

HZ

#defineTRC

_

IRQ

_

PRIORITY

_

ORDER1

[(];

结束时间开始时间

)(

执行时间

)

启动时间

,

从任务

就绪到开始执行之间的这段时间

防止在记录事件时

Tracealzer

也需要实现临界区

,

y

发生任务切换

,

导致产生错误

实现是通过关中断

,

可以

直接使用

FreeRTOS

的关中断机制在

trcKernelPort.h

实现临界区的宏接口

:

;

status

)

#defineTRACE

_

ALLOC

_

CRITICAL

_

SECTION

(

int

__

ir

q

_

);

tus=

p

ortSET

_

INTERRUPT

_

MASK

_

FROM

_

ISR

(

)__

#defineTRACE

_

ENTER

_

CRITICAL

_

SECTION

(

irta-

q

_

s

___);

INTERRUPT

_

MASK

_

FROM

_

ISR

(

irstatus

q

)

#defineTRACE

_

EXIT

_

CRITICAL

_

SECTION

(

ortCLEAR

_

p

器上需要做的工作

以上是将

Tracealzer

跟踪记录器库移植到一款处理

y

4 F

场景

2

发生了抢占

)

reeRTOS

分析基础实例的时间关系

(

4.2

跟踪并分析

FreeRTOS

应用

Tracealzer

跟踪记录器库添加到

EWRISCV

y

并进行必要的配置

,

工作在快照模式

FreeRTOS

项目中

,

在应用代码中创建

4

个任务

,

分别为

Led1Task~

、,

任务优先级依次递增

,

程序运行一

Led3TaskButtonTask

段时间

,

将快照数据通过

EWRISCV

保存成

Hex

文件

并加载到

PC

端的

Tracealzer

中进行分析

y

如图

3

所示

,

通过水平时间轴视图查看各个任务的执

时间为从任务就绪到任务代码开始执行的这段时间

,

时长

,

7

μ

因为该实例未发生被抢占的情况

,

所以这

7

μ

ss

L

如图

5

所示

)

为例

,

等待

ed3Task

的第

38

个实例

(

时间是完成任务上下文切换所需的时间

行情况

:

每个任务或中断占一行

,

从左向右为时间轴的方

,

行中有色矩形为该任务或中断的一次执行实例

由时

间轴窗口可以快速地预览整个运行过程中系统的执行情

,

放大窗口的时间分辨率之后可以仔细了解任务执行时

相关的内核事件和时间信息

5 Led3Task

任务实例

38

的时间量

能够生成多种视图来观测系统运行时存在的问题

,

例如设

计缺陷导致的线程饥饿

死锁等

,

以及发现系统中不必要的

延迟

,

帮助开发者解决系统的问题

,

提高嵌入式系统的实时

通过跟踪到的事件和记录的时间戳信息

,

Tracealzer

y

这些问题使用传统调试手段难以发现

,

而且效率不高

5

3 Tracealzer

水平时间轴视图

y

GD32VF103

IAREWRISCV

工具链上移植

FreeRTOS

的过程

,

以及对移植的系统进行验证的方法

在此基础上

本文介绍了基于

RISCV

指令集的微控制器

4.3

任务的时间量分析

),

参与者

RTOS

的任务或者中断称为参与者

(

Actor

的一次执行称为实例

分析任务的执行通常需要了解如

下几种时间

:

起始和结束时间

,

参与者实例的开始和结束

时间

;

执行时间

,

参与者实例使用的

C

不包括

PU

时间量

,

抢占

;

响应时间

,

从参与者实例开始到结束的时间

(

更确切

地说

,

任务的响应时间是从任务开始准备就绪时计算的

,

;

即内核将任务的调度状态设置为就绪的时间

)

等待时间

,

4

所示实例中参与者实际没有执行的时间

,

计算方式为

移植

T

并通过跟踪

Fracealzer

跟踪记录器库

,

reeRTOS

y

统运行进一步观测系统的运行

,

并对任务的执行进行了分

V

最活跃的应用市场

,

越来越多的开

RISCV

给嵌入式系统开发带来许多优势

,

发者开始尝试

RISCV

以上工作对于基于

RTOS

技术的

嵌入式与物联网是

RISC

RISCV

嵌入式开发与应用会有所帮助

参考文献

[]

芯来科技

.

/[

1Bumblebee

内核指令架构手册

[

EBOL

]

.2020

indexu

p

.

]:///

kstart

q

uickstart

pq

26

敬请登录网站在线投稿

()

g

2021

年第

1

7

DCASE2019

测试集和

UrbanSound8K

测试集上

,

模型的识别精度如表

1

和表

2

所列

,

并且与一些最新的方

法进行了对比

)

1

精度比较

(

DCASE2019

AudioResnet

():

2.

[]

5SANCHEZFERNANDEZLP

,

SANCHEZPEREZLA

,

,

ftClassification

型测试精度

(

DCASE

)

[

14

]

ResNetlikemodel

Baselinesstem

y

80.2%

76.6%

62.5%

[

15

]

():

2239259.

[]

陈心昭

.

]

噪声源识别技术的进展

[

合肥工业大学学报

(

6J.

,

():

然科学版

)

2009

,

325609614.

andAcousticImactEstimationBasedonRealTimeTakeoff

p

[],

Processinetters2013

,

38

g

L

2

与其他方法的精度比较

AudioResnet

[]

竺乐庆

,

张真

.

基于

MF7CC

GMM

的昆虫声音自动识别

[]():

昆虫学报

,

J.2012

,

554466471.

型测试精度

(

UrbanSound8K

)

[

16

]

[]

石文雷

,

樊新海

,

张传清

.

基于频谱动态特征和

C8SSVM

]():

装甲车辆识别

[

计算机应用

,

J.2018

,

38S14447

,

72.

Unsuervisedfeaturelearnin

pg

Baselinesstem

y

[

17

]

76.4%

73.6%

68%

[]

董语诗

,

]

时浏艺

,

丁一坤

.

基于

HMM

的声场景分类

[

信息

9J.

():

化研究

,

2018

,

4433947

,

52.

[]

中兴通讯采用英特尔

F10PGA

在深度学习上取得性能突破

[]():

单片机与嵌入式系统应用

,

J.2017

,

17388.

从表中可以看到

,

与其他先进的分类方法相比

,

本文

提出的

AudioResnet

模型在分类精度上有较大提高

[]

庞悦

,

赵威

,

张雅楠

,

.

基于深度学习的

L11STM

的交通流量预

],():

[

单片机与嵌入式系统应用

,

J.2.

[]

王枫

,

陈小平

.12CNN

深度学习的验证码识别及

Android

]:

台移植

[

单片机与嵌入式系统应用

,

J.2019

,

19

(

7

)

20

4

本文针对声源目标分类中小样本训练时分类模型性

能不佳的问题

,

使用深度学习方法对不同声源发出的声音

数据进行分类

,

使用

loel

声谱图特征作为特征预提取

g

m

方法

,

采用基于

Resnet

网络结构的分类模型对预提取特征

该模型性能在

D

号分类模型

AudioResnetCASE2019

实现了良好的效果

,

UrbanSound8K

数据集上得到了验证

,

在声源探测领域具有一定的工程应用价值

参考文献

[]

1ISNARDV

,

CHASTRESV

,

VIAUD

22

,

73.

[]

13PIROTTAE

,

MERCHANTND

,

THOMPSONPM

,

etal.

[]

N14uenT

,

icSceneClassificationwith

gyp

Quantifinheeffectofboatdisturbanceonbottlenosedol-

yg

t

[],():

nserv2.

pgg

a

y

数据进行分类处理

,

建立了识别效果良好的深度学习声信

(,

mediaandExoICME

)

2019.

p

[]

M15esarosA

,

HeittolaT

,

devicedataset

[]:

forurbanacousticsceneclassificationJ.2018

,

arXiv1807.

MismatchedRecordinevicesUsinixtureofExerts

g

D

g

M

p

[//

LaerC

]

2019IEEEInternationalConferenceonMulti-

y

():

2019

,

918005.

[]

樊新海

,

石文雷

,

张传清

.

基于

VM2D

多尺度熵和

ABCSVM

],():

装甲车辆识别

[

装甲兵工程学院学报

,

J.2.

Thetimecourseofauditoreconitionmeasuredwithraid

y

r

gp

,

seuencesofshortnaturalsounds

[

J

]

.ScientificReorts

qp

,

DELMONIetal.

09840.

[],

etandTaxonomfor

y

C

,

y

//

UrbanSoundResearch

[

C

]

acmInternationalConference

,

onMultimedia2014.

[],

17SALAMONJJACOBYC

,

etandTax-

//

onomorUrbanSoundResearch

[

C

]

roceedinsofthe

y

f

pg

[]

孙国强

,

樊新海

,

石文雷

.

基于

M3FCC

和支持向量机的装甲车辆

],():

识别研究

[

国外电子测量技术

,

J.2.

,

acmInternationalConferenceonMultimedia2014.

[]

4RUBENGONZALEZ

mammalsoundclassificationbasedona

p

arallel

[],

coustics

gypp

HERNANDEZF

,

PASTOR

SANCHEZFERNANDEZL

,

SUAREZGUERRAS

,

et

,

王鹏程

(

硕士研究生

)

主要研究方向为信息探测与处理

()

责任编辑

:

薛士然

收稿日期

:

2020-07-20

]

胡振波

.

7

[

2RISCV

架构与嵌入式开发快速入门

[

M

]

.

[]

何小庆

.

]

微纳电子与智

33

种物联网操作系统分析与比较

[

J.

()

能制造

,

20203.

北京

:

人民邮电出版社

,

2019.

[]

U

/

5sinreeRTOSonRISCVMicrocontrollers

[

EBOL

]

.

g

F

[:///

202009

]

.reeRTOS

pgg

F

[]

D4AVIDPATTERSON

,

手册

:

一本开源指令集的指南

,

2018.

V

[]

meOeratinstemsBook2The

gpg

S

y

[:,

PracticeM

]

.MarkfieldLindentreeAssociates2017.

.

()

责任编辑

:

芦潇静

收稿日期

:

2020-09-10

2 6

Microcontrollers&EmbeddedSstems

2021

年第

1

y

www

.

mesnet

.

com

.

cn