=====================================================================
                         ARM-MvZbTˑ
                                  Last Modified: 23 Aug 2008 22:04:49
=====================================================================


(1) ΉĂ^[QbgVXe̎ށE\

ARM-Mˑ́CARMVx-MA[LeN`^[QbgƂĂDARMVx-ḾC
ARMƂ͈قȂCARM߂słȂ߁CARMˑƕĂD


(2) gpJƓ쌟؂io[WCIvVj

J[lGCCpăRpCDmFo[W͊e^[Q
bgˑ̃hLgɋLڂD


(3) ^[Qbg`̋K

(3-1) f[^^ɊւK

f[^^ arch/gcc/tool_stddef.h Œ`ĂeŁCfloat^
double^́CꂼIEEE754̒Px_Ɣ{x_
łD

(3-2) ݏɊւK

݃nhԍƊݔԍ̊āC҂̑Ή

݃nhԍƊݔԍ́COIPSRɃZbgO
pDSYSTICK15ԂŁCO݂16Ԃ̔ԍt
ĂD

ݗDx̒iKiTMIN_INTPRI̒ljC̐ݒ@

ݗDx̒iḰCSoCɃn[hEFAIɃT|[g銄ݗD
xrbgقȂ̂ŁC^[QbgˑɈقȂD^[Qbgˑ
́CݗDx̃rbgiTBITW_IPRIjƂ̊ݗDx̃TuD
x̃rbgiTBITW_SUBPRIj`Derbg̒lƐݒ\ȗD
x͈͎̔͂̒ʂłD

   -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI)) ` -1

ႦΗDx̃rbg(TBITW_IPRI)8bitCTuDx̃rbg
(TBITW_SUBIPRI) 1bit̏ꍇ́C-254 ` -1 ͈̔͂łD

͈̔͂ŁCJ[lǗ݂̊̍ōDxiTMIN_INTPRIj^[Q
bgˑŐݒ肷D

e݂̊ݗDx́CCFG_INTTMIN_INTPRIȏ̒lw肷D

dis_intena_int̃T|[g̗LC̐

dis_intena_intT|[gD͓ɂȂD

CFG_INT̐Ɗgi^[Qbg`Ŏgpł銄ݑj

CFG_INT̐͂ȂC^[Qbg`Ŏgp\Ȋݑ͓ɂ
D

J[lǗO̊

J[lǗO݂̊T|[gDw@́CݗDx̒iK
Ŏw肵CT|[g銄ݗDx̍ōliŏljC
TMIN_INTPRI傫ݒ肷ƁCTMIN_INTPRIliDxjȊ
ݗDxݒ肵݂ݗDxƂĈD

J[lǗO݂̊OSs֎~ɂȂ邱Ƃ͂Ȃiɂ͊
̏ołZԋ֎~jCݔ́CJ[l̃R[ho
RɌĂяoD

J[lǗO݂̊ɑ΂CDEF_INH,CFG_INT̓T|[gD

(3-3) CPUOɊւK

CPUOnhԍ

CPUOnhԍƂẮCOIPSRɃZbgCOԍ
pDeO̗Oԍ͈ȉ̒ʂłD

        O              Oԍ
  Reset                      1
  Non-makable Interrupt      2
  Hard Fault                 3
  Memory Management          4
  Bus Fault                  5
  Usage Fault                6
  SVCall                    11
  Debug Monitor             12
  PendSV                    14

ȂCResetƁCSVCallɂẮCJ[lgp邽߁C[U[͎g
p邱ƂłȂD

(3-4) CPUbNE݃bN

CPUbŃCbasepriTMIN_INTPRI̗Dx݂̊֎~lɐݒ肷
D݃bŃCFAULTMASK'1'ɐݒ肷邱ƂŎĂD

(3-5) \]pVXe̎QƂɊւK

get_utmT|[gDxɊւẮC^[QbgɈقȂD

(3-6) X^[gAbv[`ł̏e

X^[gAbv[`́CThread[hŌĂяo邱ƂOƂĂ
DsC݃bNԁiFAULTMASKZbgjƂD݃bN
Ԃ́CJ[l̏IɋDX^[gAbv[`ŁC
MSPANeBuȃX^bNƂCMSP̓e邽߂ɂ́CINIT_MSP
^[QbgˑŒ`D

(3-7) xN^e[uItZbg̏

vZbTˑ̏ŁCVector Table Offset Register ^[Qb
gˑ̏[`Őݒ肷DȂCxN^[e[úC.vector
̃ZNVtĂ邽߁CJXNvgł̃ZNV
w肵ĔzuD


(4) ^C}hCo֘Ȁ

J[l̃^CeBbNƂāCSYSTICgpꍇ́Cprc_config.c 
RpCΏۂƂCRtBM[Vt@C prc_config.cfg 
w肷邱ƁD

̊{1msecƂDCALIBRATIONWX^̐ݒeɌvZ
ꍇ́CSYSTIC_USE_CALIBRATION `DCALIBRATIONWX^p
Ȃꍇ́C1msec̃JEgl TIMER_CLOCK ɐݒ肷DNb
N\[XƂāCONbNpꍇ́CSYSTIC_USE_STCLK pD


(5) ^[Qbgˑł̐ݒ荀

^[Qbgˑł͈ȉ̃}N`KvD

   TMAX_INTNO     : ݔԍ̍ől(ʏ̊ݔԍ + 15)
   TBITW_IPRI     : ݗDx̃rbg
   TBITW_SUBIPRI  : ݗDx̃rbg̃TuDx̃rbg
   TMIN_INTPRI    : ݗDx̍ŏliōlj
   TIC_NUME       : ^CeBbN̎̕q
   TIC_DENO       : ^CeBbN̎̕
   TIMER_CLOCK    : ^C}l̓\ƃ~bPʂƂ̕ϊ
   INTPRI_TIMER   : ^C}݊ݗDx
   INTATR_TIMER   : ^C}݂̊ݑ
   INIT_MSP       : X^[gAbv[`MSPꍇ͒`
   DEFAULT_ISTKSZ : X^bNTCYi8bytePʂŎwj
   SIL_DLY_TIM1   : ԑ҂̂߂̒`
   SIL_DLY_TIM2   : ԑ҂̂߂̒`


(6) fBNg\Et@C\
  ./arch/arm_m_gcc/
    ./Makefile.prc
    ./arm_m.h
    ./makeoffset.c
    ./prc.tf
    ./prc_cfg1_out.h
    ./prc_check.tf
    ./prc_config.c
    ./prc_config.h
    ./prc_def.csv
    ./prc_insn.h
    ./prc_kernel.h
    ./prc_rename.def
    ./prc_rename.h
    ./prc_sil.h
    ./prc_stddef.h
    ./prc_support.S
    ./prc_test.h
    ./prc_timer.c
    ./prc_timer.cfg
    ./prc_timer.h
    ./prc_unrename.h
    ./prc_user.txt
    ./start.S

(12) o[W

2008/08/22
 Eprc_user.txt/prc_design.txt
   E2008/8/21̋Zpł̋c_ʂ𔽉fD
 Eprc_support.S/prc_config.c/prc_config.h/arm_m.h
   EReLXgexc_ncntANeBuȃX^bNɕύX
 Eprc_config.c
   Eset_exc_int_priority() ŃT|[g\IRQ̏239ɊgD
 Estart.S 
   ENThread[hOƂĂ邱Ƃ𖾋LD
   Eu[g[_[Nꍇz肵CMSPLɂ悤
     ύXD
 Eprc_timer.c
   ERgC
   EfobOpR[h폜

2008/07/11
 Eŏ̃[X
