Actions
UsingFreeRtos » History » Revision 3
« Previous |
Revision 3/9
(diff)
| Next »
mole lord, 09/06/2020 12:27 PM
UsingFreeRtos¶
小規模なプログラムならRTOSなしで組んだほうがいい。私もそんなことを考えていた時期がありました。
しかし、仕様というのは後から追加されるものであり、割り込みに対処しながらバックグラウンドで計算量の多い処理をする必要が生じて、自分でタスクスイッチ(出続けるオシッコを無理やり止めて隣の便器に移る)処理を書くことになるという経験から、ベアメタル(OS抜き)で作るのはやめました。
最初にプログラムを書く人間が、その製品の一生を左右します。最初からスパゲッティだと死ぬまでスパゲッティです。
RTOSを使いましょう。
ソースコードに関しては、 https://ashidan.myhome.cx/gitbucket/git/molelord/stm32.git の SHA-1: 999851cae241ef1bd3842b80bb627c7f450c285d 移行を参考にしてください。
FreeRTOSを使う¶
- CubeMX上で、Middleware - FREERTOS をクリックします。
- InterfaceをDisableから
CMSIS_V1
に変えます- CMSISは使うつもりがないので、V1で十分です。
- Config parameters - MPU/FPU - ENABLE_FPU を
Enabled
に変えます- 複数のタスクで浮動小数点演算を行えるようにするのが意図です
- Config parameters - Kernel settings - ENABLE_BACKWORD_COMPATIBILITY を
Disabled
に変えます- これから新規に作るので、過去との互換性は捨てても大丈夫
- Config parameters - Kernel settings - RECORD_STACK_HIGH_ADDRESS を
Enabled
に変えます- スタックの消費量の最大値を記録してくれる、ようです 参照: Retrieve the size and maximum usage of the stack per task
- Config parameters - Software timer definitions - USE_TIMERS を
Enabled
にします- LEDチカチカに使います
- System Core - SYS - Timebase Source を SysTick から TIM6 に変えます
- Timebase SourceにはHALが使うタイマを指定します。FreeRTOSはSysTickに依存しているので、HALに代わりをあてがうことになります。
- DevEnv にある手順でEclipseへの取り込み、ビルドを行い、実機に書き込んで、異常が起きない(HardFaultで停止しない)ことを確認します
累計表示回数:242
Updated by mole lord 6 months ago · 3 revisions