RT-thread学習ノート(一)---システムビートtick

3830 ワード

基礎知識、本人の学習記録、参考に供します.
 
システムrt_tickサイズ定義はrtconfig.h中:
/* Tick per Second */#define RT_TICK_PER_SECOND 100
デフォルトのサイズは100/秒、すなわち10 msです.
クロックはSysTickタイミングを採用し、startupに初期化する.cファイルの中:
rtthread_startup() -> rt_hw_board_init() -> SysTick_Config(SystemCoreClock/RT_TICK_PER_SECOND);
SysTick割込み処理関数はboard.c中:
SysTick_Handler();
SysTick_でHandler();でtickをカウントする関数は、次のとおりです.
rt_tick_increase();
rt_tickはシステムの稼働に伴って増加する
分析についてrt_tick_increase();関数:
 1 /**
 2  * This function will notify kernel there is one tick passed. Normally,
 3  * this function is invoked by clock ISR.
 4  */
 5 void rt_tick_increase(void)
 6 {
 7     struct rt_thread *thread;
 8 
 9     /* increase the global tick */
10     ++ rt_tick;
11 
12     /* check time slice */
13     thread = rt_thread_self();  //      id
14 
15     -- thread->remaining_tick;
16     if (thread->remaining_tick == 0)
17     {
18         /* change to initialized tick */
19         thread->remaining_tick = thread->init_tick;
20 
21         /* yield */
22         rt_thread_yield();  //         ,      tick    ,        
23     }
24 
25     /* check timer */
26     rt_timer_check();
27 }

関数の説明によれば、この関数はカーネルにtickが通過したことを通知し、通常、この関数はクロック割り込み処理関数によって呼び出される.
最後にタイマチェーンテーブルチェック、rt_timer_check()は、現在のtick時間がタイマtimeout時間に達しているかどうかを検出する.
 
RT-Threadはソフトウェアタイマを提供し、オペレーティングシステムによってシステムインタフェースを提供し、ハードウェアタイマの基礎の上に構築され、システムがハードウェアリソースに制限されないタイミングサービスを提供できるようにする.
 
未完待续!!!