
		TOPPERS/FMPͥ
		ѹ

		бС: Release 1.0.2
		ǽ: 2009ǯ97

ΥɥȤϡTOPPERS/FMPͥRelease 0.A.0ʹߤѹ
˵ҤΤǤ롥

----------------------------------------------------------------------
 TOPPERS/FMP Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     Flexible MultiProcessor Kernel

 Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
             Graduate School of Information Science, Nagoya Univ., JAPAN
 
 嵭Ԥϡʲ(1)(4)ξ˸¤ꡤܥեȥ
 ܥեȥѤΤޤࡥʲƱˤѡʣ
 ѡۡʰʲѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
 (1) ܥեȥ򥽡ɤηѤˤϡ嵭
     ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
     ˴ޤޤƤ뤳ȡ
 (2) ܥեȥ򡤥饤֥ʤɡ¾Υեȥȯ˻
     ѤǤǺۤˤϡۤȼɥȡ
     ԥޥ˥奢ʤɡˤˡ嵭ɽѾ浪Ӳ
     ̵ݾڵǺܤ뤳ȡ
 (3) ܥեȥ򡤵Ȥ߹ʤɡ¾Υեȥȯ˻
     ѤǤʤǺۤˤϡΤ줫ξ
     ȡ
   (a) ۤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
       ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
   (b) ۤη֤̤ˡˤäơTOPPERSץȤ
       𤹤뤳ȡ
 (4) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
     ⡤嵭ԤTOPPERSץȤդ뤳ȡ
     ޤܥեȥΥ桼ޤϥɥ桼Τʤ
     ͳ˴Ťᤫ⡤嵭ԤTOPPERSץȤ
     դ뤳ȡ
 
 ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥ
 TOPPERSץȤϡܥեȥ˴ؤơλŪ
 ФŬޤơʤݾڤԤʤޤܥեȥ
 ѤˤľŪޤϴŪʤ»˴ؤƤ⡤
 Ǥʤ
 
 @(#) $Id: version.txt 366 2009-09-07 10:28:29Z ertl-honda $
----------------------------------------------------------------------
        TOPPERS/FMPͥ
        Release 1.0.1  1.0.2 ؤѹ
        ꡼ 2009-09-07

ѹΥꥹ
porting.txt νɵ

CHECK_DISPATCH() Ѳսѹ
  CHECK_TSKCTX_UNL() ⤷ CHECK_INTCTX_UNL() ѹ
  ǥѥåǽ֡dspflgˤΥåCPUåָ˥
  å褦ѹAPIϰʲ̤ꡥ

    dataqueue.c: snd_dtq()
    dataqueue.c: tsnd_dtq()
    dataqueue.c: rcv_dtq()
    dataqueue.c: trcv_dtq()

    eventflag.c: wai_flg()
    eventflag.c: twai_flg()

    mailbox.c: rcv_mbx()
    mailbox.c: trcv_mbx()

    mempfix.c: get_mpf()
    mempfix.c: tget_mpf()

    pridataq.c: snd_pdq()
    pridataq.c: tsnd_pdq()
    pridataq.c: rcv_pdq()
    pridataq.c: trcv_pdq()

    semaphore.c: wai_sem()
    semaphore.c: twai_sem()

    task_sync.c: slp_tsk()
    task_sync.c: tslp_tsk()
    task_sync.c: dly_tsk()

CHECK_DISPATCH() κ

CHECK_TSKCTX_UNL()/CHECK_INTCTX_UNL() ѹ
  sense_tskctx_unl()/sense_intctx_unl() ƤӽФ褦ѹ

sense_tskctx_unl()/sense_intctx_unl() ɲ

sense_context()/[tix]_sense_lock()Υޥ졼б
  CPUå֤ǸƤӽФ뤿ᡤ¹˥ޥ졼󤵤
  ʤ褦˽ŪˤϡCPU ID CPUͭΥǡ
  սCPUå֤Ǽ¹Ԥ褦ѹ

CHECK_NONSELF()κȻѲսν
  ߶ػ˥åȡޥ졼󤵤줿ˡۤʤ
  åͤɤ߹ǽ뤿ᡤߥå˥å
  褦ѹAPIϰʲ̤ꡥ

   task_manage.c : ter_tsk() : 㥤ȥå
   task_manage.c : ter_tsk() : ץååγ٥å

CHECK_LOCSPN()κ
  ѤƤʤ

----------------------------------------------------------------------
        TOPPERS/FMPͥ
        Release 1.0.0  1.0.1 ؤѹ
        ꡼ 2009-07-17

ѹΥꥹ

test/test_mact_tsk{1,2,3} ڤ test/test_mig_tsk{1,2}ưʤ
  

ǥѥåػ߾֤ΥץåΥǥѥåľ֤
  ץå mrot_rdq ƤơȤʤ

call_texrtn()¾Υ˥ǥѥåݤ
  åޤޡǥѥåƤᡤƸ
  ӽФ褦ѹ

ԥɤLF

CPU㳰ֹפʤϡ㳰ֹפCPU㳰ϥɥֹפ

imact_tskǥץåIDΥåȴƤ

ץååT_ACQUIRE_NESTED_LOCK_AND_CHECK_RUNNABLEν
  RUNNABLEǤʤ˥֥ȥåƤʤ

msta_cycTA_PHS°Ǥʤϥɥεưư˽

mact_tskˤ굯ư׵᤬塼󥰤줿 ter_tsk Ƥ
  ޥ졼󤵤ʤ
  make_dormant()  actprc ʤ褦ѹ
  actprc  actque Ʊսǽ褦ѹ

ХꥢƱϢΥɤΥ롼ѿ volatile ղ

ext_tskǥޥ졼󤹤˥ޥ졼׵᤬ꥢ
  ʤ

ƥȥץϢ
 ƥȥ饤֥˥ХꥢƱؿɲ
 åݥɽ˥ץåIDƱɽ
 åݥȴؿǳߥå˥ץåIDƤ
   
 åݥȴؿȴλåݥȤǤPRCIDμsilؿѹ
 test_spin_lock.c ν
   try_spn/itry_spnΥåԻΥ顼ɤE_OBJ˽줿
     Ȥȼ
   ƥȽλ check_finish() ƤӽФ褦˽
 test_mact_tsk2.c ν
   ץå2ǽλ check_finish() ƤӽФ褦˽
 CPU㳰Υƥȡʥ󥰥ץåˤɲ
 㳰Υƥȡʥ󥰥ץåˤɲ
 ޥեΥƥȡʥ󥰥ץåˤɲ
 ƥ֤˴ؤƥȡʥ󥰥ץåˤɲ

sig_semμ¹Իַ¬ץɲ

ref_spnCPUå֤ｪλ
  E_CTXȤʤ褦˽  

get_pid/iget_pidCPUå֤ｪλ
  E_CTXȤʤ褦˽  

msta_alm()/imsta_alm()/msta_cyc()TPRC_INIȯԤ E_ID 
  ֤

imsta_alm()  TPRC_INI ȯԤƤоݥ顼ϥɥ餬ư
  ʤ

ԥå֤ǡloc_cpu()/iloc_cpu()/unl_cpu() 
  /iunl_cpu()ȯԤ E_CTX 顼Ȥʤ
  ֤ѹʤ褦˽

try_spn/itry_spnǴ˥åƤΥ顼ɤ 
  E_TMOUT ˤʤν

ref_spn¾饹ԥåξ֤򻲾ȤǤʤ

ޥ̾ѹ(TPRC_INIT -> TPRC_INI)

unl_spn/iunl_spnΥ顼ɤν
  оݤΥԥå unl_spn(), iunl_spn()  
  E_CTX 顼֤äƤᡤE_ILUSE֤褦˽

ena_int/dis_intΥå˴ؤ뽤
  ޥ졼θơ߶ػ߸˳ֹΥåԤ
  褦˽

sus_tskΥåޥѹ
  оݤξϡ¾sus_tskȥ졼󥰤ȡE_QOVR ֤뤳
  Ȥ롥

T_ACQUIRE_NESTED_DUAL_LOCK_AND_CHECK_MIG()ν
  CPUåƤ
  
wait_tmoutѤåޥѹ
  I_ACQUIRE_NESTED_LOCK() -> I_ACQUIRE_NESTED_LOCK_AND_CHECK_MIG()
  ˽

ext_tskλѤåޥѹ
  T_ACQUIRE_TSK_LOCK_AND_CHECK_MIG(my_p_runtsk->p_pcb) -> 
  T_ACQUIRE_TSK_LOCK_AND_CHECK_RUNNABLE()
  ˽

sus_tskλѤåޥѹ
  T_ACQUIRE_TSK_LOCK() -> T_ACQUIRE_TSK_LOCK_AND_CHECK_MIG()
  ˽

stp_cyc/ref_cycλѤåޥѹ
  T_ACQUIRE_TSK_LOCK() -> T_ACQUIRE_TSK_LOCK_AND_CHECK_MIG
  ˽

mrot_rdqǻѤåޥν
  T_ACQUIRE_NESTED_LOCK_AND_CHECK_MIG() -> T_ACQUIRE_TSK_LOCK(p_pcb) 
  ˽

fsnd_dtqǤλѤåޥν
  I_ACQUIRE_NESTED_LOCK_AND_CHECK_MIG() -> T_ACQUIRE_NESTED_LOCK_AND_CHECK_MIG()
  ˽

can_wupǤλѤåޥν
  I_ACQUIRE_TSK_LOCK_AND_CHECK_MIG() -> T_ACQUIRE_TSK_LOCK_AND_CHECK_MIG() 
  ˽

̥ץå˽°¹Ծ֤ΥФref_tskȯԤν
  ȯԤȡ֤ȤTTS_RUNǤϤʤTTS_RDY֤äƤƤᡤ
  TTS_RUN֤褦˽

̤Ѥδ֥å
  ƥ֥ȤȤʤ kernel_cfg.c 롤
  ʲΥ֥TOPPERS_EMPTY_LABEL()ΰְäƤ
   * ޥե, ٥ȥե饰, ǡ塼, ͥ٥ǡ塼
     ᡼ܥå, Ĺס, ϥɥ, 顼ϥɥ 

----------------------------------------------------------------------
        TOPPERS/FMPͥ
        Release 0.B.0  1.0.0 ؤѹ
        ꡼ 2009-05-13

ѹΥꥹ

ѹΤäǽ
  fmp_sepc.txt ΰǽλѹ򹹿

rel_waiΥ顼ɤν
  ǥåɥå롼ǡоݥԤ줿Υ顼
  ɤE_OKE_OBJ˽

ASP ͥ 1.4.0ɽ
  call_atexitѻ
    å¸call_atexitƤӽФΤ롥
    call_atexitǹԤäƤɸŪˤsoftware_term_hookƤӽ
    ˤϡɬפǤtarget_exitƬǹԤȤȤ롥

  TSZ_MPF

  get_utmν
    ϥɥ顤顼ϥɥget_utmƤ֤ȡ郎
    ֤ʤ

  ¹Իʬ۽ץ⥸塼ν
    TNUM_HISThistgram.hhistgram.c˰ư

  ȥ졼ǽβ
    LOG_TEX_ENTERLOG_TEX_LEAVEΥѥ᡼ˡp_runtskɲá

  clean˺ե
    clean˺ե򡤥åȰ¸뤿ѿ
   CLEAN_FILESˤƳ

  桼ƥƥν
    makereleaseȤǥ쥯ȥ̾aspˤ򡤥ȥǥ쥯ȥ꤫
    ꤹ褦˽
    makedepˡCygwinĶˤ롼ȥǥ쥯ȥ̾ꤹ뤿
    -RץɲáMakefileMAKEDEP_OPTSѿɲá

  ڥåȰ¸call_atexitѻ
    call_atexitѻߤᡤåȰ¸롥
    call_atexitǹԤäƤɸŪˤsoftware_term_hookƤӽ
    ˤϡɬפǤtarget_exitƬǹԤ

  ڥåȰ¸makedepƤֺݤΥץɲ
     MakefileΥåȰ¸Makefile.targetˤmakedepƤ
     ˤϡ$(MAKEDEP_OPTS)ɲä롥

     @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
             -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend

  ڥåȰ¸ۥƥץ졼ѿͤκ
     OMIT_INITIALIZE_INTERRUPTOMIT_INITIALIZE_EXCEPTION2ĤΥƥ
     졼ѿͤ򡤥إåե鼫ư褦˽
     ᡤåȰ¸target.tfޤϤ饤󥯥롼ɤ
     եˤͤƤС롥

ƥ।󥿥ե쥤䡼API˥ץåIDAPIΥޥɲ
  void sil_get_pid(uint_t *p_id)
    -> void sil_get_pid(ID *p_prcid)

ڥåȰ¸TOPPERS_MASTER_PRCID 򥫡ͥ붦̹ޥ
   Ƴ
  
ڥåȰ¸TOPPERS_SYSTIM_ADMIN_PRC_ID ̾ѹ
  TOPPERS_SYSTIM_PRCIDѹ

ref_cyc/ref_almǤprcidμɲ

Х륿Υ顼åɲ
  ƥץåʳإ।٥ȥϥɥϿ
  ȡդǽץåإƥץåʳꤷ
  ˥顼Ȥ롥

ڥåȰ¸TOPPERS_SYSTIM_ADMIN_PRC_ID Ƴ
   ƥץåIDꡥ

ڥåȰ¸ۥޥ̾ѹ
    GENERATE_TMEVT_HEAP_G_KTIMER
    ->GENERATE_TMEVT_HEAP_SYSTIM_GLOBAL

    GENERATE_TEVTCB_G_KTIMER
    ->GENERATE_TEVTCB_SYSTIM_GLOBAL

ڥåȰ¸TTYPE_KTIMER ѻ
  ե졼ιˤꡤޥdefine.tfǼǽȤʤ
  ѻߡ

ե졼ι1.5.0-a7_2009-4-24
  饹ID˰ѥ᡼ǽ

ƥ।󥿥ե쥤䡼API˥ץåIDAPIɲ

Сֹν

ץץmsta_cycmsta_almɲá

ڥåȰ¸ۥƥδΥޥ򥫡ͥޥ
  顤ͥ빽ޥѹ

ISR/롼/λ롼¨͡ʥɥ쥹ˤꤷ˥
  顼Ȥʤ
  
psnd_pdq() ǥå塤ԤƤ˥ǥ
  åʤԶν

ӥñ̤ǥ饤֥경Υ顼ν
  ӥñ̤ǥ饤֥경ˡgiant_lockext_ker_reqflg
  ¿ȤʤäƤޤ

rcv_pdq/prcv_pdq/trcv_pdqǥХåեԤΥѥ
  
  ԤΥäƤǡ򥭥塼ϿȤͥ
  rcv_dtq/trcv_dtqϤǡͥ٤ȤʤäƤ롥
  äƤǡϿ褦˽

tmoutTMO_POLꤵ줿νʤԶν
  ʲAPIˤơtmoutTMO_POLꤵ줿νʤä
  trcv_dtq/trcv_pdq/tsnd_pdq

֥ȥå˥ǥѥåƤƤԶν
  ʲAPIˤơ֥ȥå˥ǥѥåƤ
  Ƥ
    twai_sem/tsnd_dtq/trcv_mbx/trcv_pdq/tsnd_pdq

åޥԶ罤
  ʲ2Υޥ˴ؤơåؿͤȿФȤƤ
  ᡤ
  ACQUIRE_DUAL_TSK_LOCK/ACQUIRE_NESTED_TSK_LOCK_AND_CHECK_MIG(ץ
  å)

ڥåȰ¸CPU㳰ϥɥ餫Υ꥿Υԥåΰ
  CPU㳰ȯ˥ԥåƤϡ꥿˲
  ʤ

Х륿get_utm̵

ref_spnɲ
  ԥåξ֤򻲾Ȥ ref_spn ɲá

ԥåunl_cpu/iunl_cpu/loc_cpu/iloc_cpuΰѹ
  ɤAPI⥹ԥåϸƤӽФȤϲǽ֤Ѳ
  褦ѹ

mig_tskλѹ
  оݥ°ץåƱΥץåꤷˤϡ
  ޥ졼ȯʤ̤ͥƱͥ٤ΥǺ
  Ȥʤ褦ѹ 

try_spnΥ顼ɤѹ
  åǤʤäΥ顼ɤE_TMOUTE_OBJѹ

ͥƥ֥ԥξ˥ԥå­Υ顼
  ѹ
  E_NOIDE_NORESѹ  

Ѹѹ
  ޥ졼 -> դǽץå

ꤷE_OBJ֤Ƥ
  can_act/get_pri/wup_tsk/can_wup/rsm_tsk/chg_pri
  FDMPͥ뤫ΰܿterflgΥå롼󤬻ĤäƤ

ޥ̾ѹCHECK_LCKSPN -> CHECK_LOCSPN

ޥ̾ѹ(PRC_INIT -> TPRC_INIT)
  ¾ȤΤѹ

TLVб
  ./arch/logtrace/trace_dump.c ѹ

饹3/4ͭˤΥ顼ν
  ./sysvc/logtask.c, ./syssvc/serial.c ˤĤơޥְä
  ᡤ饹3/4ȥ顼ȤʤäƤ

make_runnable()ѹ
  ֤ѹԤʤʤ褦ѹѹˤꡤޥ졼
  ΥץåΥ塼³뤵make_runnableƤӽФ
  ⡤ξ֤ѹ줿Ϥʤ褦ˤʤä

OMIT_KER_REQ_ON_IPI˴ؤ뽤
  OMIT_KER_REQ_ON_IPI̤ξ硤initialize_pcb()ǡ
  ext_ker_reqflgƤ补

----------------------------------------------------------------------

        TOPPERS/FMPͥ
        Release 0.A.0  0.B.0 ؤѹ
        ꡼ 2008-02-04

ѹΥꥹ

ɥȤ
  ASPͥ뤫ѹ줿ˤĤƵܤ

ͥǡΥ־ˡѹ
  ե졼ɲä줿ؿǽѤơGNUĶʳ⥵
    Ȳǽʤ褦ѹ

ƥॵӥΥ־ѥޥѹ
  GNUĶʳ⥵ݡȲǽʤ褦ˡΤߤλ꤫顤ѿ
    ΤޥǹԤ褦ѹ

ե졼եǤΥ饹IDΥåɲ

ŪAPIΥ顼ɤѹ

󥿥ƥѤΥåιѹ

󥿥ƥȤΥå롼μ

Х륷ƥΥԥåѹ
  sil饫ͥΥԥåǽѤ褦ѹ

ñ̤Υ꥿˥ԥå֤Ȥ롥 
  
  㳰롼
  ߥϥɥ/ߥӥ롼/।٥ȥϥɥ
  CPU㳰ϥɥ 

ͥܥΥ͡
  ͡वƤʤäܥ뤬äᡤ͡ࡥ

Ѹ
  "åβ"졥  

ߴϢλѹ
  ͽspec˽򤹤褦˽񤭴

롼Ƚλ롼λѹ
  饹°ʤХ롼Ƚλ롼Ƴ  

ȤѸѹ : 
  Υץåؤ"°""դ"Ѹѹ

ȥ졼γȽ : 
  ƤAPIȥϥɥ¹ԤΥȥ졼μȡϥ롼
  

ޥ졼ɲ : ./kernel/task.h ./kernel/task_manage.c
  ޥ졼˥褦ѹ

ν : ./syssvc/syslog.c
  ľ prc_index() Ȥʤ褦ѹ

ߥ졼Υԥåν : 
  ./kernel/kernel.tf, ./kernel/spin_lock.h, ./kernel/spin_lock.c
  ߥ졼ν֥åȴ֥åι¤Ťä
  ᡤưʤ

kernel_cfg.cISR롼ν : ./kernel/kernel.tf
  ֹξ̥ӥåȤ˥ץåIDղäγߥӥ
  롼ʤä

ԥå֥Ȥν : ./kernel/spin_lock.c
  ߥ졼ξinitialize_spin_lock()ǤΥåѿ
  롼󤬸ŤޤޤǤä

å롼ν: ./kernel/mp.h
  󥿥ƥѤΥȥ饤å롼ǥȥ饤
  ߤĤƤʤս

ǽɾץɲ : ./perf
   act_tsk, mact_tsk, mig_tsk ǽɾץɲá

ƥȥץɲ : ./test
   1ƥȡ2mig_tskƥȡ2mact_tskƥȤɲá

histgram.c Υåץǡ : ./library/histgram.c
   åȰ¸ޥ(HIST_GET_TIM)ˤ¬ǽȤ

calltex()ν : ./kernel/task.c
   calltex()ǡcall_texrtn() ǤϤʤdispatch_call_texrtn() Ƥ
   Ф褦˽

prc_index()  ץåIDɲ : ./doc/porting.txt
   prc_index()֤٤ͤˤĤơץåIDӤˤĤ
   á

ASP 1.3.2 ɽ
   ASP 1.3.1 -> 1.3.2 ѹ줿սFMPˤȿ

ե졼ι
   cfg-20081016.tar.gz ˹

åȰ¸׽ս

----------------------------------------------------------------------

        TOPPERS/FMPͥ
        Release 0.A.0 
        ꡼ 2008-05-12

ѹΥꥹ

åȰ¸׽ս

----------------------------------------------------------------------
