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

📄 config.txt

📁 嵌入式系统开发 TOPPERS and JSP Kernel Release 1.3 TOPPERS = Toyohashi Open Platform for Embedded Real-Tim
💻 TXT
📖 第 1 页 / 共 3 页
字号:
赖しくコンパイルできないˉ(16) その戮(16-1) TARGET_NAME弹瓢メッセ〖ジのタ〖ゲット叹ˉ(16-2) void sys_putc(char c)タ〖ゲットシステムの你レベルの矢机叫蜗ル〖チンˉROMモニタを积つシステムでは·ROMモニタ钙び叫しで悸附することを鳞年しているˉ(16-3) OMIT_CALLTEX∈オプション∷タ〖ゲット迫惟婶が calltex を捏丁する涩妥がない眷圭に·このマクロを年盗するˉ拒しくは·≈タスク毋嘲借妄ル〖チンの弹瓢簇眶とその面で徊救する TCB のフィ〖ルド∽の泪を徊救のことˉ(16-4) LABEL_ALIAS(new_label, defined_label)∈オプション∷new_label を defined_label と票じアドレスに年盗するためのマクロˉこのようなマクロを悸附できない眷圭には·年盗を臼维することができるˉ(16-5) COPYRIGHT_CPU∈オプション∷(16-6) COPYRIGHT_SYS∈オプション∷カ〖ネル弹瓢箕のメッセ〖ジに·それぞれプロセッサ巴赂婶およびシステム巴赂婶の螟侯涪山绩を纳裁するためのマクロˉ4ˉタ〖ゲット巴赂婶が脱いることができるタ〖ゲット迫惟婶の恃眶ˇ簇眶(1) タスク瓷妄簇息の恃眶(1-1) TCB *runtsk悸乖觉轮のタスク∈♂プロセッサがコンテキストを积っているタスク∷の TCB を回すポインタˉ悸乖觉轮のタスクがない眷圭は NULL にするˉサ〖ビスコ〖ルの借妄面で·极タスク∈サ〖ビスコ〖ルを钙び叫したタスク∷に簇する攫鼠を徊救する眷圭は runtsk を蝗うˉカ〖ネルの介袋步借妄笆嘲で·この恃眶を今き垂えるのは·タスクディスパッチャ∈すなわち·タ〖ゲット巴赂婶∷のみであるˉ(1-2) TCB *schedtsk悸乖できるタスクの面で呵光庭黎界疤のタスクの TCB を回すポインタˉ悸乖できるタスクがない眷圭は NULL となるˉディスパッチ敦贿觉轮など·ディスパッチが瘦伪されている粗は·runtsk と办米しているとは嘎らないˉこの恃眶を今き垂えるのはスケジュ〖ラのみで·タ〖ゲット巴赂婶はこの恃眶を今き垂えてはならないˉ(1-3) BOOL reqflg充哈みハンドラ】CPU毋嘲ハンドラの叫庚借妄に·タスクディスパッチまたはタスク毋嘲借妄ル〖チンの弹瓢を妥滇することを绩すフラグˉこの恃眶はサ〖ビスコ〖ル借妄∈タ〖ゲット迫惟婶∷でセットし·充哈みハンドラ】CPU毋嘲ハンドラの叫庚借妄∈タ〖ゲット巴赂婶∷で徊救】クリアするˉ(1-4) BOOL enadspタスクディスパッチ钓材觉轮である∈すなわち·タスクディスパッチ敦贿觉轮でない∷ことを绩すフラグˉこの恃眶はサ〖ビスコ〖ル∈dis_dsp·ena_dsp·タ〖ゲット巴赂に chg_ixx∷借妄の面で今き垂えるˉまた·タスクディスパッチャ∈タ〖ゲット巴赂婶∷の面で·悸乖できるタスクができるのを略つ粗に弹瓢された充哈みハンドラの叫庚でタスクディスパッチャが钙ばれないようにするために·この恃眶を办箕弄に FALSE に肋年することができるˉ(2) タスク毋嘲借妄ル〖チンの弹瓢簇眶とその面で徊救する TCB のフィ〖ルド(2-1) void calltex(void)(2-2) void call_texrtn(void)タスク毋嘲借妄ル〖チンの弹瓢を乖う簇眶ˉcalltex は·悸乖觉轮のタスクがタスク毋嘲借妄ル〖チンの弹瓢掘凤を塔たしていれば·call_texrtn を钙び叫すˉcall_texrtn は·タスク毋嘲借妄ル〖チンの钙び叫しを乖うˉタスク毋嘲借妄ル〖チンを钙び叫す箕は·办箕弄にCPUロックを豺近するˉこれらの簇眶は·ディスパッチャや充哈みハンドラ】CPU毋嘲ハンドラの叫庚借妄から·CPUロック觉轮で钙ばれることを鳞年しているˉcalltex を钙び叫すのが呵も词帽であるが·悸乖跟唯を惧げるためには·弹瓢掘凤のチェックをアセンブリ咐胳で淡揭し·call_texrtn を钙び叫した数がよいˉチェックすべき弹瓢掘凤については·タ〖ゲット迫惟婶の calltex のソ〖スコ〖ドを徊救することˉまたその眷圭には·OMIT_CALLTEX をマクロ年盗することで·タ〖ゲット迫惟婶から calltex が艰り近かれるˉ(2-3) BOOL enatex(2-4) TEXPTN texptncall_texrtn を钙び叫すために·弹瓢掘凤のチェックをアセンブリ咐胳で淡揭する眷圭には·TCB 柒のこれらのフィ〖ルドを徊救する涩妥があるˉ(3) システムログ怠墙佰撅祸据を奶梦するために·システムログ怠墙へのログ叫蜗簇眶を脱いることができるˉシステムログ怠墙については·ユ〖ザズマニュアルを徊救することˉ5ˉタ〖ゲット巴赂婶悸刘惧のヒント(1) タスクディスパッチャの2奶りの悸刘数克タスクディスパッチャの悸刘数克として·コンテキストの瘦赂ˇ牲耽とタスク毋嘲借妄ル〖チンの弹瓢を办息のル〖チンで乖う数克∈これを数克Aと钙ぶ∷と·コンテキストの瘦赂ˇ悸乖するタスクの联买ˇコンテキストの牲耽とタスク毋嘲借妄ル〖チンの弹瓢をばらばらのル〖チンで乖う数克∈これを数克Bと钙ぶ∷があるˉ数克Bは·瘦赂するコンテキスト攫鼠を觉斗に炳じて涩妥呵警嘎にすることが推白になるという网爬があるˉただし·シミュレ〖ション茨董の眷圭·悸附数恕によっては数克Bが何れない材墙拉も雇えられるˉタスク毋嘲借妄ル〖チンの弹瓢舱疥という囱爬からみた眷圭·2つの数克には伪罢すべき般いがあるˉ笆布·毋により棱汤するˉタスク1とタスク2の2つのタスクがあり·タスク1の数が庭黎刨が光いものとするˉ呵介·タスク2が悸乖面に充哈みハンドラが弹瓢され·その面からタスク1が弹瓢された冯蔡·タスク2がタスク1によってプリエンプトされたものとするˉここで·タスク1がタスク2に滦してタスク毋嘲借妄ル〖チンの弹瓢を妥滇した稿·略ち觉轮に掐るサ〖ビスコ〖ルを券乖し·その冯蔡タスク2にディスパッチされる觉斗を雇えるˉこの箕·タスクディスパッチャは·タスク2に滦してタスク毋嘲借妄ル〖チンの弹瓢借妄を乖う涩妥があるが·数及Aの眷圭には·タスク1から汤绩弄に钙ばれたディスパッチャの面でタスク毋嘲借妄ル〖チンの弹瓢が乖われるのに滦して·数克Bの眷圭には·タスク2のコンテキストを牲耽するル〖チンへ尸呆した稿·コンテキストを牲耽する借妄に鲁く借妄としてタスク毋嘲借妄ル〖チンの弹瓢が乖われるˉJSPカ〖ネルでは·数克Aを何るか数克Bを何るかをタ〖ゲット巴赂婶に扦せることとするˉそのために·タスク毋嘲借妄ル〖チンの弹瓢をタスクディスパッチャに崔める慌屯としているˉ(2) 充哈みハンドラの叫掐庚借妄充哈みハンドラの叫掐庚借妄の柒推は·プロセッサの充哈みア〖キテクチャにより络きく佰なるが·おおよその借妄の萎れは肌の奶りであるˉCPU毋嘲ハンドラの叫掐庚借妄も·苞眶を畔すことを近いては·おおよその借妄の萎れは票屯であるˉただし·プロセッサが充哈みとCPU毋嘲で佰なる胺いをする眷圭は·悸狠の叫掐庚借妄はかなり佰なったものとなるˉ	------------------------------------------------------------	レジスタの瘦赂∈肩にスクラッチレジスタ∷	充哈みスタックへ磊垂え∈呵も嘲娄のハンドラのみ∷	判峡された充哈みハンドラの钙叫し	タスクスタックへ磊垂え∈呵も嘲娄のハンドラのみ∷	if (呵も嘲娄のハンドラ && reqflg) {		if (enadsp && runtsk != schedtsk) {			タスクディスパッチ借妄			タスク毋嘲借妄ル〖チンの弹瓢借妄∈calltex∷		}		else  {			タスク毋嘲借妄ル〖チンの弹瓢借妄∈calltex∷		}	}	レジスタの牲耽∈肩にスクラッチレジスタ∷	充哈み借妄からのリタ〖ン	ⅷ≈ハンドラ∽は·充哈みハンドラとCPU毋嘲ハンドラの另疚ˉ	ⅷ≈呵も嘲娄のハンドラ∽は≈提り黎がタスク∽と咐い垂えることが	   できるˉ	------------------------------------------------------------この面で·柒娄のif矢がいずれの眷圭でもタスク毋嘲借妄ル〖チンの弹瓢借妄を乖う涩妥があることから∈ただし·タスク毋嘲借妄ル〖チンの弹瓢を乖う滦据タスクは佰なる∷·柒娄のif矢は肌のように呵努步できる眷圭があるˉ	------------------------------------------------------------		if (enadsp && runtsk != schedtsk) {			タスクディスパッチ借妄		}		タスク毋嘲借妄ル〖チンの弹瓢借妄∈calltex∷	------------------------------------------------------------6ˉm68k∈68LC040∷脱のタ〖ゲット巴赂婶(1) 涟捏すべてのタスクをス〖パ〖バイザモ〖ドで悸乖することとし·ユ〖ザモ〖ドは脱いないˉ(2) 悸乖コンテキストとCPUロック觉轮タスクコンテキストはマスタモ〖ド·润タスクコンテキストは充哈みモ〖ドで悸乖するˉsense_context は·SR 面のマスタ】充哈みモ〖ドビットを徊救する数恕で悸附するˉIPM が 7 の箕∈NMI を近くすべての充哈みが敦贿される∷かつその箕に嘎り· CPUロック觉轮であるものとするˉsense_lock は·SR 面の IPM を徊救する数恕で悸附するˉNMI はカ〖ネルの瓷妄嘲の充哈みなので·CPUロック觉轮で NMI が减け烧けられるのは汗し毁えないˉchg_ipm をサポ〖トするかどうかを·SUPPORT_CHG_IPM を年盗するかどうかで恃构できるˉタスクコンテキストで IPM を恃构する眷圭には·chg_ipm を蝗わなければならないˉchg_ipm をサポ〖トしない眷圭には·タスクコンテキストで IPM を恃构することはできないˉつまり·タスクコンテキストでは·IPM は撅に 0 になっているˉchg_ipm をサポ〖トする眷圭でも·chg_ipm を蝗って IPM を 7 に恃构することは钓さないˉこれは·chg_ipm と loc_cpu】unl_cpu の簇犯が剩花になるためであるˉまた·IPM が 1×6 の箕にも·タスクディスパッチは瘦伪されないˉ IPM は·タスクディスパッチによって·糠しく悸乖觉轮になったタスクへ苞き费がれるˉそのため·タスクが悸乖面に·侍のタスクによって IPM が恃构される眷圭があるˉこれは·ディスパッチャを数克Bで悸刘する眷圭には燎木に悸刘できるが·数克Aで悸刘する眷圭にはあちこちに IPM の肋年借妄が掐るˉ数克Aで悸刘する眷圭には·IPM が 1×6 の箕にもタスクディスパッチは瘦伪されるとする数が弛であるˉ(3) 充哈みハンドラ叫掐庚借妄m68k∈M68020笆惧∷では·充哈みハンドラの弹瓢によって·蝗脱するスタックが极瓢弄に充哈みスタックへ磊り垂わるため·充哈みスタックへの磊垂え借妄は涩妥ないˉ呵も嘲娄のハンドラであるかどうかは·スタック惧に姥まれた SR 面のマスタ】充哈みモ〖ドビットを徊救して冉年しているˉタスクディスパッチとタスク毋嘲借妄ル〖チンの弹瓢借妄は·ret_int ル〖チンに扦せているˉreqflg をチェックする涟に充哈みを敦贿するのは·充哈みを敦贿しないと· reqflg をチェックした稿に弹瓢された充哈みハンドラ柒でディスパッチが妥滇された眷圭に·ディスパッチが乖われないためであるˉinterrupt_entry:	movem.l %d0-%d1/%a0-%a1, -(%sp)	/* スクラッチレジスタを瘦赂 */	jsr <充哈みハンドラ>		/* 充哈みハンドラを钙び叫す */	movem.l (%sp)+, %d0-%d1/%a0-%a1	/* スクラッチレジスタを牲耽 */	btst.b #4, (%sp)		/* 提り黎が充哈みモ〖ドなら */	jbeq 1f				/*           すぐにリタ〖ン */	ori.w #0x0700, %sr		/* 充哈み敦贿 */	tst.l reqflg			/* reqflg が TRUE であれば */	jbne ret_int			/*              ret_int へ */1:	rte(4) CPU毋嘲ハンドラ叫掐庚借妄m68kでは·CPU毋嘲ハンドラの弹瓢によって充哈みモ〖ドへの败乖はおこらず·蝗脱するスタックは磊り垂わらないˉそのため·CPU毋嘲ハンドラ柒で充哈みモ〖ドに磊り垂えているˉまた·呵も嘲娄のハンドラであるかどうかを冉年するために·充哈みモ〖ドに磊り垂える涟の SR をスタック惧に瘦赂するˉタスクディスパッチとタスク毋嘲借妄ル〖チンの弹瓢借妄は·ret_exc ル〖チンに扦せているˉCPU毋嘲ハンドラへの苞眶は·毋嘲スタックフレ〖ムの黎片戎孟∈すなわち· CPU毋嘲ハンドラの叫掐庚借妄が钙ばれた木稿のスタックポインタ∷としているˉreqflg をチェックする涟に充哈みを敦贿するのは·充哈みを敦贿しないと· reqflg をチェックした稿に弹瓢された充哈みハンドラ柒でディスパッチが妥滇された眷圭に·ディスパッチが乖われないためであるˉexception_entry:	movem.l %d0-%d1/%a0-%a1, -(%sp)	/* スクラッチレジスタを瘦赂 */	lea.l 16(%sp), %a0		/* 毋嘲フレ〖ムの黎片を A0 に */	move.w %sr, %d0			/* SR を D0 に */	and.w #~0x1000, %sr		/* 充哈みモ〖ド */	move.l %d0, -(%sp)		/* 傅の SR をスタックに瘦赂 */	move.l %a0, -(%sp)		/* A0 を苞眶として畔す */	jsr <CPU毋嘲ハンドラ>		/* CPU毋嘲ハンドラを钙び叫す */	addq.l #4, %sp			/* 苞眶を嘉てる */	move.l (%sp)+, %d0	and.w #0x1000, %d0		/* 傅が充哈みモ〖ドなら */	jbeq 1f				/*       すぐにリタ〖ン */	or.w #0x1700, %sr		/* マスタモ〖ドˇ充哈み敦贿 */	tst.l reqflg			/* reqflg が TRUE であれば */	jbne ret_exc			/*              ret_exc へ */1:	movem.l (%sp)+, %d0-%d1/%a0-%a1	/* スクラッチレジスタを牲耽 */	rte(5) 数克Aのディスパッチャ笆布のコ〖ドでは·chg_ipm はサポ〖トしていないˉまた·何脱しなかったコ〖トであるため·瓢侯テストをしていないˉCTXB は≈VP msp∽のみを崔む菇陇挛とするˉタスクのコンテキストは·肌の哭のようにタスクのスタック惧に瘦赂するˉスクラッチレジスタ∈D0×D1·A0×A1∷とその戮のレジスタを侍」に姥むのは·タスク毋嘲借妄ル〖チンの弹瓢に旁圭がよいためであるˉ *  井 	+-----------------------------------+ 

⌨️ 快捷键说明

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