|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
! ~+ Y2 z& I' D9 N A
2 D- f" @/ [/ m* r& @6 d1、怎样将 FreeRTOS 移植到不同的Cortex-M 内核?
+ H) ]6 Y, G" R! @0 }) L答:若需将 FreeRTOS 移植到正确的Cortex-M 产品,您必须从正确的目录导入 “port.c”文件。例如,若微控制器是带有IAR 工具的 Cortex-M0 内核,则您必须从“FreeRTOSSourceportableIARARM_CM0” 获取 port.c。: l6 a5 w, |+ j% |. P4 h
: O( ^& n6 f0 ?
2、FreeRTOS 使用需要ROM/RAM?2 t/ M% ?# f' c' i4 L4 s
答:这取决于您的编译器、代码架构,以及RTOS 内核配置。一般来说, RTOS 内核本身需要大约 5到 10 K 字节 ROM 空间。( R2 r8 ~" o7 J4 @# C! t
# X, v0 V% |9 }% K1 U! z: x
如果创建的线程或队列数增加,RAM 使用量就会上升。
& M) b" F- H& G8 s8 _! f" B
9 z! N1 H" f* ]. W- _5 p3、怎样设置 CPU 时钟?+ N$ l3 E7 U2 @5 U: A7 ` K) J2 d
答:CPU 时钟由 FreeRTOSConfig.h 中的 configCPU_CLOCK_HZ 定义,比如在STM32CubeF4固件内它由 SystEMCoreClock 提供,表示 HCLK 时钟 (AHB 总线),通过调用SystemClock_Config() 函数配置 RCC 时钟时会设置此值。- B v; ]' Y+ |$ {9 o4 A
- L6 [6 b" D! n7 f2 c
4、怎样设置中断优先级?; t. T d1 ], V8 `
答:任何使用 RTOS API 函数的中断服务程序,其优先级必须手动设置为大于等于FreeRTOSConfig.h 文件中configMAX_SYSCALL_INTERRUPT_PRIORITY 的设置值。这确保其中断的逻辑优先级低于等于configMAX_SYSCALL_INTERRUPT_PRIORITY设置的优先级。
$ t- Z( m4 l) f4 D/ H) w M* M0 t. D& H$ Y3 _
5、怎样使用非 SysTick 时钟生成时间片中断?
1 \) T4 s7 j+ C" x7 Q( D- N, ]& P答:用户可选择性地自己提供时间片中断源,方法是使用非SysTick 的定时器生成中断:$ t, l$ B O0 Z
• 提供 vPortSetupTimerInterrupt() 的实现,它会以FreeRTOSConfig.h文件中定义的configTICK_RATE_HZ常量指定的频率产生中断。
' h" a/ v% B. K& m3 v6 G; y• 将 xPortSysTickHandler() 配置为定时器中断的处理程序,确保xPortSysTickHandler()在FreeRTOSConfig.h 中未映射至 SysTick_Handler(),或在 port.c 中未被命名为SysTick_Handler()。8 g. y3 I3 [, I3 _& l
2 Z) R! O$ z# L* x
6、怎样启用无时间片空闲模式?. P+ o; d2 f. l2 w
答:FreeRTOS 无时间片模式 (低功耗)通过进入睡眠模式并停止周期性的时间片中断来降低mcu 功耗。在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 定义为 1,即可启用此功能。
: ` B% F& T7 `. x
- ?$ C4 l4 B/ S, w, Q% n当使用非 SysTick 定时器生成时间片中断时,也可启用无时间片空闲模式。用户必须添加下列动作至上一个问题所述内容:: `: g$ I$ ~( x+ V# S& q
; w& |. G! y0 a: A+ O. O5 k+ I
• 在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 设为 2。
c t U0 y! k% q• 根据 FreeRTOS 相关文档说明,定义portSUPPRESS_TICKS_AND_SLEEP()。
5 ~+ e3 E5 h* @1 P; \6 m/ B, S4 V" @, ]3 k! ~8 \
7、在做基于STM32的FREERTOS应用中出现比较频繁的问题是什么?* B% `/ }1 W8 V, O8 m
答:应属STACK溢出和中断优先级相关的问题。
3 S" p4 \: P, G; C以为内容取自于ST官方的一篇关于具有RTOS的STM32Cube开发应用的用户手册UM1722,该手册较为详细了介绍了如下内容。本文内容只是其中的FAQ部分。
1 W/ T: u, D) W( x; e- i
2 F8 h' K W/ u* E- M! ?( B( c4 g1 n: g" [
* r* v8 M% f8 h% {, ~ |
|