📄 start.a30
字号:
;*;* TOPPERS/JSP Kernel;* Toyohashi Open Platform for Embedded Real-Time Systems/;* Just Standard Profile Kernel;* ;* Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory;* Toyohashi Univ. of Technology, JAPAN;* Copyright (C) 2001 by OAKS16KIT support;* Copyright (C) 2003-2004 by Naoki Saito;* Nagoya Municipal Industrial Research Institute, JAPAN;* Copyright (C) 2003-2004 by Ryosuke Takeuchi;* Platform Development Center RICOH COMPANY,LTD. JAPAN;* ;* 惧淡螟侯涪荚は·Free Software Foundation によって给山されている ;* GNU General Public License の Version 2 に淡揭されている掘凤か·笆;* 布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ;* アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布·;* 网脱と钙ぶ∷することを痰浸で钓满するˉ;* (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯;* 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖;* スコ〖ド面に崔まれていることˉ;* (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ;* ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱;* に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩·;* この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ;* (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥;* み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ;* (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯;* 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ;* (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する;* ことˉ;* (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄;* 巢からも·惧淡螟侯涪荚を倘勒することˉ;* ;* 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は·;* 塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ;* ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい;* かなる禄巢に簇しても·その勒扦を砷わないˉ;* ;* @(#) $Id: start.a30,v 1.3 2005/11/24 12:41:23 honda Exp $PRCR .EQU 000AH ; プロテクトレジスタPRC0 .BTEQU 0,PRCR ; システムクロックレジスタビットPRC1 .BTEQU 1,PRCR ; プロセッサモ〖ドレジスタビット;PM0 .EQU 0004H ; プロセッサモ〖ドレジスタ0PM1 .EQU 0005H ; プロセッサモ〖ドレジスタ1;CM0 .EQU 0006H ; クロックモ〖ドレジスタ0CM1 .EQU 0007H ; クロックモ〖ドレジスタ1C_CM0 .EQU 00001000B ; CM0(Xcin-HIGH)C_CM1 .EQU 00100000B ; CM1(Xin-HIGH);/* 年眶年盗∈介袋步∷*/;VECTOR_ADR .EQU 0FFE00h ; ベクタアドレス .include m16cvec.inc .section bss_NE,DATA,ALIGN .section data_NE,DATA,ALIGN .section data_NEI,ROMDATA,ALIGN .section bss_NO,DATA,ALIGN .section data_NO,DATA,ALIGN .section data_NOI,ROMDATA,ALIGN;;************************************************;* 介袋步ル〖チン *;************************************************ .section program .glb _hardware_start .glb _kernel_start .glb _software_init_hook;_hardware_start: ldc #RAMEND,ISP ; 充り哈みスタックポインタセット; ----- set Processor mode ----- bset PRC1 ; プロセッサモ〖ドレジスタ今き哈みイネ〖ブル mov.b #00000000b,PM0 ; シングルチップモ〖ド mov.b #00000000b,PM1 ; 润橙磨、ノ〖ウェイト bclr PRC1 ; プロセッサモ〖ドレジスタ今き哈みディゼ〖ブル; ----- set System clock ----- bset PRC0 ; クロックコントロ〖ルレジスタ今き哈みイネ〖ブル mov.b #C_CM0,CM0 ; 券慨 mov.b #C_CM1,CM1 ; 尸件なし bclr PRC0 ; レジスタ今き哈みディゼ〖ブル; ldc #0000h,FLG ; bank#0,充り哈み敦贿,ISP ldintb #VECTOR_ADR ; ベクタテ〖ブルの肋年;------ DATA挝拌の介袋步 ------ mov.w #(topof bss_NE),R3 mov.w #(topof data_NE),A1 sub.w A1,R3 jz bss_clear mov.w #(topof data_NEI & 0ffffh),A0 mov.b #(topof data_NEI >> 16),R1H smovf.b;------ BSS挝拌の介袋步 ------bss_clear: mov.w #(topof bss_NE),A0 mov.w #0,R0clear_loop: mov.w R0,[A0] add.w #2,A0 cmp.w #RAMEND,A0 jne clear_loop;* software_init_hook を钙叫し∈0 でない眷圭∷;*;* ソフトウェア茨董∈泼にライブラリ∷に巴赂して涩妥な介袋步借;* 妄がある眷圭は·software_init_hook という簇眶を脱罢すれば;* よいˉM16Cの眷圭、コンパイル箕EXTERN_SOFT_HOOKをデファインする mov.w #(_software_init_hook & 0ffffh),A0 mov.w #(_software_init_hook >> 16),A1 lde.w [A1A0],R0 mov.w #((_software_init_hook+2) & 0ffffh),A0 mov.w #((_software_init_hook+2) >> 16),A1 lde.w [A1A0],R1 mov.w R0,A0 mov.w R1,A1 or.w R0,R1 jz kernel_link jsri.a A1A0;;;***** カ〖ネルスタ〖トへ *****kernel_link: jsr.a _kernel_start ; --> kernel_start(); .end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -