📄 sh1.txt
字号:
PR:Procedure Register SR:Status Register PC:Program Counterまた、CPU毋嘲券栏箕のPCの猛はインクリメントされる。そのため、CPU毋嘲ハンドラから牲耽を乖うと、CPU毋嘲が券栏した炭吾の肌の炭吾から悸乖を浩倡する。2.4 スタ〖トアップモジュ〖ルSH1巴赂のスタ〖トアップモジュ〖ル(start.S)では、肌の介袋步借妄を乖う。(A) プロセッサモ〖ドの介袋步とスタックポインタの介袋步充り哈みマスクを MAX_IPM に肋年する。肌に、スタックポインタ(r15)を STACKTOP に肋年する。ここで充哈みスタックポインタに肋年されたスタック挝拌は、カ〖ネル弹瓢稿は润タスクコンテキスト脱のスタック挝拌として蝗われる。STACKTOP は、sys_config.h 婶で年盗することを鳞年している。(B) hardware_init_hook の钙叫しhardware_init_hook が 0 でない眷圭には、hardware_init_hook を钙び叫す。hardware_init_hook は、カ〖ネルが弹瓢される涟に乖う涩妥があるタ〖ゲット巴赂の介袋步を乖うために脱罢している。hardware_init_hook がどこでも年盗されていない眷圭、リンカでこのシンボルを 0 に年盗する(リンカスクリプト柒に淡揭あり)。(C) bssセクションと dataセクションの介袋步bssセクションをゼロクリアする。また、dataセクションを介袋步する。(D) software_init_hook の钙叫しsoftware_init_hook が 0 でない眷圭には、software_init_hook を钙び叫す。software_init_hook は、カ〖ネルが弹瓢される涟に乖う涩妥があるソフトウェア茨董(恶挛弄には、ライブラリ)巴赂の介袋步を乖うために脱罢している。software_init_hook がどこでも年盗されていない眷圭、リンカでこのシンボルを 0 に年盗する(リンカスクリプト柒に淡揭あり)。(E) カ〖ネルの弹瓢kernel_start へ尸呆し、カ〖ネルを弹瓢する。kernel_start からリタ〖ンしてくることは鳞年していない。2.5 充哈み券栏箕のスタック久锐翁について笆布の妄统により、称タスクスタックはタスク极咳が蝗脱する尸に裁えて呵络240バイト途尸に脱罢する涩妥がある。JSPカ〖ネルではタスクスタックの戮に充哈みスタックを脱罢し、润タスクコンテキストは充哈みスタックで悸乖される。SH1は毋嘲/充哈み减烧箕に充哈み敦贿になる怠菇がハ〖ドウェアで脱罢されていない。そのため、充哈みの掐庚借妄でソフトウェアによって充哈み敦贿にする涩妥がある。掐庚借妄では充哈み敦贿に败乖するために∈充哈み钓材の觉轮で∷スタックにr0,r1を略闰する。∈SR(Status Register)とPC(ProgramCounter)は充哈み减烧け箕にハ〖ドウェアが极瓢弄に略闰を乖う。∷このとき、驴脚充哈みが券栏すると充り哈みスタックに磊り仑える涟に票屯のフレ〖ムがスタック惧に栏喇される。SH1は充り哈みレベルが15檬あるので、呵碍のタイミングで充哈みが券栏すると、スタックが240バイト久锐される。∈4バイト∵4レジスタ∵15セット∷毋嘲/充り哈みのネスト搀眶のカウント脱にカ〖ネル柒で恃眶intnestを脱罢し、润タスクコンテキストとタスクコンテキストの冉侍はこの恃眶により乖っている。2.6 MACHとMACL (姥下レジスタ∷ MACH:Multiply and accumulate high register MACL:Multiply and accumulate low registerMACHとMACLについては、gccに-mhitachiオプションをつけると、簇眶でMACHとMACLを蝗脱する眷圭、スタックに瘦赂してから蝗脱し、簇眶を却けると傅に提すため、充哈みでは瘦赂していない。また、极らディスパッチャを钙び叫し、ディスパッチする眷圭は、簇眶钙び叫しになるため、この钙び叫しにまたがって、これらのレジスタを蝗うことはないため瘦赂していない。そのためアセンブラのコ〖ドを蝗脱する眷圭もこのル〖ルに骄う涩妥がある。なお、充哈みからのディスパッチ(减瓢弄ディスパッチ)では瘦赂している。2.7 GBR (Global Base Register)gccはGBRを蝗脱しないため、充哈みハンドラの掐庚では瘦赂していない。充哈みハンドラ柒でGBRを蝗う眷圭はアプリケ〖ション娄でGBRの略闰/瘦赂を乖う涩妥がある。また、惧淡のMACHとMACLと票じ妄统により、极らディスパッチャを钙び叫す眷圭にも瘦赂していない。なお、充哈みからのディスパッチ(减瓢弄ディスパッチ)では瘦赂している。3ˉシステム巴赂婶の怠墙3.1 システムクロックドライバシステムクロックドライバが isig_tim を钙び叫す件袋は、sys_defs.h 面のTIC_NUME と TIC_DENO で年盗されている(デフォルトでは 10ミリ擅件袋)。この年盗を恃构することで、isig_tim を钙び叫す件袋を恃构することができる。ただし、タイマの篮刨が 1μ擅であるため、1μ擅帽疤で眉眶になる猛を肋年した眷圭には、isig_tim の钙叫し件袋に疙汗が栏じることになる。デフォルトではSH1柒垄タイマのチャネル0を蝗脱している。3.2 拉墙删擦脱システム箕癸徊救怠墙SH1巴赂婶では、拉墙删擦脱システム箕癸徊救怠墙(vxget_tim)をサポ〖トしている。拉墙删擦脱システム箕癸の篮刨は 1μ擅帽疤であるが、タイマの附哼猛を粕み叫すために办箕弄にタイマを匿贿させる涩妥があるため、vxget_tim を钙ぶ刨にシステムクロックが警しづつ觅れることになる。なお、SYSUTIM房はUD房(64ビットの射规痰し腊眶房)に年盗している。3.3 シリアルインタフェ〖スドライバシリアルインタフェ〖スドライバは、SH1柒垄のSCI∈Serial CommunicationInterface∷のチャネル0をサポ〖トしており、カ〖ネルのログ叫蜗脱に蝗脱している。3.4 メモリマップˇ叠旁マイクロコンピュ〖タ(臭)澜のKZ-SH1-01ˇCQ叫惹(臭)澜のRISC删擦キット SH-1この2つのボ〖ドはメモリマッピングが票じなので、巴赂婶のソ〖スコ〖ドは鼎奶である。∈CQ叫惹のボ〖ドは布淡の≈庙罢∽の灌を徊救∷巴赂婶では、コ〖ド挝拌を 0x0000,0000 × 0x0003,ffffの256KB、デ〖タ挝拌を0x0a00,0000 × の256KB、润タスクコンテキスト脱のスタック挝拌を ×0x0a03,ffff に澄瘦している。庙罢 CQ叫惹のボ〖ドはデフォルトの肋年∈8ビットバス、ROM1改∷では、 アドレスバスの儡鲁がシフトされている。そのため、ROMのアドレスと 悸アドレスが 办米しない。 烧掳のROMモニタ笆嘲のユ〖ザ〖プログラムをROM步する眷圭は、 アドレスバスの肋年を16ビット∈ROM2改∷に恃构する涩妥がある。 ∈CQ叫惹のマニュアルp17を徊救∷ˇ(臭)撅茸睛乖澜のSH7032コンパクトCPUボ〖ドSH1/CPUB巴赂婶では、コ〖ド挝拌を 0x0000,0000 × 0x0003,ffffの256KB、デ〖タ挝拌を0x0f00,0000 × の8KB、润タスクコンテキスト脱のスタック挝拌を ×0x0f00,1fff に澄瘦している。∈SH1柒垄RAMを蝗脱∷4ˉ倡券茨董の菇蜜倡券茨董の菇蜜数恕については、GNU倡券茨董菇蜜マニュアルを徊救すること。倡券にはLinux(Red Hat Linux release 6.2 Kernel 2.2.14-5.0∷を脱いた。瓢侯澄千したツ〖ルのバ〖ジョンは笆布の奶りであるˉ BINUTILS : 2.10 GCC-CORE : 2.95.2 NEWLIB : 1.8.1configure のオプションは--target=sh-hitachi-elfである。また、Windows惧でCygwinを脱いて倡券する眷圭は、binutilsのconfigureのオプションに --disable-nls も回年すること。5ˉその戮5.1 ディレクトリˇファイル菇喇SH1 タ〖ゲット巴赂婶の称ファイルの车妥は肌の奶り。 config/sh1/ Makefile.config MakefileのSH1巴赂年盗 cpu_defs.h プロセッサ巴赂婶のアプリケ〖ション脱年盗 cpu_config.h プロセッサ巴赂婶の菇喇年盗 cpu_config.c プロセッサ巴赂婶の簇眶 cpu_support.S プロセッサ巴赂婶のサブル〖チン cpu_context.h コンテキスト拎侯 makeoffset.c offset.h 栏喇サポ〖トプログラム cpu_insn.h 你レベルのプロセッサ拎侯ル〖チン start.S スタ〖トアップモジュ〖ル shelf.ld リンカスクリプト hw_timer.h タイマ拎侯ル〖チン hw_serial.h シリアルポ〖ト拎侯ル〖チン sh1.h SH1の年盗 config/sh1/kz_sh1/ 叠旁マイクロコンピュ〖タKZ-SH1-01のボ〖ド巴赂婶尸 ∈CQ叫惹RISC删擦キットSH1でも瓢侯材墙∷ Makefile.config MakefileのKZ-SH1-01ボ〖ド巴赂年盗 kz_sh1.h KZ-SH1-01ハ〖ドウェア年盗 sys_config.c システム巴赂婶の簇眶 sys_config.h システム巴赂婶の菇喇年盗 sys_defs.h システム巴赂婶のアプリケ〖ション脱年盗 sys_support.S システム巴赂婶のサブル〖チン config/sh1/tokiwa_sh1/ Makefile.config Makefileの撅茸睛乖SH1/CPUBボ〖ド巴赂年盗 tokiwaw_sh1.h 撅茸睛乖のSH1/CPUBハ〖ドウェア年盗 sys_config.c システム巴赂婶の簇眶 sys_config.h システム巴赂婶の菇喇年盗 sys_defs.h システム巴赂婶のアプリケ〖ション脱年盗 sys_support.S システム巴赂婶のサブル〖チン恃构旺悟2002钳4奉15泣 Release1.3ˇバグフィックス + 介袋步箕の充哈み】CPU毋嘲ネストカウンタの猛の饯赖 + 充哈み叫庚借妄での充哈みマスクの肋年借妄の纳裁ˇその戮の猖紊 + 筛洁ライブラリのmemcpyをリンクする眷圭としない眷圭の尉数に滦炳2001钳11奉20泣 Release1.2ˇバグフィックス + ベクタテ〖ブルのコピ〖の狠、挝拌のサイズを粗般えていた バグを饯赖ˇその戮の猖紊 + 怠硷巴赂婶と鼎奶婶のインタ〖フェ〖スの恃构に纳骄 + 悸乖できるタスクが1つもないときの刁瓢を恃构 ∈chg_ipm()との腊圭∷cpu_config.c2001钳5奉10泣 Release1.1SH1惹のサポ〖トを倡幌
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -