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


发布评论