4
M i c r o c o n t r o l l e r s &E m b e d d e d S y
s t e m s 2021年第1期w w w .m e s n e t .c o m .c n
R I S C V M C U 的F r e e R T O S 移植与应用开发
付元斌,张爱华,何小庆
(北京麦克泰软件技术有限公司,北京100085
)摘要:具有相同的R I S C V 指令集的处理器实现并不相同㊂本文将针对基于R I S C V 开源指令集的处理器芯片
G D 32V F 103M C U ,介绍F r e e R T O S 在I A R E WR I S C V 编译和开发环境下的移植过程㊂采用R T O S 后,
嵌入式系统很难监控系统的运行时行为㊁发现应用存在的问题,本文基于T r a c e a l y z e r 分析工具直
观地跟踪系统行为,分析系统中可能的错误,提高代码的鲁棒性㊂
关键词:B u m b l e b e e 内核;T r a c e a l y
z e r ;F r e e R T O S 移植;R I S C V 处理器中图分类号:T P 316.2 文献标识码:A
P o r t i n g a n d A p p l i c a t i o n D e v e l o p
m e n t o f F r e e R T O S B a s e d o n R I S C V M C U F u Y u a n b i n ,Z h a n g A i h u a ,H e X i a o q i n g
(B e i j i n g M i c r o t e c R e s e a r c h S o f t w a r e T e c h n o l o g y C o .L t d .,B e i j i n g 1
00085,C h i n a )A b s t r a c t :P r o c e s s o r i m p l e m e n t a t i o n s w i t h t h e s a m e R I S C V i n s t r u c t i o n s e t a r e n o t t h e s a m e .T h i s p a p e r w i l l i n t r o d u c e t h e m i g
r a t i o n p r o c e s s o f F r e e R T O S u n d e r I A R E WR I S C V e n v i r o n m e n t f o r t h e p r o c e s s o r c h i p G D 32V F 103b a s e d o n R I S C V o p e n s o u r c e i n s t r u c -t i o n s e t .W i t h t h e R T O S ,i t i s d i f f i c u l t t o m o n i t o r t h e r u n t i m e b e h a v i o r o f t h e s y s t e m a n d f i n d p r o b l e m s i n t h e a p p
l i c a t i o n .T h i s a r t i c l e w i l l u s e t h e T r a c e a l y z e r a n a l y s i s t o o l t o v i s u a l l y s y s t e m b e h a v i o r ,a n a l y z e p o s s i b l e e r r o r s i n t h e s y s t e m ,a n d i m p
r o v e t h e r o b u s t n e s s o f t h e c o d e .
K e y
w o r d s :B u m b l e b e e K e r n e l ;T r a c e a l y z e r ;F r e e R T O S p o r t i n g ;R I S C V M C U 0 引 言
R I S C V 是基于精简指令集(R I S C )
原则的开源指令集架构(I S A ),具有良好的应用前景㊂目前R I S C V 架构的处理器陆续发布,其生态环境及应用也在不断丰富,但相对于A R M 架构,R I S C V 的应用还处于起步阶段,
复杂的应用需要R T O S 支撑㊂目前许多R T O S ,如μC /O S
I I I ㊁F r e e R T O S ㊁R T T h r e a d ㊁Z e p h y r O S ㊁e m b O S 等,都提供了对R I S C V 处理器的支持㊂采用了R T O S 后,
传统的调试手段很难监控系统的实时行为,在R T O S 上进行开发时需要额外的工具和方法验证你的软件行为,提高代码的可靠性㊂
本文使用兆易创新的G D 32V F 103V E V A L 开发板,基于I A R E W R I S C V 编译和开发环境,介绍如何将F r e e R T O S
移植到G D 32V F 103上,并使用P e r c e p i o 的T r a c e a l y z e r 工具分析基于F r e e R T O S 的应用程序运行时行为㊂
1 G D 32V F 103R I S C V M C U
G D 32V F 103R I S C V M C U 基于N u c l e i B u m b l e b e e
内核,芯片提供了108MH z 的主频,以及16~128K B 的
片上闪存和6~32K B 的S R AM ,
具有多个通用定时器和多通道D MA 控制器㊂G D 32V F 103M C U 的中断控制器
(E C L I C )提供了多达68个外部中断并可嵌套16个可编图1 G D 32V F 103V E V A L 评估板
程优先级,G D 32V F 103M C U 支持多种外设如U A R T ㊁
S P I ㊁I 2
C ㊁G P I O 等㊂G
D 32V F 103V
E V A L 评估板(见图1)使用G D 32V
F 103V B T 6作为主控制器,板载J T A G
接口以及丰富的外设资源㊂
R T O S 在G D 32V F 103上的移植仅使用了内核相关
的资源㊂N u c l e i B u m b l e b e e 内核支持R V 32I MA C 指令集架构;特权模式支持机器模式和用户模式,可以实现R T O S 与应用的隔离,提升软件安全;
寄存器组包含32个通用寄存器㊁R I S C
V 标准的状态寄存器以及内核自定义
敬请登录网站在线投稿
(t o u g a o.m e s n e t.c o m.c n)2021年第1期
5
的C S R寄存器㊂内核提供了计时器单元(T i m e r U n i t, T I M E R),产生的计时器中断和软件中断可以用于R T O S 时钟节拍处理和任务切换㊂
B u m b l e b e e内核支持在R I S
C V标准C L I C基础上优化而来的改进型内核中断控制器(E n h a n c e d C o r e L o c a l I n t e r r u p t C o n t r o l l e r,E C L I C),用于管理所有的中断源㊂E C L C的每个中断源可以配置为向量或非向量处理模式㊂向量模式中断被处理器内核响应后,处理器直接跳入该中断的向量入口存储的目标地址;非向
量模式中断被处理器响应后,处理器直接跳入所有中断共享的入口地址㊂但中断响应时,处理器硬件不会保存上下文,需要软件实现㊂2F r e e R T O S和T r a c e a l y z e r介绍
F r e e R T O S是英国人R i c h a r d B a r r y2003年发布的开源实时内核㊂F r e e R T O S支持超过35种C P U架构,是世界最受开发者欢迎的R T O S,在2017年每3分钟就有一次下载㊂F r e e R T O S有一个系列软件,包括F r e e R T O S(开源版本)㊁O p e n R T O S(授权版本)㊁S A F E R T O S(安全版本)和A m a z o n F r e e R T O S(开源物联网操作系统),开源的F r e e R T O S遵循M I T l i c e n s e模式㊂
在多线程软件系统中,R T O S带来的复杂度让源代码和运行时行为的关联变得不那么明显,传统的调试器不足以理解系统的行为,特别是运行时行为㊂
P e r c e p i o的T r a c e a l y z e r工具运行在W i n d o w s或L i n u x P C上,可用于目标系统运行L i n u x㊁F r e e R T O S㊁O p e n R T O S㊁S A F E R T O S㊁W i n d R i v e r V x W o r k s㊁μC/O S
I I I和e m b O S的R T O S应用行为分析㊂
2.1F r e e R T O S的功能
F r e e R T O S支持抢占和时间片轮询两种任务调度方式,支持无限数量的应用任务;提供队列㊁信号
量㊁互斥信号量㊁事件标志等内核机制,满足任务间同步及通信需求;此外,针对低功耗应用提供了t i c k l e s s模式㊂最新版本F r e e R T O S提供了针对I A R及
G C C工具链的标准R I S C V处理器内核移植示例,支持32位及64位架构内核(R V32I和R V64I)㊂它包含了预配置的O p e n I S A V E G-A b o a r d㊁S i F i v e
H i F i v e开发板㊁Q E MU模拟器以及用于M i c r o c h i p M2G L025开发板的A n t m i c r o R e n o d e模拟器示例,可以扩展支持任何R
I S C V处理器,但因为每种R I S C V处理器在微架构实现上的不同,需要有移植的工作㊂
2.2T r a c e a l y z e r分析工具
T r a c e a l y z e r软件工具能够快速㊁轻松地收集多任务软件有用和有意义的行为,可以快速集成到现有的开发环境,通过快照模式或流模式采集系统运行时数据㊂T r a c e-a l y z e r提供超过30种视图可视化R T O S运行时行为,视图间以直观的方式相互关联,洞察运行时行为(包括任务运行时间信息㊁各任务之间的通信流㊁C P U的使用率等),帮助开发人员解决问题,提高软件的可靠性,改善软件的性能㊂
3F r e e R T O S移植到G D32V F103M C U
F r e e R T O S内核绝大部分都采用C语言编写,只有与处理器相关的上下文切换采用汇编语言实现,目的是保证上下文切换的效率㊂将F r e e R T O S移植到
G D32V F103 M C U上的关键要点是实现以下4个步骤:开启和关闭中断的方式;进入和退出临界区的方式;产生周期性的中断作为系统的时钟节拍;任务的上下文切换㊂
3.1中断管理和临界区实现
代码的临界区也称为代码的临界段,这部分代码在执行时不允许被打断㊂F r e e R T O S的临界区通过关中断来实现,在进入临界段之前须关中断,而临界段代码执行完毕后要立即开中断㊂G D32V F103M C U的E C L I C中断控制器有一个中断目标阈值级别寄存器(m t h),可以实现部分中断屏蔽,优先级别低于该阈值的中断将不会被响应㊂在移植F r e e R T O S时,通过设置m t h来实现开关中断,对于优先级别比阈值高的中断则不受F r e e R T O S管理,中断不存在额外的延迟㊂
3.2系统时钟节拍支持
操作系统需要一个时钟节拍,以实现系统的延时㊁超时等与时间相关的处理㊂时钟节拍是特定的周期性中断,中断的周期就是节拍的时间㊂节拍的时间长短根据实际应用决定,时钟节拍的频率越高,系统的开销就越大㊂R I S C V架构定义了一个64位宽度的m t i m e计数器,当m t i m e计数值增加到与m t i m
e c m p寄存器预设的值相等时,可以产生中断㊂选择m t i m e计数器来产生系统时钟节拍,根据m t i m e的时钟频率和系统节拍频率算出m t i m e c m p的值,当中断发生后,通过改写m t i m e c m p或者m t i m e的值来清除中断㊂
3.3实现上下文切换
上下文是某一时间点C P U的寄存器内容,F r e e R T O S 能够正确完成任务调度的关键是上下文切换㊂上下文切换的过程包括:把即将退出运行态的任务的运行现场保存到其任务堆栈;从下一个要运行的任务的堆栈中恢复它的运行现场㊂上下文切换的时间应尽可能短,一般由汇编代码编写,作为操作系统移植的一部分㊂上下文切换分为任务级别及中断级别的切换㊂上下文切换的代码通常放在异常处理程序中,该异常的优先级别应设置为最低㊂
在R I S C V架构的处理器上,能够用来作为任务切
6
M i c r o c o n t r o l l e r s &E m b e d d e d S y
s t e m s 2021年第1期w w w .m e s n e t .c o m .c n
换的异常有两种:e c a l l 异常和软件中断㊂e c a l l 异常通过
调用e c a l l 指令来触发;软件中断通过往m s i p 寄存器写 1 触发,写 0 清除㊂G D 32V F 103的软件中断连接到
E C L I C 单元进行统一管理㊂我们实现的
F r e e R T O S 移植选用软件中断作为上下文切换的实现机制㊂
3.4 移植文件修改
F r e e R T O S 与处理器相关的移植代码存储在p o r t -m a c r o .h ㊁p
o r t A S M.s 和p o r t .c 三个文件当中㊂p o r t m a c -r o .h 头文件定义了F r e e R T O S 使用的数据类型㊁进入和退出临界区的宏㊁实现开关中断的宏,以及触发和清除软件中断的宏㊂
p
o r t A S M.s 中用汇编语言实现v P o r t S t a r t F i r s t T a s k ()函数,用于启动第一个任务,它的核心操作是从p x C u r r e n t -T C B 中取出当前就绪任务中优先级最高任务的堆栈指针
S P ,通过S P 恢复寄存器现场㊂此外,
实现软件中断的服务函数e c l i c _m s i p _h a n d l e r ()将当前的寄存器现场(通用寄存器x 1㊁x 5~x 31,机器模式状态寄存器m s t a t u s 以及机器模式异常P C 寄存器m e p c )保存到当前在运行任务的堆栈当中,然后从p x C u r r e n t T C B 取出下一个就绪中优先
级最高任务的堆栈指针S P 恢复寄存器现场,完成任务的上下文切换㊂
p
o r t .c 文件中重点实现堆栈初始化函数p x P o r t I n i t i a -l i s e S t a c k ()㊁启动F r e e R T O S 调度器特定的处理函数
x P o r t S t a r t S c h e d u l e r ()㊁系统时钟节拍定时器初始化函数v P o r t S e t u p T i m e r I n t e r r u p
t (),以及系统时钟节拍中断服务函数x P o r t S y s T i c k H a n d l e r ()㊂这几个函数分别需要根据R I S C V 架构和G D 32V F 103M C U 硬件特性来实现其
功能㊂
3.5 移植测试和验证
验证移植采用调试和借助相应的辅助工具来进行,使用I A R E WR I S C V 建立项目,
在代码中创建两个用户任务进行调试,代码调试时需要验证:
①通过在系统时钟节拍I S R 和软件中断I S R 中添加
断点,结合R I S C V 的m t i m e 和m c y c l e 寄存器验证系统时钟节拍正确产生,且软件中断能够正常触发㊂
②启动第一个任务时,
通过添加断点查看从任务堆栈中恢复的寄存器内容是否与堆栈初始化时写入的内容一致,从而测试p x P o r t I n i t i a l i s e S t a c k ()和v P o r t S t a r t F i r s t -T a s k
()函数的工作正确性㊂③在执行任务上下文切换时,在软件中断服务程序中添加断点,单步执行,同时通过E WR I S C V 的m e m o r y 观察窗口查看压栈到当前任务堆栈中的内容是否与对应的寄存器内容相同;在恢复下文时,检查从下一个执行任务堆栈中恢复的寄存器内容是否与堆栈中的一致㊂验证
e c l i c _m s i p
_h a n d l e r ()软件中断服务函数的上下文切换正确性㊂
④启动第一个任务和任务上下文切换的代码验证能正常工作,移植的F r e e R T O S 已可以实现基本的任务调
度,接着再继续测试开关中断操作和临界区是否正常㊂测试开关中断需要增加另外一个外设中断,将其优先级别分别设置大于或小于m t h 阈值进行测试,
代码中手动调用开关中断操作A P I ,检测中断触发是否与设计的模式一致,验证F r e e R T O S 对中断的控制㊂采用同样的方法测试进入和退出临界区㊂
⑤通过F r e e R T O S 系统服务调用测试,
测试系统的各项服务(如信号量㊁消息队列㊁事件标志等)是否正常,并测试在受F r e e R T O S 管理的I S R 中发信号㊁消息等操作是否正确㊂
元斌基础调试测试都通过之后,已经基本可以验证移植是否成功㊂在此基础上还可以借助额外的工具继续验证,例如通过E WR I S C V 自带的F r e e R T O S 调试插件显示的
信息进行确认(如图2所示)
㊂图2 E W R I S C V R T O S 调试插件T a s k 窗口
4 T r a c e a l y
z e r 分析工具的应用4.1 移植跟踪记录器库
T r a c e a l y
z e r 的跟踪记录器库是运行在嵌入式目标端的一个软件库,与F r e e R T O S 项目集成在一起,
负责记录R T O S 在运行时产生的事件㊂记录的事件如果是存储在
R AM 中,这种工作方式称为快照模式(S n a p s h o t );如果是通过通信端口实时发送到P C 端软件,
则工作在流模式(S t r e a m i n g
)㊂跟踪记录器库不依赖于处理器硬件,只需要使用一个高精度的定时器产生时间戳,为记录的事件添加时间信息㊂
R I S C V 架构的处理器可以利用内核的m c y c l e 计数器来产生时间戳,m c y c l e 是一个64位的计数器,对C P U 的周期进行计数,所以频率与C P U 时钟相同,精度非常高㊂m c y c l e 由两个32位的寄存器组成,T r a c e a l y z e r 只需要使用低32位寄存器㊂在t r c H a r d w a r e P o r t .h 中定义
G D 32V F 103的时间戳实现接口:
#d e f i n e T R C _HW T C _T Y P E T R C _F R E E _R U N N I N G _32B I T _I N -C R
#d e f i n e T R C _HWT C _C O U N T r e a d _c s r (m c y
c l e )#
d
e
f i n e T R C _HWT C _P E R I O D 0
敬请登录网站在线投稿
(t o u g
a o .m e s n e t .c o m.c n )
2021年第1期
7
#d e f i n e T R C _HWT C _D I V I S O R 4
#d e f i n e T R C _HWT C _F R E Q _H Z T R A C E _C P U _C L O C K _H Z #d e f i n e T R C _I R Q _P R I O R I T Y _O R D E R 1
T r a c e a l y z e r 也需要实现临界区,防止在记录事件时发生任务切换,导致产生错误㊂实现是通过关中断,可以直接使用F r e e R T O S 的关中断机制在t r c K e r n e l P o r t .h 中实现临界区的宏接口:
#d e f i n e T R A C E _A L L O C _C R I T I C A L _S E C T I O N ()i n t __i r q _
s t a t u s
;#d e f i n e T R A C E _E N T E R _C R I T I C A L _S E C T I O N ()__i r q _s
t a -t u s =p o r t S E T _I N T E R R U P T _MA S K _F R OM _I S R (
);#d e f i n e T R A C E _E X I T _C R I T I C A L _S E C T I O N ()p
o r t C L E A R _I N T E R R U P T _MA S K _F R OM _I S R (__i r q
_s t a t u s );以上是将T r a c e a l y
z e r 跟踪记录器库移植到一款处理器上需要做的工作㊂
4.2 跟踪并分析F r e e R T O S 应用
将T r a c e a l y
z e r 跟踪记录器库添加到E WR I S C V 的F r e e R T O S 项目中,
并进行必要的配置,工作在快照模式㊂在应用代码中创建4个任务,分别为L e d 1T a s k~L e d 3T a s k ㊁B u t t o n T a s k ,任务优先级依次递增,程序运行一段时间,将快照数据通过E WR I S C V 保存成H e x 文件并加载到P C 端的T r a c e a l y
z e r 中进行分析㊂如图3所示,通过水平时间轴视图查看各个任务的执
行情况:每个任务或中断占一行,从左向右为时间轴的方向,行中有矩形为该任务或中断的一次执行实例㊂由时间轴窗口可以快速地预览整个运行过程中系统的执行情况,放大窗口的时间分辨率之后可以仔细了解任务执行时相关的内核事件和时间信息
㊂
图3 T r a c e a l y
z e r 水平时间轴视图4.3 任务的时间量分析
R T O S 的任务或者中断称为参与者(A c t o r
),参与者的一次执行称为实例㊂分析任务的执行通常需要了解如下几种时间:起始和结束时间,参与者实例的开始和结束时间;执行时间,参与者实例使用的C P U 时间量,不包括抢占;响应时间,从参与者实例开始到结束的时间(更确切地说,任务的响应时间是从任务开始准备就绪时计算的,即内核将任务的调度状态设置为就绪的时间);等待时间,图4所示实例中参与者实际没有执行的时间,计算方式为
[(结束时间开始时间)(执行时间)];启动时间,从任务
就绪到开始执行之间的这段时间
㊂
图4 F r e e R T O S 分析基础实例的时间关系(
场景2发生了抢占)以L e d 3T a s k 的第38个实例(
如图5所示)为例,等待时间为从任务就绪到任务代码开始执行的这段时间,时长为7μs ,因为该实例未发生被抢占的情况,所以这7μs 的
时间是完成任务上下文切换所需的时间
㊂
图5 L e d 3T a s k 任务实例38的时间量
通过跟踪到的事件和记录的时间戳信息,T r a c e a l y
z e r 能够生成多种视图来观测系统运行时存在的问题,例如设计缺陷导致的线程饥饿㊁死锁等,以及发现系统中不必要的延迟,帮助开发者解决系统的问题,提高嵌入式系统的实时
性㊂这些问题使用传统调试手段难以发现,而且效率不高㊂
5 结 语
本文介绍了基于R I S C V 指令集的微控制器
G D 32V F 103在I A R E W R I S C V 工具链上移植F r e e R T O S
的过程,以及对移植的系统进行验证的方法㊂在此基础上
移植T r a c e a l y z e r 跟踪记录器库,并通过跟踪F r e e R T O S 系统运行进一步观测系统的运行,并对任务的执行进行了分析㊂嵌入式与物联网是R I S C
V 最活跃的应用市场,
R I S C V 给嵌入式系统开发带来许多优势,
越来越多的开发者开始尝试R I S C V ㊂以上工作对于基于R T O S 技术的
R I S C V 嵌入式开发与应用会有所帮助㊂
参考文献
[1]芯来科技.B u m b l e b e e 内核指令架构手册[E B /O L ].[2020
09].h t t p s ://w w w.r i s c v m c u .c o m /q
u i c k s t a r t q u i c k s t a r t i n d e x u p d f i d 8.h t m l .
26
26
M i c r o c o n t r o l l e r s &E m b e d d e d S y
s t e m s 2021年第1期w w w .m e s n e t .c o m .c n
在D C A S E 2019测试集和U r b a n S o u n d 8K 测试集上,模型的识别精度如表1和表2所列,并且与一些最新的方法进行了对比㊂
表1 精度比较(D C A S E 2019
)模 型
测试精度(D C A S E )
A u d i o R e s n e t
80.2%R e s N e t l i k e m o d e l [14]
76.6%B a s e l i n e s y
s t e m [15]
62.5%
表2 与其他方法的精度比较
模 型
测试精度(U r b a n S o u n d 8K )
A u d i o R e s n e t
76.4%U n s u p e r v i s e d f e a t u r e l e a r n i n g
[16]
73.6%B a s e l i n e s y
s t e m [17]
68%
从表中可以看到,与其他先进的分类方法相比,本文提出的A u d i o R e s n
e t 模型在分类精度上有较大提高㊂
4 结 语
本文针对声源目标分类中小样本训练时分类模型性
能不佳的问题,使用深度学习方法对不同声源发出的声音数据进行分类,使用l o g m
e l 声谱图特征作为特征预提取方法,采用基于R e s n e t 网络结构的分类模型对预提取特征数据进行分类处理,建立了识别效果良好的深度学习声信
号分类模型A u d i o R e s n e t ㊂该模型性能在D C A S E 2019和
U r b a n S o u n d 8K 数据集上得到了验证,实现了良好的效果,在声源探测领域具有一定的工程应用价值㊂
参考文献
[1]I S N A R D V ,C HA S T R E S V ,V I A U D
D E L MO N I ,e t a l .
T h e t i m e c o u r s e o f a u d i t o r y r e c o g n i t i o n m e a s u r e d w i t h r a p
i d s e q u e n c e s o f s h o r t n a t u r a l s o u n d s [J ].S c i e n t i f i c R e p
o r t s ,2019,9(1):8005.
[2]樊新海,石文雷,张传清.基于V M D 多尺度熵和A B C S V M 的
装甲车辆识别[J ].装甲兵工程学院学报,2018,32(6):6873.
[3]孙国强,樊新海,石文雷.基于M F C C 和支持向量机的装甲车辆
识别研究[J ].国外电子测量技术,2017,36(10):3135.
[4]R U B E N G O N Z A L E Z
H E R N A N D E Z F ,P A S T O R
S A N C H E Z F E R N A N D E Z L ,S U A R E Z G U E R R A S ,e t
a l .M a r i n e m a mm a l s o u n d c l a s s i f i c a t i o n
b a s e d o n a p a r a l l e l
r e c o g n i t i o n m o d e l a n d o c t a v e a n a l y s i s [J ].A p p
l i e d A c o u s t i c s ,2017(119):1728.
[5]S A N C H E Z F E R N A N D E Z L P ,S A N C H E Z P E R E Z L A ,
C A R B A J A L H E R N A N
D
E Z J J ,e t a l .A i r c r a f t C l a s s i f i c a t i o n
a n d A c o u s t i c I m p
a c t E s t i m a t i o n B a s e d o n R e a l T i m e T a k e o f f N o i s e M e a s u r e m e n t s [J ].N e u r a l P r o c e s s i n g L
e t t e r s ,2013,38(2):239259.
[6]陈心昭.噪声源识别技术的进展[J ].
合肥工业大学学报(自然科学版),2009,32(5):609614.
[7]竺乐庆,张真.基于M F C C 和GMM 的昆虫声音自动识别
[J ].昆虫学报,2012,55(4):466471.
[8]石文雷,樊新海,张传清.基于频谱动态特征和C S S VM 的
装甲车辆识别[J ].计算机应用,2018,38(S 1):4447,72.
[9]董语诗,时浏艺,丁一坤.基于HMM 的声场景分类[J ].信息化研究,2018,44(3):3947,52.
[10]中兴通讯采用英特尔F P G A 在深度学习上取得性能突破
[J ].单片机与嵌入式系统应用,2017,17(3):88.
[11]庞悦,赵威,张雅楠,等.基于深度学习的L S T M 的交通流量预
测[J ].单片机与嵌入式系统应用,2019,19(3):7275.[12]王枫,陈小平.C N N 深度学习的验证码识别及A n d r o i d 平
台移植[J ].单片机与嵌入式系统应用,2019,19(7):20
22,73.
[13]P I R O T T A E ,M E R C HA N T N D ,T HOM P S O N P M ,e t a l .Q u a n t i f y i n g t
h e e f f e c t o f b o a t d i s t u r b a n c e o n b o t t l e n o s e d o l -p h i n f o r a g i n g a c t i v i t y
[J ].B i o l C o n s e r v ,2015(181):8289.[14]N g u y e n T ,P e r n k o p
f F .A c o u s t i c S c e n e C l a s s i f i c a t i o n w i t h M i s m a t c h e d R e c o r d i n
g D e v i c e s U s i n g M i x t u r e o f E x p
e r t s L a y
e r [C ]//2019I E E E I n t e r n a t i o n a l C o n
f e r e n c e o n M u l t i -m e d i a a n d E x p
o (I C M E ),2019.[15]M e s a r o s A ,H e i t t o l a T ,V i r t a n e n T.A m u l t i d e v i c e d a t a s e t
f o r u r b a n a c o u s t i c s c e n e c l a s s i f i c a t i o n [J ].2018,a r X i v :1807.
09840.
[16]S a l a m o n J ,J a c o b y C ,B e l l o J P .A D a t a s e t a n d T a x o n o m y
f o r U r b a n S o u n d R e s e a r c h [C ]//a c m I n t e r n a t i o n a l C o n f e r e n c e
o n M u l t i m e d i a ,2014.
[17]S A L AMO N J ,J A C O B Y C ,B E L L O J P .A D a t a s e t a n d T a x -o n o m y f o r U r b a n S o u n d R e s
e a r c h [C ]//p r o c e e d i n g
s o f t h e a c m I n t e r n a t i o n a l C o n f e r e n c e o n M u l t i m e d i a ,2014.
王鹏程(硕士研究生),主要研究方向为信息探测与处理㊂
(责任编辑:薛士然 收稿日期:2020-07-20
) [2]胡振波.R I S C V 架构与嵌入式开发快速入门[M ].
北京:人民邮电出版社,2019.
[3]何小庆.3种物联网操作系统分析与比较[J ].
微纳电子与智能制造,2020(3).
[4]D A V I D P A T T E R S O N ,A N D R E W W A T E R M A N.R I S C
V
手册:一本开源指令集的指南,2018.
[5]U s i n g F
r e e R T O S o n R I S C V M i c r o c o n t r o l l e r s [E B /O L ].[202009].h t t p s ://w w w.f r e e r t o s .o r g /U s i n g F
r e e R T O S o n R I S C V.h t m l .
[6]J i m C o o l i n g .R e a l t i m e O p e r a t i n g S y
s t e m s B o o k 2T h e P r a c t i c e [M ].M a r k f i e l d :L i n d e n t r e e A s s o c i a t e s ,2017.
(责任编辑:芦潇静 收稿日期:2020-09-10
)
发布评论