=====================================================================
                         ARM-Mץå¸
                                  Last Modified: 23 Aug 2008 22:04:49
=====================================================================


(1) бƤ륿åȥƥμࡦ

ARM-M¸ϡARMVx-Mƥ򥿡åȤȤƤ롥ARMVx-Mϡ
ARMȤϰۤʤꡤARM̿¹ԤǤʤᡤARM¸ʬƤ롥


(2) Ѥ볫ȯĶưڤʥС󡤥ץ

ͥGCCѤƥѥ뤹롥ưǧСϳƥ
åȰ¸ΥɥȤ˵ܤ롥


(3) åε

(3-1) ǡ˴ؤ뵬

ǡ arch/gcc/tool_stddef.h ƤƤǡfloat
doubleϡ줾IEEE754ñưư
Ǥ롥

(3-2) ߽˴ؤ뵬

ߥϥɥֹȳֹγơξԤб

ߥϥɥֹȳֹϡ㳰ȯIPSR˥åȤ㳰
Ѥ롥SYSTICK15֤ǡߤ16ֹ֤椬դ
Ƥ롥

ͥ٤ʳTMIN_INTPRI͡ˡˡ

ͥ٤ʳϡSoC˥ϡɥŪ˥ݡȤͥ
٥ӥåۤʤΤǡåȰ¸˰ۤʤ롥åȰ¸
ϡͥ٤ΥӥåTBITW_IPRIˤȤγͥΥͥ
٤ΥӥåTBITW_SUBPRIˤ롥ƥӥåͤǽͥ
٤ϰϤϼ̤Ǥ롥

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

㤨ͥ٤Υӥå(TBITW_IPRI)8bitͥ٤Υӥå
(TBITW_SUBIPRI) 1bitξϡ-254  -1 ϰϤǤ롥

ϰϤǡͥγߤκǹͥ١TMIN_INTPRIˤ򥿡
åȰ¸ꤹ롥

Ƴߤγͥ٤ϡCFG_INTTMIN_INTPRIʾͤꤹ롥

dis_intena_intΥݡȤ̵ͭ»

dis_intena_int򥵥ݡȤ롥»äˤʤ

CFG_INT»ȳĥʥåǻѤǤ°

CFG_INT»ϤʤåǻѲǽʳ°äˤ


ͥγ

ͥγߤ򥵥ݡȤ롥ˡϡͥ٤ʳ
ǻꤷݡȤͥ٤κǹ͡ʺǾ͡ˤꡤ
TMIN_INTPRI礭ꤹȡTMIN_INTPRIͤʹͥ١ˤʳ
ͥ٤ꤷߤͥ٤Ȥư

ͥγߤOS¹ػߤˤʤ뤳ȤϤʤʸ̩ˤϳ
νиǤûֶػߤˡȯϡͥΥɤ
ͳ˸ƤӽФ롥

ͥγߤФ롤DEF_INH,CFG_INTϥݡȤ롥

(3-3) CPU㳰˴ؤ뵬

CPU㳰ϥɥֹ

CPU㳰ϥɥֹȤƤϡ㳰ȯIPSR˥åȤ롤㳰ֹ
Ѥ롥㳰㳰ֹϰʲ̤Ǥ롥

        㳰              㳰ֹ
  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

ʤResetȡSVCallˤĤƤϡͥ뤬Ѥ뤿ᡤ桼ϻ
Ѥ뤳ȤǤʤ

(3-4) CPUåߥå

CPUåϡbasepriTMIN_INTPRIͥ٤γߤػߤͤꤹ
롥ߥåϡFAULTMASK'1'ꤹ뤳ȤǼ¸Ƥ롥

(3-5) ǽɾѥƥλȤ˴ؤ뵬

get_utm򥵥ݡȤ롥٤˴ؤƤϡå˰ۤʤ롥

(3-6) ȥåץ롼Ǥν

ȥåץ롼ϡThread⡼ɤǸƤӽФ뤳ȤȤƤ
롥¹Ը塤ߥå֡FAULTMASK򥻥åȡˤȤ롥ߥå
֤ϡͥνλ˵Ĥ롥ȥåץ롼ǡ
MSP򥢥ƥ֤ʥåȤMSPƤ뤿ˤϡINIT_MSP
򥿡åȰ¸롥

(3-7) ٥ơ֥륪եåȤν

ץå¸νǡVector Table Offset Register 򥿡
Ȱ¸ν롼ꤹ롥ʤ٥ơ֥ϡ.vector
Υ°ղäƤ뤿ᡤ󥫥ץȤǤΥ
ꤷ֤롥


(4) ޥɥ饤дϢξ

ͥΥƥåȤơSYSTICѤϡprc_config.c 
򥳥ѥоݤȤե졼ե prc_config.cfg 
ꤹ뤳ȡ

δܤ1msecȤ롥CALIBRATION쥸Ƥ򸵤˷׻
ϡSYSTIC_USE_CALIBRATION 롥CALIBRATION쥸
ʤϡ1msecʬΥͤ TIMER_CLOCK ꤹ롥
ȤơåѤϡSYSTIC_USE_STCLK Ѥ롥


(5) åȰ¸Ǥ

åȰ¸ǤϰʲΥޥɬפ롥

   TMAX_INTNO     : ֹκ(̾γֹ + 15)
   TBITW_IPRI     : ͥ٤Υӥå
   TBITW_SUBIPRI  : ͥ٤ΥӥåΥͥ٤Υӥå
   TMIN_INTPRI    : ͥ٤κǾ͡ʺǹ͡
   TIC_NUME       : ƥåμʬ
   TIC_DENO       : ƥåμʬ
   TIMER_CLOCK    : ͤɽȥߥñ̤ȤѴ
   INTPRI_TIMER   : ޳߳ͥ
   INTATR_TIMER   : ޳ߤγ°
   INIT_MSP       : ȥåץ롼MSP
   DEFAULT_ISTKSZ : å8byteñ̤ǻ
   SIL_DLY_TIM1   : ԤΤ
   SIL_DLY_TIM2   : ԤΤ


(6) ǥ쥯ȥ깽ե빽
  ./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) С

2008/08/22
 prc_user.txt/prc_design.txt
   2008/8/21εѸƤǤε̤ȿǡ
 prc_support.S/prc_config.c/prc_config.h/arm_m.h
   ƥȽexc_ncnt饢ƥ֤ʥåѹ
 prc_config.c
   set_exc_int_priority() ǥݡȲǽIRQξ¤239˳ĥ
 start.S 
   ưThread⡼ɤȤƤ뤳Ȥ
   ֡ȥ鵯ưꤷMSPͭˤ褦
     ѹ
 prc_timer.c
   Ȥ
   ǥХåѥɤ

2008/07/11
 ǽΥ꡼
