⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 design.txt

📁 嵌入式系统开发 TOPPERS and JSP Kernel Release 1.3 TOPPERS = Toyohashi Open Platform for Embedded Real-Tim
💻 TXT
📖 第 1 页 / 共 2 页
字号:
なお·ハンドラの叫庚借妄は·タ〖ゲット巴赂婶で捏丁されるˉ(5) タスクの弹瓢と姜位箕の借妄タスク弹瓢箕のレジスタ牲耽と·タスク姜位箕のレジスタ瘦赂は·タ〖ゲット巴赂婶の悸刘によっては臼维できるˉタスクの弹瓢は·create_context と activate_context によって·肌にそのタスクへのディスパッチが弹こった箕に·タスクの弹瓢戎孟から悸乖するようにタスクコンテキストを肋年することで乖うˉタスク姜位箕には·unlock_cpu に洛えて·exit_and_dispatch を钙び叫すˉexit_and_dispatch は·附哼悸乖面のコンテキストを瘦赂せずに·ディスパッチを乖う簇眶であるˉなお·create_context·activate_context·exit_and_dispatch の借妄は·タ〖ゲット巴赂婶で捏丁されるˉ(6) 悸乖できる觉轮のタスクがない眷圭の胺い悸乖できる觉轮のタスクがない眷圭の滦忽として·アイドルタスクを瞥掐する数恕があるˉアイドルタスクを瞥掐すると·ディスパッチャの庞面で充哈み略ちをする涩妥がないので·ソフトウェアの菇陇弄にはエレガントになるˉまた·ディスパッチャ面での掘凤尸呆も负るˉ嫡に·RAM の蝗脱翁がどうしても笼えてしまうという啼玛があるˉこのことから·アイドルタスクは蝗わない数克とするˉ(7) ディスパッチ瘦伪觉轮の瘦积数恕ディスパッチが瘦伪されるのは·肌のいずれかの眷圭であるˉ ˇディスパッチ敦贿觉轮 ˇ润タスクコンテキスト悸乖面CPU毋嘲ハンドラは润タスクコンテキストで悸乖するとしたため·CPU毋嘲ハンドラ悸乖面は·润タスクコンテキスト悸乖面に崔めて雇えることができるˉまた·サ〖ビスコ〖ルはすべて充哈み敦贿で悸乖するため·サ〖ビスコ〖ル悸乖面も雇胃する涩妥がないˉこの面で·润タスクコンテキスト悸乖面は·sense_context() で冉年できるˉそこで·ディスパッチ敦贿觉轮を山すBOOL房の恃眶を脱罢すれば·ディスパッチ瘦伪觉轮が瘦积できることになるˉ悸狠には·ディスパッチ钓材觉轮を山すBOOL房の恃眶 enatex を瞥掐したˉⅷ サ〖ビスコ〖ル悸乖面に充哈みを钓材する∈ディスパッチは钓材しない∷眷圭には·サ〖ビスコ〖ル借妄の庞面で弹瓢された充哈みハンドラの叫庚では·ディスパッチもタスク毋嘲借妄ル〖チンの弹瓢も乖ってはならないˉ徊救する眷疥が般うことから·尉荚の敦贿を侍」の恃眶にする数恕も雇えられるが·肋年する数の跟唯を雇えると·办つの恃眶で尉数敦贿できる数が紊いと蛔われるˉすなわち·ディスパッチ敦贿觉轮とサ〖ビスコ〖ル悸乖面觉轮を·票じ恃眶をビットフィ〖ルドに尸けて淡脖するのが屡碰と雇えられるˉさらに·CPU毋嘲ハンドラをタスクコンテキストで悸乖する悸刘では·票じ恃眶にCPU毋嘲ハンドラのネスト搀眶も淡脖したくなるˉ毋えば·肌のような恃眶 pndflg を瞥掐する数恕が雇えられるˉ ˇ呵布疤ビット ∧ サ〖ビスコ〖ル悸乖面				ⅹ 1 なら尉荚瘦伪 ˇ布から2ビットめ ∧ ディスパッチ敦贿觉轮				ⅹ 1 ならタスク磊仑え瘦伪 ˇ荒りのビット ∧ CPU毋嘲ハンドラのネスト搀眶				ⅹ 0 笆嘲ならタスク磊仑え瘦伪4ˉサ〖ビスコ〖ルの淡揭数恕(1) sns_xxxsns_ctx·sns_loc·sns_dsp·sns_tex は·サ〖ビスコ〖ル柒婶でクリティカルセクションを侯らなくても悸刘できるˉ(2) タスクコンテキスト漓脱のサ〖ビスコ〖ルⅷ CPUロック觉轮で钙ばれるとエラ〖になることに庙罢ˉ(2-1) タスク磊垂えを弹こさないもの∈毋: get_pri∷	エラ〖チェック	t_lock_cpu();	/*	 *  クリティカルセクション悸乖	 */	t_unlock_cpu();(2-2) タスク磊垂えを弹こす材墙拉のあるもの∈毋: act_tsk∷	エラ〖チェック	t_lock_cpu();	/*	 *  クリティカルセクション悸乖	 */	if (タスクディスパッチが涩妥 && enadsp) {		/* 极タスクを略ち觉轮にするサ〖ビスコ〖ルでは·			惧で enadsp をチェックする涩妥はないˉ*/		dispatch();	}	t_unlock_cpu();(2-3) 极タスクを姜位するもの∈ext_tsk∷	エラ〖チェック	t_lock_cpu();	/*	 *  クリティカルセクション悸乖	 */	exit_and_dispatch();(2-4) ras_tex	エラ〖チェック	tcb = get_tcb_self(tskid);	t_lock_cpu();	E_OBJエラ〖のチェック	tcb->texptn |= rasptn;	if (tcb == runtsk && runtsk->enatex) {		texptn = runtsk->texptn;		runtsk->enatex = FALSE;		runtsk->texptn = 0;		t_unlock_cpu();		(*runtsk->tinib->texrtn)(texptn, runtsk->tinib->exinf);		/* CPUロック觉轮のままリタ〖ンした眷圭を滦忽 */		if (!t_sense_lock()) {			t_lock_cpu();		}		タスク毋嘲借妄ル〖チンの弹瓢掘凤を浩刨チェック□弹瓢		∈runtsk->texptn が 0 になるまで惧の借妄を帆り手す∷		runtsk->enatex = TRUE;	}	t_unlock_cpu();(2-5) ena_tex	エラ〖チェック	t_lock_cpu();	E_OBJエラ〖のチェック	runtsk->enatex = TRUE;	if (runtsk->texptn != 0) {		texptn = runtsk->texptn;		runtsk->enatex = FALSE;		runtsk->texptn = 0;		t_unlock_cpu();		(*runtsk->tinib->texrtn)(texptn, runtsk->tinib->exinf);		/* CPUロック觉轮のままリタ〖ンした眷圭を滦忽 */		if (!t_sense_lock()) {			t_lock_cpu();		}		タスク毋嘲借妄ル〖チンの弹瓢掘凤を浩刨チェック□弹瓢		∈runtsk->texptn が 0 になるまで惧の借妄を帆り手す∷		runtsk->enatex = TRUE;	}	t_unlock_cpu();(3) 润タスクコンテキスト漓脱のサ〖ビスコ〖ルⅷ CPUロック觉轮で钙ばれるとエラ〖になることに庙罢ˉ(3-1) タスク磊仑えを弹こさないもの	i_lock_cpu();	/*	 *  クリティカルセクション悸乖	 */	i_unlock_cpu();(3-2) タスク磊仑えを弹こす材墙拉のあるもの∈毋: iact_tsk∷	i_lock_cpu();	/*	 *  クリティカルセクション悸乖	 *	 *  タスクディスパッチが涩妥な眷圭には·reqflg を TRUE にするˉ	 *  ただし·enadsp が FALSE の箕は·reqflg を TRUE にしないˉ	 */	i_unlock_cpu();(3-3) iras_tex	エラ〖チェック	tcb = get_tcb(tskid);	i_lock_cpu();	E_OBJエラ〖のチェック	tcb->texptn |= rasptn;	if (tcb == runtsk && runtsk->enatex) {		reqflg = TRUE;	}	i_unlock_cpu();笆惧

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -