📄 arm7tdmi.txt
字号:
♂ TOPPERS/JSPカ〖ネル ユ〖ザズマニュアル ♂ ∈ARM7TDMI タ〖ゲット巴赂婶∷ ∈Release 1.3滦炳·呵姜构糠: 11-Apr-2002∷------------------------------------------------------------------------ TOPPERS/JSP Kernel Toyohashi Open Platform for Embedded Real-Time Systems/ Just Standard Profile Kernel Copyright (C) 2000,2001 by Embedded and Real-Time Systems Laboratory Toyohashi Univ. of Technology, JAPAN 惧淡螟侯涪荚は·Free Software Foundation によって给山されている GNU General Public License の Version 2 に淡揭されている掘凤か·笆 布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· 网脱と钙ぶ∷することを痰浸で钓满するˉ (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 スコ〖ド面に崔まれていることˉ (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱 に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩· この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥 み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する ことˉ (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 巢からも·惧淡螟侯涪荚を倘勒することˉ 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は· 塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい かなる禄巢に簇しても·その勒扦を砷わないˉ @(#) $Id: arm7tdmi.txt,v 1.7 2002/04/11 04:18:21 honda Exp $------------------------------------------------------------------------1ˉARM7TDMI タ〖ゲット巴赂婶の车妥1.1 タ〖ゲットシステムと倡券茨董ARM7TDMIプロセッサのタ〖ゲットシステムとしては、CPUコアにARM7TDMIを脱いているKS32C50100を烹很したARM家のEvaluator-7Tをサポ〖トしている。倡券茨董には、GCC などの GNU倡券茨董を脱い、オブジェクトファイルフォ〖マットは ELF を筛洁とする。1.2 サポ〖トする怠墙の车妥ARM7TDMI 巴赂の怠墙として、拉墙删擦脱システム箕癸徊救怠墙(vxget_tim)をサポ〖トしている。充哈みの敦贿と钓材(dis_int、ena_int)はサポ〖トしていない。1.3 戮のタ〖ゲットへのポ〖ティング附バ〖ジョンでは、KS32C50100に巴赂した肋纷となっているˉそのため·戮のARM7TDMIを网脱したCPUに败竣する眷圭·cpu_support.cのディスパッチャ簇息·CPUの觉轮瓷妄簇犯のソ〖スを恃构する涩妥があるˉなお·充哈み簇息の怠墙は·システム巴赂婶に淡揭しているˉ1.4 GDB スタブTOPPERS/JSP カ〖ネルは GDB スタブと鼎に蝗脱することを涟捏にしている。そのため、sys_putc はスタブ钙び叫しで悸附し、充り哈みハンドラはスタブ沸统で钙ばれる。1.5 シリアルポ〖トスタブによる GDB との奶慨と、カ〖ネルのログ叫蜗脱に2つのシリアルポ〖ト蝗脱する。GDB脱の奶慨ポ〖トとカ〖ネルのログ叫蜗脱ポ〖トの肋年は肌の脱になっているˉなお、链てのポ〖トにおいて デ〖タ:8bit,Parity:none,Stop:1bitである。 GDB 奶慨脱 カ〖ネルログ脱ˇEvaluator-7T COM1:57600bps COM2:19200bps 1.6 Thumbコ〖ドについてThumbコ〖ドの网脱については·附哼はサポ〖トしてないˉ2ˉARM7TDMI プロセッサ巴赂婶の怠墙この泪では、カ〖ネルおよびシステムサ〖ビスの怠墙の面で、ARM7TDMI巴赂の婶尸について豺棱する。2.1 デ〖タ房int房および unsigned int房のサイズは 32ビットである。2.2 充哈み瓷妄怠墙と充哈みハンドラカ〖ネル瓷妄嘲の充哈みとしては FIQがある。よって、CPUロック觉轮や介袋步ル〖チン柒では、FIQ 笆嘲の充哈みはすべて敦贿されている。恶挛弄には、CPSR(カレントプログラム觉轮レジスタ)のIRQ敦贿ビット(ビット7)が 1 に肋年される。DEF_INH で回年する充哈みハンドラ戎规(inhno)は、KS32C50100 で件收モジュ〖ル髓に年盗されている充り哈み戎规であるˉデ〖タ房(INHNO)は unsigned int房に年盗されている。2.3 CPU毋嘲瓷妄怠墙とCPU毋嘲ハンドラDEF_EXC で回年する充哈みハンドラ戎规(excno)は、ARM7TDMIで年盗されている·毋嘲妥傍であるˉそのデ〖タ房(EXCNO)は unsigned int 房に年盗されている。DEF_EXC で、毋嘲コ〖ド戎规として铜跟でない猛や、CPU毋嘲に滦炳しない戎规を回年した眷圭の瓢侯は瘦沮されない。CPU毋嘲ハンドラに畔されるp_excinfは·CPU毋嘲券栏箕のコンテキストを瘦赂したスタックへのポインタが畔されるˉスタックの菇陇を笆布に绩すˉ ---------------------- | R0 | <-- p_excinf ---------------------- | R0 | ---------------------- | R1 | ---------------------- | R2 | ---------------------- | R3 | ---------------------- | ip | ---------------------- | lr | ---------------------- | PC | ----------------------2.4 スタ〖トアップモジュ〖ルARM7TDMI巴赂のスタ〖トアップモジュ〖ル(start.S)では、肌の介袋步借妄を乖う。(A) プロセッサモ〖ドの介袋步とスタックポインタの介袋步呵介に、プロセッサモ〖ドを泼涪モ〖ド、IRQ,FIQ充哈みを敦贿にするˉ肌に、スタックポインタ(sp)を 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 からリタ〖ンしてくることは鳞年していない。3ˉシステム巴赂婶の怠墙3.1 システムクロックドライシステムクロックドライバが isig_tim を钙び叫す件袋は、sys_defs.h 面の TIC_NUME と TIC_DENO で年盗されている(筛洁は 1ミリ擅件袋)。この年盗を恃构することで、isig_tim を钙び叫す件袋を恃构することができる。ただし、タイマの篮刨が 1μ擅であるため、1μ擅帽疤で眉眶になる猛を肋年した眷圭には、isig_tim の钙叫し件袋に疙汗が栏じることになる。3.2 拉墙删擦脱システム箕癸徊救怠墙ARM7TDMI 巴赂婶では、拉墙删擦脱システム箕癸徊救怠墙(vxget_tim)をサポ〖トしている。拉墙删擦脱システム箕癸の篮刨は 1μ擅帽疤であるが、タイマの附哼猛を粕み叫すために办箕弄にタイマを匿贿させる涩妥があるため、vxget_tim を钙ぶ刨にシステムクロックが警しづつ觅れることになる。なお、SYSUTIM房は UD房(64ビットの射规痰し腊眶房)に年盗している。3.3 シリアルインタフェ〖スドライバシリアルインタフェ〖スドライバは、KS32C50100のUART0をサポ〖トしてる。3.4 メモリマップˇCARD-E09A巴赂婶では、コ〖ド挝拌を 0x00008000 × 0x00039fff 腆200KB、デ〖タ挝拌を 0x0003A000 × の腆200KB·润タスクコンテキスト脱のスタック挝拌を ×0x00073fff に澄瘦している。0x0c074000笆布は、スタブのワ〖クエリアとなっており、蝗脱することができない。4ˉ倡券茨董の菇蜜倡券茨董の菇蜜数恕については·GNU倡券茨董菇蜜マニュアルを徊救のことˉ4.1 倡券茨董のバ〖ジョン瓢侯澄千したツ〖ルのバ〖ジョンは笆布の奶りであるˉ BINUTILS : 2.11.2 GCC-CORE : 3.0.2 GDB : 5.0 NEWLIB : 1.9.04.2 ツ〖ルソ〖スの饯赖惧淡のバ〖ジョンのツ〖ルを菇蜜するさい笆布の饯赖が涩妥となるˉ4.2.1 GCC-CORE そのままコンパイルすると·libgcc,libcがinterwork滦炳にならないため· ./gcc/config/arm/t-arm-elfの MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork MULTILIB_DIRNAMES += normal interwork MULTILIB_EXCEPTIONS += *mapcs-26/*mthumb-interwork* の涟についている"#"を嘲して铜跟にするˉ 4.2.2 GDB ./gdb/rdi-share/devsw.c 39乖誊·69乖誊 のstruct tm lmの离咐している乖をコメントアウトするˉ 4.3 プログラムのダウンロ〖ド ホストPCとボ〖ドをシリアルケ〖ブルで芬ぎ·gdbにダウンロ〖ドしたい プログラムを回年するˉ 肌に笆布のコマンドを悸乖するˉttySXXのXXはシリアルを儡鲁してい るポ〖ト戎规であるˉ set remotebaud 57600 set endian little set rdi /dev/ttySXX 稿は·loadでプログラムをダウンロ〖ドして·continueで悸乖するˉ また·Ctrl-Cで瓢侯面のプログラムを匿贿できるˉ5ˉその戮5.1 ディレクトリˇファイル菇喇ARM7TDMI タ〖ゲット巴赂婶の称ファイルの车妥は肌の奶りˉ config/arm7tdmi/ Makefile.config MakefileのARM7TDMI巴赂年盗 arm7tdmi.h ARM7TDMIの年盗 armelf.ld ビッグエンディアン脱リンカスクリプト cpu_defs.h プロセッサ巴赂婶のアプリケ〖ション脱年盗 cpu_config.h プロセッサ巴赂婶の菇喇年盗 cpu_config.c プロセッサ巴赂婶の簇眶 cpu_support.S プロセッサ巴赂婶のサブル〖チン cpu_context.h コンテキスト拎侯 makeoffset.c offset.h 栏喇サポ〖トプログラム cpu_insn.h 你レベルのプロセッサ拎侯ル〖チン start.S スタ〖トアップモジュ〖ル config/arm7tdmi/evaluator_7t Makefile.config MakefileのEvaluator-7T巴赂年盗 evaluator7t.h Evaluator-7Tハ〖ドウェア年盗 hw_serial.h シリアルインタフェ〖スデバイス拎侯ル〖チン hw_timer.h タイマ拎侯ル〖チン sys_config.c システム巴赂婶の簇眶 sys_config.h システム巴赂婶の菇喇年盗 sys_defs.h システム巴赂婶のアプリケ〖ション脱年盗 sys_support.S システム巴赂婶のサブル〖チン
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -