📄 sh1.txt
字号:
♂ TOPPERS/JSPカ〖ネル ユ〖ザズマニュアル ♂ ∈SH1 タ〖ゲット巴赂婶∷ ∈Release 1.3 滦炳·呵姜构糠: 11-Apr-2001∷------------------------------------------------------------------------ TOPPERS/JSP Kernel Toyohashi Open Platform for Embedded Real-Time Systems/ Just Standard Profile Kernel Copyright (C) 2000-2002 by Embedded and Real-Time Systems Laboratory Toyohashi Univ. of Technology, JAPAN Copyright (C) 2001,2002 by Industrial Technology Institute, Miyagi Prefectural Government, JAPAN 惧淡螟侯涪荚は·Free Software Foundation によって给山されている GNU General Public License の Version 2 に淡揭されている掘凤か·笆 布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· 网脱と钙ぶ∷することを痰浸で钓满するˉ (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 スコ〖ド面に崔まれていることˉ (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱 に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩· この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥 み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する ことˉ (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 巢からも·惧淡螟侯涪荚を倘勒することˉ 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は· 塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい かなる禄巢に簇しても·その勒扦を砷わないˉ @(#) $Id: sh1.txt,v 1.12 2002/04/13 13:13:01 imai Exp $------------------------------------------------------------------------1ˉSH1 タ〖ゲット巴赂婶の车妥1.1 タ〖ゲットシステムと倡券茨董SH1ロセッサのタ〖ゲットシステムとしては、SH7032を烹很した笆布のボ〖ドをサポ〖トしている。ˇ叠旁マイクロコンピュ〖タ(臭)澜のKZ-SH1-01(CPU: HD6417032F20)ˇCQ叫惹(臭)澜のRISC删擦キット SH-1(CPU: HD6417032F20)ˇ(臭)撅茸睛乖澜のSH7032コンパクトCPUボ〖ドSH1/CPUB(CPU: HD6417032F20)倡券茨董には、GCC などの GNU倡券茨董を脱い、オブジェクトファイルフォ〖マットは ELF を筛洁とする。1.2 サポ〖トする怠墙の车妥SH1巴赂の怠墙として、充哈みマスクの恃构ˇ徊救(chg_ixx、get_ixx)と、拉墙删擦脱システム箕癸徊救怠墙(vxget_tim)をサポ〖トしている。充哈みの敦贿と钓材(dis_int、ena_int)はサポ〖トしていない。1.3 戮のタ〖ゲットへのポ〖ティング附バ〖ジョンでは、SH7032をサポ〖トしている。SHシリ〖ズはSH1,SH2とSH3笆惯では充哈みの胺いがかなり佰なる。恶挛弄にはSH1、SH2はベクタテ〖ブルを徊救して、充哈み妥傍侍に脱罢された充哈みハンドラに尸呆する。これに滦して、SH3、SH4では充り哈み妥傍によらず1刨票办の充哈みハンドラに尸呆した稿、充り哈み妥傍がセットされたレジスタを徊救して浩刨、尸呆する。SH2へのポ〖ティングは颂长苹惟供度活赋眷が乖い、笆布のURLで给倡している。http://www.hokkaido-iri.go.jp/denshi/OpenSource/Toppers/SH2JSP.html1.4 GDB スタブTOPPERS/JSP カ〖ネル SH1惹はGDBスタブを捏丁せずにROM步のみをサポ〖トしている。经丸弄にGDBスタブと寥み圭わせて蝗脱することを雇胃して、驴怠硷惹のJSPカ〖ネルと票屯に、ソ〖スコ〖ド柒にマクロWITH_STUBによる掘凤コンパイルの肋年を乖っている。SH1脱のGDBスタブは附哼、倡券面であり、窗喇稿にはカ〖ネルと票屯に给倡徒年である。1.5 シリアルポ〖トカ〖ネルのログ叫蜗脱にシリアルポ〖トを1つ蝗脱する。シリアルポ〖トの肋年は ˇ8ビット ˇパリティなし ˇストップビット¨1ビット ˇボ〖レ〖ト¨9600bpsである。2ˉSH1プロセッサ巴赂婶の怠墙この泪では、カ〖ネルおよびシステムサ〖ビスの怠墙の面で、SH1巴赂の婶尸について豺棱する。2.1 デ〖タ房int房および unsigned int房のサイズは 32ビットである。2.2 充哈み瓷妄怠墙と充哈みハンドラカ〖ネル瓷妄嘲の充哈みとしては、 NMI がある。よって、CPUロック觉轮や介袋步ル〖チン柒では、NMI 笆嘲の充哈みはすべて敦贿されている。恶挛弄には、IPM(Interrupt Priority Mask)が 15 に肋年される。经丸弄にGDBスタブを网脱することを雇胃して、ソ〖スコ〖ド柒に笆布のような淡揭を崔む。ボ〖ド惧に NMI 掐蜗を积たないタ〖ゲットのため、GDB のスタブがホストのマシンと奶慨するためのシリアルポ〖トの庭黎刨を 15 で判峡し、GDB でCtrl-C を病すと 充り哈みが掐りスタブに扩告が败るようにしてある。この怠墙を蝗脱するためにはCPUロック觉轮では、庭黎刨が 14 になるようにしなければならない。そのため、CPUロックで肋年される庭黎刨をマクロで MAX_IPMで回年している。MAX_IPM はcpu_config.h の面で #define されている。スタブを蝗う眷圭は 14 にスタブを蝗わない眷圭は 15 に肋年している。SH1巴赂の怠墙として、SR(Status Register)面の 充り哈みマスクビット(I3×I0)の猛を恃构するためのサ〖ビスコ〖ル chg_ipm と、徊救するためのサ〖ビスコ〖ル get_ipm をサポ〖トしている。なお、充り哈みマスクビットの猛を山すデ〖タ房 IPM は、unsigned int房に年盗されている。これらのサ〖ビスコ〖ルは、タスクコンテキストで CPUロック豺近觉轮の眷圭にのみ钙び叫すことができる。chg_ipm により IPM を 0 笆嘲(すなわち、部らかの充哈みが敦贿されている觉轮)にした眷圭でも、ディスパッチは敦贿されず、chg_ipm により恃构した IPM の猛は、ディスパッチ稿のタスクに苞き费がれる。毋えば、あるタスクで IPM を 1 に恃构した稿、部らかの充哈みにより侍のタスクに磊り仑わると、磊り仑わった稿のタスクでも IPM は 1 になる。chg_ipm をサポ〖トするために、充哈みハンドラの叫掐庚借妄などにオ〖バヘッドを栏じている。そこで、SUPPORT_CHG_IPM というマクロにより、これらのサ〖ビスコ〖ルをサポ〖トするかどうかを磊り仑えられるようにしている。SUPPORT_CHG_IPM は、cpu_config.h の面で #define されている。SH1巴赂の充哈みマスクの恃构ˇ徊救のためのサ〖ビスコ〖ルの慌屯は肌の奶り。(1) chg_ipm 充哈みマスクの恃构≮C咐胳API≯ ER ercd = chg_ipm(IPM ipm);≮パラメ〖タ≯ IPM ipm 肋年すべき IPM の猛≮リタ〖ンパラメ〖タ≯ ER ercd エラ〖コ〖ド≮エラ〖コ〖ド≯ E_CTX コンテキストエラ〖 E_PAR パラメ〖タエラ〖(ipm が稍赖)≮怠墙≯IPM(Interrupt Priority Mask)を ipm で回年された猛に肋年する。回年した猛が 0×14ないし0×13笆嘲の眷圭、E_PARエラ〖となる。IPM を0笆嘲∈1×MAX_IPM-1∷に肋年した眷圭でも、ディスパッチは敦贿されない。また、肋年した IPM の猛は、ディスパッチ敦贿稿も苞き费がれる。なお、このサ〖ビスコ〖ルを脱いて、IPM を MAX_IPM (すべての充哈みを敦贿)に肋年することはできない。IPM を MAX_IPM にしたい眷圭には、loc_cpu を蝗うべきである。このサ〖ビスコ〖ルは、タスクコンテキストで CPUロック豺近觉轮の箕のみ钙び叫すことができる。润タスクコンテキストや CPUロック觉轮で钙び叫した眷圭には、E_CTXエラ〖となる。(2) get_ipm 充哈みマスクの徊救≮C咐胳API≯ ER ercd = get_ipm(IPM *p_ipm);≮パラメ〖タ≯ なし≮リタ〖ンパラメ〖タ≯ ER ercd エラ〖コ〖ド IPM ipm 附哼の IPM の猛≮エラ〖コ〖ド≯ E_CTX コンテキストエラ〖≮怠墙≯附哼の IPM(Interrupt Priority Mask)の猛を粕み叫し、ipm に手す。このサ〖ビスコ〖ルは、タスクコンテキストで CPUロック豺近觉轮の箕のみ钙び叫すことができる。润タスクコンテキストや CPUロック觉轮で钙び叫した眷圭には、E_CTXエラ〖となる。2.3 CPU毋嘲瓷妄怠墙とCPU毋嘲ハンドラDEF_EXC で回年する充哈みハンドラ戎规(excno)は、SH1 での ベクタテ〖ブルのベクタ戎规を山し、そのデ〖タ房(EXCNO)は unsigned int房に年盗されている。DEF_EXC で、ベクタ戎规として铜跟でない猛や、CPU毋嘲に滦炳しない戎规を回年した眷圭の瓢侯は瘦沮されない。CPU毋嘲ハンドラに畔されるp_excinfは、CPU毋嘲券栏箕のコンテキストを瘦赂したスタックへのポインタが畔される。スタックの菇陇を笆布に绩す。 ---------------------- | PR | ---------------------- | R7 | ---------------------- | R6 | ---------------------- | R5 | ---------------------- | R4 | ---------------------- | R3 | ---------------------- | R2 | ---------------------- | R1 | ---------------------- | R0 | ---------------------- | PC | ---------------------- | SR | <-- p_excinf ----------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -