SST(スーパーシンプルなタスク)は、紙ローベル区の考えに基づいているタスクの優先度、プリエンプティブ、イベント駆動型、RTC、シングルスタックの超簡単なタスクスケジューラ、に基づいており、ミロSamekは、再プログラミングであるC、でQPはQKの基本的な考え方です。
QKプラスイベントQFイベントプラスモデル駆動型開発ベースQMと結合されたシリアル・デバッグ機能QSpyと結合タスクに登録QEP、保存および分配機能の状態機械方法の処理は、QPとなりました。
2015年には、QPはトップ発明賞[1]「コンピューティングデザインを埋め込まれました」。
1.SST階層

2.SST全体構造

-
送信イベント(イベントが生成されます)
SST_post(目标任务优先级prio,信号sig,参数para )
、タスク対応がPRIOイベントキュー、1キューステータスビットセットに送信するイベント。 -
スケジュール(消費イベント)
SST_schedule_(void )
キューが空の場合、タスクのスケジューリング機能、キュー・ステータス・ビットがクリア。 -
表1キューの状態はセットです
SST_readySet_ |= tcb->mask_
イベントキュー、対応する位置に配置されたとき。 -
キューステータステーブルがクリア
SST_readySet_ &= ~tcb->mask_
なしイベントキューには、対応するビットがクリアされます。
3.SST TCB構造

4.イベントの送信SST_post()
フローチャートを

5.スケジューリングSST_schedule()
フローチャート

前記ヘッダ関係

割り込みを終了し、マクロのマクロを入力割り込み、および使用割り込み7。
- マクロにブレーク
#define SST_ISR_ENTRY(pin_, isrPrio_) do { \
(pin_) = SST_currPrio_; \ /*1.保存被中断的任务优先级(当前优先级)到pin中*/
SST_currPrio_ = (isrPrio_); \ /*2.设置ISR的优先级isrPrio为当前优先级*/
SST_INT_UNLOCK(); \ /*3.开中断*/ } while (0)
- 出口マクロ割り込み
#define SST_ISR_EXIT(pin_, EOI_command_) do { \
SST_INT_LOCK(); \ /*1.关中断*/
(EOI_command_); \ /*2.结束当前中断*/
SST_currPrio_ = (pin_); \ /*3.恢复被中断前任务优先级为当前任务*/ SST_schedule_(); \ /*4.调度*/ } while (0)
- 割り込みは、マクロの例を使用します
//键盘中断ISR
static void interrupt kbdISR(){ uint8_t pin; uint8_t key = inport(0x60); //取键值 displayPreemptions(SST_currPrio_, KBD_ISR_PRIO); //测试用,显示被抢占次数 SST_ISR_ENTRY(pin, KBD_ISR_PRIO); /*1.进入中断*/ SST_post(KBD_TASK_PRIO, KBD_SIG, key); /*2.发事件到KbdTask任务*/ SST_ISR_EXIT(pin, outportb(0x20, 0x20)); /*3.退出中断* }
結論
ローベル区の論文は、謙虚な種子を例えるならば、SSTのミロSamekは小さな苗木である、とQPのミロSamekがそびえ立つ木に成長し、木はQP取得、2015年に、十年のために成長しています「組み込みコンピューティング設計」賞トップ発明[1]。