Changeset 306


Ignore:
Timestamp:
Jun 27, 2017, 10:53:32 AM (7 years ago)
Author:
ertl-honda
Message:

3.1.0を反映

Location:
asp3_wo_tecs/trunk
Files:
202 added
6 deleted
112 edited

Legend:

Unmodified
Added
Removed
  • asp3_wo_tecs/trunk/MANIFEST

    r302 r306  
    22VERSION 3.0.0
    33
    4 configure
     4configure.rb
    55MANIFEST
    66README.txt
     
    1010doc/design.txt
    1111doc/extension.txt
     12doc/migration.txt
    1213doc/porting.txt
    1314doc/user.txt
     
    2627kernel/alarm.c
    2728kernel/alarm.h
    28 kernel/alarm.tf
     29kernel/alarm.trb
    2930kernel/allfunc.h
    3031kernel/check.h
    3132kernel/cyclic.c
    3233kernel/cyclic.h
    33 kernel/cyclic.tf
     34kernel/cyclic.trb
    3435kernel/dataqueue.c
    3536kernel/dataqueue.h
    36 kernel/dataqueue.tf
     37kernel/dataqueue.trb
    3738kernel/eventflag.c
    3839kernel/eventflag.h
    39 kernel/eventflag.tf
     40kernel/eventflag.trb
    4041kernel/exception.c
    4142kernel/exception.h
    42 kernel/exception.tf
    43 kernel/genoffset.tf
     43kernel/exception.trb
     44kernel/genoffset.trb
    4445kernel/interrupt.c
    4546kernel/interrupt.h
    46 kernel/interrupt.tf
    47 kernel/kernel.tf
    48 kernel/kernel_api.csv
    49 kernel/kernel_check.tf
    50 kernel/kernel_def.csv
     47kernel/interrupt.trb
     48kernel/kernel.trb
     49kernel/kernel_api.def
     50kernel/kernel_check.trb
    5151kernel/kernel_impl.h
    5252kernel/kernel_int.h
    5353kernel/kernel_rename.def
    5454kernel/kernel_rename.h
     55kernel/kernel_sym.def
    5556kernel/kernel_unrename.h
    5657kernel/mempfix.c
    5758kernel/mempfix.h
    58 kernel/mempfix.tf
     59kernel/mempfix.trb
    5960kernel/mutex.c
    6061kernel/mutex.h
    61 kernel/mutex.tf
     62kernel/mutex.trb
    6263kernel/pridataq.c
    6364kernel/pridataq.h
    64 kernel/pridataq.tf
     65kernel/pridataq.trb
    6566kernel/semaphore.c
    6667kernel/semaphore.h
    67 kernel/semaphore.tf
     68kernel/semaphore.trb
    6869kernel/startup.c
    6970kernel/sys_manage.c
    7071kernel/task.c
    7172kernel/task.h
    72 kernel/task.tf
     73kernel/task.trb
    7374kernel/task_manage.c
    7475kernel/task_refer.c
     
    8384kernel/wait.h
    8485
    85 syssvc/banner.c
    86 syssvc/banner.cfg
    87 syssvc/banner.h
    88 syssvc/histogram.c
     86tecs_kernel/init_tecs.c
     87tecs_kernel/kernel.cdl
     88tecs_kernel/tAlarmNotifier.c
     89tecs_kernel/tAlarmNotifier_inline.h
     90tecs_kernel/tCpuExceptionHandler.c
     91tecs_kernel/tCyclicNotifier.c
     92tecs_kernel/tCyclicNotifier_inline.h
     93tecs_kernel/tDataqueue_inline.h
     94tecs_kernel/tEventflag_inline.h
     95tecs_kernel/tFixedSizeMemoryPool_inline.h
     96tecs_kernel/tISR.c
     97tecs_kernel/tInitializeRoutine.c
     98tecs_kernel/tInterruptHandler.c
     99tecs_kernel/tInterruptRequest_inline.h
     100tecs_kernel/tKernel_inline.h
     101tecs_kernel/tMutex_inline.h
     102tecs_kernel/tPriorityDataqueue_inline.h
     103tecs_kernel/tSemaphore_inline.h
     104tecs_kernel/tTask.c
     105tecs_kernel/tTask_inline.h
     106tecs_kernel/tTerminateRoutine.c
     107tecs_kernel/tTimeEventHandler.c
     108tecs_kernel/tecs_kernel.h
     109
    89110syssvc/histogram.h
    90 syssvc/logtask.c
    91 syssvc/logtask.cfg
    92 syssvc/logtask.h
    93 syssvc/serial.c
    94 syssvc/serial.cfg
    95111syssvc/serial.h
    96 syssvc/syslog.c
    97 syssvc/syslog.cfg
    98112syssvc/syslog.h
    99 syssvc/test_svc.c
     113syssvc/tHistogram.c
     114syssvc/tHistogram.cdl
     115syssvc/tHistogram.h
     116syssvc/tHistogramAdapter.c
     117syssvc/tHistogramAdapter.cdl
     118syssvc/tBanner.cdl
     119syssvc/tBannerMain.c
     120syssvc/tLogTask.cdl
     121syssvc/tLogTaskMain.c
     122syssvc/tSerialAdapter.c
     123syssvc/tSerialAdapter.cdl
     124syssvc/tSerialPort.cdl
     125syssvc/tSerialPortMain.c
     126syssvc/tSysLog.c
     127syssvc/tSysLog.cdl
     128syssvc/tSysLogAdapter.c
     129syssvc/tSysLogAdapter.cdl
     130syssvc/tTestService.c
     131syssvc/tTestService.cdl
    100132syssvc/test_svc.h
    101133
     
    107139arch/gcc/tool_stddef.h
    108140
    109 arch/logtrace/trace_config.h
    110 arch/logtrace/trace_config.c
    111 arch/logtrace/trace_config.cfg
    112 arch/logtrace/trace_dump.c
     141arch/tracelog/trace_log.h
     142arch/tracelog/tTraceLog.c
     143arch/tracelog/tTraceLog.cdl
    113144
    114 utils/applyrename
    115 utils/genrename
    116 utils/gentest
    117 utils/makerelease
    118 utils/move-if-change
     145utils/applyrename.rb
     146utils/genrename.rb
     147utils/gentest.rb
     148utils/makerelease.rb
    119149
    120150sample/Makefile
    121151sample/sample1.c
     152sample/sample1.cdl
    122153sample/sample1.cfg
    123154sample/sample1.h
     155sample/tSample2.c
     156sample/tSample2.cdl
     157sample/tSample2.cfg
     158sample/tSample2.h
    124159
     160INCLUDE cfg/MANIFEST
    125161INCLUDE test/MANIFEST
    126162INCLUDE extension/MANIFEST
  • asp3_wo_tecs/trunk/README.txt

    r305 r306  
    11
    2         TOPPERS/ASP3 Kernel(Release 3.0.0)
     2        TOPPERS/ASP3 Kernel(Release 3.1)
    33                Toyohashi Open Platform for Embedded Real-Time Systems/
    44                Advanced Standard Profile Kernel
  • asp3_wo_tecs/trunk/arch/arm_gcc/MANIFEST

    r302 r306  
    11PACKAGE asp3_arch_arm_gcc
    2 VERSION 3.0.0
     2VERSION 3.1.0
    33
    44MANIFEST
    55
    66doc/arm_design.txt
     7doc/arm_user.txt
    78doc/gic_design.txt
    89
     
    1112common/arm.h
    1213common/arm_insn.h
    13 common/core.tf
    1414common/core_asm.inc
    1515common/core_cfg1_out.h
    16 common/core_check.tf
    17 common/core_def.csv
     16common/core_check.trb
    1817common/core_kernel.h
     18common/core_kernel.trb
    1919common/core_kernel_impl.c
    2020common/core_kernel_impl.h
    21 common/core_offset.tf
     21common/core_offset.trb
    2222common/core_rename.def
    2323common/core_rename.h
     
    2525common/core_stddef.h
    2626common/core_support.S
     27common/core_sym.def
     28common/core_syssvc.h
    2729common/core_test.h
    2830common/core_unrename.h
     
    3032common/gic_kernel_impl.h
    3133common/gic_support.S
     34common/pl310.c
     35common/pl310.h
    3236common/sp804.h
    3337common/start.S
    34 common/uart_pl011.c
     38common/tUartPL011.c
     39common/tUartPL011.cdl
    3540common/uart_pl011.h
    3641
    3742INCLUDE mpcore/MANIFEST
     43INCLUDE rza1/MANIFEST
     44
    3845INCLUDE ../../target/ct11mpcore_gcc/MANIFEST
     46INCLUDE ../../target/gr_peach_gcc/MANIFEST
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/Makefile.core

    r304 r306  
    22#               Makefileのコア依存部(ARM用)
    33#
    4 #  $Id: Makefile.core 484 2016-01-03 15:13:38Z ertl-hiro $
     4#  $Id: Makefile.core 572 2016-02-01 14:40:09Z ertl-hiro $
    55#
    66
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/arm.h

    r305 r306  
    5252 *  の責任を負わない.
    5353 *
    54  *  $Id: arm.h 523 2016-01-14 11:01:04Z ertl-hiro $
     54 *  $Id: arm.h 694 2016-03-23 13:17:48Z ertl-hiro $
    5555 */
    5656
     
    127127#define CP15_SCTLR_VECTOR               UINT_C(0x00002000)
    128128#define CP15_SCTLR_ICACHE               UINT_C(0x00001000)
     129#define CP15_SCTLR_BP                   UINT_C(0x00000800)
    129130#define CP15_SCTLR_DCACHE               UINT_C(0x00000004)
    130131#define CP15_SCTLR_MMU                  UINT_C(0x00000001)
     
    308309
    309310/*
     311 *  分岐予測をイネーブル
     312 */
     313Inline void
     314arm_enable_bp(void)
     315{
     316        uint32_t        reg;
     317
     318        CP15_READ_SCTLR(reg);
     319        reg |= CP15_SCTLR_BP;
     320        CP15_WRITE_SCTLR(reg);
     321}
     322
     323/*
     324 *  分岐予測をディスエーブル
     325 */
     326Inline void
     327arm_disable_bp(void)
     328{
     329        uint32_t        reg;
     330
     331        CP15_READ_SCTLR(reg);
     332        reg &= ~CP15_SCTLR_BP;
     333        CP15_WRITE_SCTLR(reg);
     334}
     335
     336/*
    310337 *  プロセッサ番号の取得
    311338 *
     
    413440
    414441/*
     442 *  分岐予測の無効化
     443 */
     444Inline void
     445arm_invalidate_bp(void)
     446{
     447        CP15_INVALIDATE_BP();
     448        data_sync_barrier();
     449        inst_sync_barrier();
     450}
     451
     452/*
    415453 *  TLBの無効化
    416454 */
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/arm_insn.h

    r304 r306  
    5252 *  の責任を負わない.
    5353 *
    54  *  $Id: arm_insn.h 547 2016-01-16 06:26:08Z ertl-hiro $
     54 *  $Id: arm_insn.h 694 2016-03-23 13:17:48Z ertl-hiro $
    5555 */
    5656
     
    245245#define CP15_INVALIDATE_ICACHE() \
    246246                                                                Asm("mcr p15, 0, %0, c7, c5, 0"::"r"(0))
     247
     248/* 分岐予測å
     249¨ä½“の無効化 */
     250#define CP15_INVALIDATE_BP()    Asm("mcr p15, 0, %0, c7, c5, 6"::"r"(0))
    247251
    248252/* データキャッシュå
     
    435439}
    436440
     441/*
     442 *  CP15のセキュリティ拡張レジスタ操作マクロ(ARMv7のみ)
     443 */
     444#if __TARGET_ARCH_ARM == 7
     445
     446/* ベクタベースアドレスレジスタ */
     447#define CP15_READ_VBAR(reg)             Asm("mrc p15, 0, %0, c12, c0, 0":"=r"(reg))
     448#define CP15_WRITE_VBAR(reg)    Asm("mcr p15, 0, %0, c12, c0, 0"::"r"(reg))
     449
     450#endif /* __TARGET_ARCH_ARM == 7 */
    437451#endif /* TOPPERS_ARM_INSN_H */
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_asm.inc

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2011-2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2011-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: core_asm.inc 349 2015-07-25 05:25:27Z ertl-hiro $
     52 *  $Id: core_asm.inc 714 2016-03-31 05:52:19Z ertl-hiro $
    5353 */
    5454
     
    8282#define BSS_END                 __end_bss
    8383
     84/*
     85 *  データメモリバリア
     86 */
     87        .macro  asm_data_memory_barrier reg1
     88#ifdef ASM_DATA_MEMORY_BARRIER
     89        ASM_DATA_MEMORY_BARRIER(reg1)
     90#elif __TARGET_ARCH_ARM <= 6
     91        mov             \reg1, #0
     92        mcr             p15, 0, \reg1, c7, c10, 5
     93#else /* __TARGET_ARCH_ARM <= 6 */
     94        dmb
     95#endif
     96        .endm
     97
     98/*
     99 *  データ同期バリア
     100 */
     101        .macro  asm_data_sync_barrier reg1
     102#ifdef ASM_DATA_SYNC_BARRIER
     103        ASM_DATA_SYNC_BARRIER(reg1)
     104#elif __TARGET_ARCH_ARM <= 6
     105        mov             \reg1, #0
     106        mcr             p15, 0, \reg1, c7, c10, 4
     107#else /* __TARGET_ARCH_ARM <= 6 */
     108        dsb
     109#endif
     110        .endm
     111
     112/*
     113 *  命令同期バリア
     114 */
     115        .macro  asm_inst_sync_barrier reg1
     116#ifdef ASM_INST_SYNC_BARRIER
     117        ASM_INST_SYNC_BARRIER(reg1)
     118#elif __TARGET_ARCH_ARM <= 6
     119        mov             \reg1, #0
     120        mcr             p15, 0, \reg1, c7, c5, 4
     121#else /* __TARGET_ARCH_ARM <= 6 */
     122        isb
     123#endif
     124        .endm
     125
    84126#endif /* TOPPERS_CORE_ASM_INC */
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_check.trb

    r305 r306  
    33#               ãƒ‘ス3の生成スクリプトのコア依存部(ARM用)
    44#
    5 #  $Id: core_check.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     5#  $Id: core_check.trb 730 2016-04-03 02:04:52Z ertl-hiro $
    66#
    77
    8 # 
     8#
    99#  ターゲット非依存部のインクルード
    10 # 
     10#
    1111IncludeTrb("kernel/kernel_check.trb")
    1212
     
    2727    error_wrong_id("E_PAR", params, :inthdr, :inhno, "not aligned")
    2828  end
    29   if $CHECK_FUNC_NONNULL == 1 && inthdr == 0
     29  if $CHECK_FUNC_NONNULL && inthdr == 0
    3030    error_wrong_id("E_PAR", params, :inthdr, :inhno, "null")
    3131  end
     
    4747    error_wrong_id("E_PAR", params, :exchdr, :excno, "not aligned")
    4848  end
    49   if $CHECK_FUNC_NONNULL == 1 && exchdr == 0
     49  if $CHECK_FUNC_NONNULL && exchdr == 0
    5050    error_wrong_id("E_PAR", params, :exchdr, :excno, "null")
    5151  end
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_kernel.h

    r302 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2004-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2004-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: core_kernel.h 454 2015-08-16 03:18:46Z ertl-hiro $
     55 *  $Id: core_kernel.h 718 2016-04-01 15:05:01Z ertl-hiro $
    5656 */
    5757
     
    109109        uint32_t        r3;
    110110        uint32_t        r4;
     111        uint32_t        r5;
    111112        uint32_t        r12;
    112113        uint32_t        lr;
     
    125126        uint32_t        r3;
    126127        uint32_t        r4;
     128        uint32_t        r5;
    127129        uint32_t        r12;
    128130        uint32_t        lr;
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_kernel.trb

    r304 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: core_kernel.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: core_kernel.trb 662 2016-02-27 02:33:51Z ertl-hiro $
    5656#
    5757
     
    9696#  割込み要求ライン設定テーブル
    9797#
    98 if $USE_INTCFG_TABLE == 1
     98if $USE_INTCFG_TABLE
    9999  $kernelCfgC.comment_header("Interrupt Configuration Table")
    100100
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_kernel_impl.h

    r304 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2006-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: core_kernel_impl.h 546 2016-01-16 06:00:09Z ertl-hiro $
     55 *  $Id: core_kernel_impl.h 664 2016-02-29 16:32:29Z ertl-hiro $
    5656 */
    5757
     
    7979#endif /* __thumb__ */
    8080#define CHECK_FUNC_NONNULL                      /* 関数の非NULLチェック */
    81 #define CHECK_STACK_ALIGN       4               /* スタック領域のアライン単位 */
     81#define CHECK_STACK_ALIGN       8               /* スタック領域のアライン単位 */
    8282#define CHECK_STACK_NONNULL                     /* スタック領域の非NULLチェック */
    8383#define CHECK_MPF_ALIGN         4               /* 固定長メモリプール領域のアライン単位 */
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_rename.def

    r302 r306  
    4242irc_end_exc
    4343
     44# pl310.c
     45pl310_initialize
     46pl310_disable
     47pl310_invalidate_all
     48pl310_clean_and_invalidate_all
     49
    4450# target_kernel_impl.c
    4551arm_tnum_memory_area
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_rename.h

    r304 r306  
    5858
    5959/*
     60 *  pl310.c
     61 */
     62#define pl310_initialize                        _kernel_pl310_initialize
     63#define pl310_disable                           _kernel_pl310_disable
     64#define pl310_invalidate_all            _kernel_pl310_invalidate_all
     65#define pl310_clean_and_invalidate_all  _kernel_pl310_clean_and_invalidate_all
     66
     67/*
    6068 *  target_kernel_impl.c
    6169 */
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_sil.h

    r302 r306  
    55 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    66 *                              Toyohashi Univ. of Technology, JAPAN
    7  *  Copyright (C) 2004-2014 by Embedded and Real-Time Systems Laboratory
     7 *  Copyright (C) 2004-2016 by Embedded and Real-Time Systems Laboratory
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
     
    5252 *  の責任を負わない.
    5353 *
    54  *  $Id: core_sil.h 352 2015-07-25 06:36:42Z ertl-hiro $
     54 *  $Id: core_sil.h 714 2016-03-31 05:52:19Z ertl-hiro $
    5555 */
    5656
     
    155155#define SIL_UNL_INT()   (TOPPERS_set_fiq_irq(TOPPERS_fiq_irq_mask))
    156156
    157 /*
    158  *  微少時間å¾
    159 ã¡
    160  */
    161 Inline void
    162 sil_dly_nse(ulong_t dlytim) throw()
    163 {
    164         register uint32_t r0 asm("r0") = (uint32_t) dlytim;
    165         Asm("bl _sil_dly_nse" : "=g"(r0) : "0"(r0) : "lr","cc");
    166 }
    167 
    168157#endif /* TOPPERS_MACRO_ONLY */
    169158#endif /* TOPPERS_CORE_SIL_H */
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_support.S

    r302 r306  
    66 *  Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2006-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: core_support.S 459 2015-08-29 13:03:42Z ertl-hiro $
     55 *  $Id: core_support.S 733 2016-04-03 09:10:54Z ertl-hiro $
    5656 */
    5757
     
    7272 *  例外ベクタ
    7373 */
    74         ASECTION(vector)
     74        ASECTION(.vector)
     75        AALIGN(5)
    7576        AGLOBAL(vector_table)
    7677ALABEL(vector_table)
     
    122123‹ã§å‘¼ã³å‡ºã•ã‚Œã‚‹ï¼Ž
    123124         */
    124         push    {lr}                                    /* 戻り番地を保存 */
     125        push    {r12,lr}                                /* 戻り番地を保存,r12はダミー */
    125126#ifdef TOPPERS_SUPPORT_OVRHDR
    126127        bl              ovrtimer_stop
     
    139140        bl              ovrtimer_start
    140141#endif /* TOPPERS_SUPPORT_OVRHDR */
    141         pop             {lr}                                    /* 戻り番地を復帰 */
     142        pop             {r12,lr}                                /* 戻り番地を復帰 */
    142143        bx              lr
    143144
     
    325326         */
    326327        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_IRQ_BIT)
    327         stmfd   sp!, {r0-r4,r12,lr,pc}          /* pcはスペース確保のため */
     328        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    328329
    329330        /*
     
    339340         */
    340341        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_IRQ_BIT)
    341         str             r2, [sp,#0x1c]                  /* 戻り番地をスタックに保存 */
     342        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    342343        push    {r1}                                    /* spsrをスタックに保存 */
    343344#else /* __TARGET_ARCH_ARM < 6 */
     
    354355         */
    355356        cps             #CPSR_SVC_MODE
    356         stmfd   sp!, {r0-r4,r12,lr}
     357        stmfd   sp!, {r0-r5,r12,lr}
    357358#endif /* __TARGET_ARCH_ARM < 6 */
     359
     360        /*
     361         *  スタックポインタの調整
     362         */
     363        and             r1, sp, #4
     364        sub             sp, sp, r1
     365        push    {r0,r1}                                 /* r0はスペース確保のため */
    358366
    359367        /*
     
    378386         *  非タスクコンテキスト用のスタックに切り換える.
    379387         */
    380         mov             r1, sp                                  /* この時点のスタックポインタをr1に */
     388        mov             r3, sp                                  /* この時点のスタックポインタをr3に */
    381389        ldr             r2, =istkpt                             /* 非タスクコンテキスト用のスタックに */
    382390        ldr             sp, [r2]
    383         push    {r1}                                    /* 切換え前のスタックポインタを保存 */
    384 
     391        push    {r0,r3}                                 /* 切換え前のスタックポインタを保存 */
     392                                                                        /* r0はスペース確保のため */
    385393ALABEL(irq_handler_1)
    386394        /*
     
    388396         */
    389397        bl              irc_begin_int
    390         cmp             r4, #TNUM_INHNO                 /* スプリアス割込みなら */
    391         bhs             irq_handler_2                   /*  irq_handler_2に分岐 */
    392 
     398#if TNUM_INHNO <= 256 || __TARGET_ARCH_ARM <= 6
     399        cmp             r4, #TNUM_INHNO                 /* TNUM_INHNOの値によってはエラーになる */
     400#else /* TNUM_INHNO <= 256 || __TARGET_ARCH_ARM <= 6 */
     401        movw    r3, #TNUM_INHNO
     402        cmp             r4, r3                 
     403#endif /* TNUM_INHNO <= 256 || __TARGET_ARCH_ARM <= 6 */
     404        bhs             irq_handler_2                   /* スプリアス割込みなら */
     405                                                                        /*  irq_handler_2に分岐 */
    393406        /*
    394407         *  CPUロック解除状æ
     
    447460ALABEL(irq_handler_2)
    448461        bl              irc_end_int
    449 #endif /* OMIT_IRQ_HANDLER */
    450462
    451463        /*
     
    462474         *  タスク用のスタックに戻す.
    463475         */
    464         pop             {r1}
    465         mov     sp, r1
     476        pop             {r0,r3}
     477        mov     sp, r3
    466478
    467479        /*
     
    469481要か判定する.
    470482         */
    471 ALABEL(ret_int_1)
    472483        ldr             r0, =p_runtsk                   /* p_runtsk → r0 */
    473484        ldr             r0, [r0]
     
    482493        tst             r0, r0                                  /* p_runtskがNULLならdispatcher_0へ */
    483494        beq             dispatcher_0
    484         stmfd   sp!, {r5-r11}                   /* 非スクラッチレジスタの保存 */
     495        stmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの保存 */
    485496        str             sp, [r0,#TCB_sp]                /* スタックポインタを保存 */
    486497        adr             r1, ret_int_r                   /* 実行再開番地を保存 */
     
    492503         *  コンテキストを復帰する.
    493504         */
    494         ldmfd   sp!, {r5-r11}                   /* 非スクラッチレジスタの復帰 */
     505        ldmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの復帰 */
    495506
    496507#ifdef TOPPERS_SUPPORT_OVRHDR
     
    516527#endif /* TOPPERS_SUPPORT_OVRHDR */
    517528ALABEL(irq_handler_3)
     529        pop             {r0,r1}                                 /* スタックポインタの調整 */
     530        add             sp, sp, r1
    518531#if __TARGET_ARCH_ARM < 6
    519532        ldmfd   sp!, {r0}                               /* 戻りå
    520533ˆã®cpsrをspsrに設定 */
    521534        msr             spsr_cxsf, r0
    522         ldmfd   sp!, {r0-r4,r12,lr,pc}^ /* コンテキストの復帰 */
     535        ldmfd   sp!, {r0-r5,r12,lr,pc}^ /* コンテキストの復帰 */
    523536                                                                        /* ^付きなので,spsr → cpsr */
    524537#else /* __TARGET_ARCH_ARM < 6 */
    525         ldmfd   sp!, {r0-r4,r12,lr}
     538        ldmfd   sp!, {r0-r5,r12,lr}
    526539        rfefd   sp!
    527540#endif /* __TARGET_ARCH_ARM < 6 */
     
    536549        b               irq_handler_3
    537550#endif /* TOPPERS_SUPPORT_OVRHDR */
     551#endif /* OMIT_IRQ_HANDLER */
    538552
    539553/*
     
    560574         */
    561575        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    562         stmfd   sp!, {r0-r4,r12,lr,pc}          /* pcはスペース確保のため */
     576        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    563577
    564578        /*
     
    573587         */
    574588        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    575         str             r2, [sp,#0x1c]                  /* 戻り番地をスタックに保存 */
     589        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    576590        push    {r1}                                    /* spsrをスタックに保存 */
    577591#else /* __TARGET_ARCH_ARM < 6 */
     
    587601         */
    588602        cps             #CPSR_SVC_MODE
    589         stmfd   sp!, {r0-r4,r12,lr}
     603        stmfd   sp!, {r0-r5,r12,lr}
    590604#endif /* __TARGET_ARCH_ARM < 6 */
    591605        mov             r4, #EXCNO_UNDEF
     
    609623         */
    610624        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    611         stmfd   sp!, {r0-r4,r12,lr,pc}          /* pcはスペース確保のため */
     625        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    612626
    613627        /*
     
    620634         *  戻り番地とspsrを保存する.
    621635         */
    622         str             r2, [sp,#0x1c]                  /* 戻り番地をスタックに保存 */
     636        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    623637        push    {r1}                                    /* spsrをスタックに保存 */
    624638#else /* __TARGET_ARCH_ARM < 6 */
     
    634648         */
    635649        cps             #CPSR_SVC_MODE                  /* 不要と思われる */
    636         stmfd   sp!, {r0-r4,r12,lr}
     650        stmfd   sp!, {r0-r5,r12,lr}
    637651#endif /* __TARGET_ARCH_ARM < 6 */
    638652        mov             r4, #EXCNO_SVC
     
    657671         */
    658672        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    659         stmfd   sp!, {r0-r4,r12,lr,pc}          /* pcはスペース確保のため */
     673        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    660674
    661675        /*
     
    670684         */
    671685        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    672         str             r2, [sp,#0x1c]                  /* 戻り番地をスタックに保存 */
     686        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    673687        push    {r1}                                    /* spsrをスタックに保存 */
    674688#else /* __TARGET_ARCH_ARM < 6 */
     
    684698         */
    685699        cps             #CPSR_SVC_MODE
    686         stmfd   sp!, {r0-r4,r12,lr}
     700        stmfd   sp!, {r0-r5,r12,lr}
    687701#endif /* __TARGET_ARCH_ARM < 6 */
    688702        mov             r4, #EXCNO_PABORT
     
    720734         */
    721735        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    722         stmfd   sp!, {r0-r4,r12,lr,pc}          /* pcはスペース確保のため */
     736        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    723737
    724738        /*
     
    733747         */
    734748        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    735         str             r2, [sp,#0x1c]                  /* 戻り番地をスタックに保存 */
     749        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    736750        push    {r1}                                    /* spsrをスタックに保存 */
    737751#else /* __TARGET_ARCH_ARM < 6 */
     
    747761         */
    748762        cps             #CPSR_SVC_MODE
    749         stmfd   sp!, {r0-r4,r12,lr}
     763        stmfd   sp!, {r0-r5,r12,lr}
    750764#endif /* __TARGET_ARCH_ARM < 6 */
    751765        mov             r4, #EXCNO_DABORT
     
    766780        ldr             sp, =istkpt
    767781        ldr             sp, [sp]
    768         stmfd   sp!, {r0-r4,r12,lr,pc}          /* pcはスペース確保のため */
     782        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    769783
    770784        /*
     
    779793         */
    780794        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    781         str             r2, [sp,#0x1c]                  /* 戻り番地をスタックに保存 */
     795        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    782796        push    {r1}                                    /* spsrをスタックに保存 */
    783797#else /* __TARGET_ARCH_ARM < 6 */
     
    786800         *  クポインタを初期化する.
    787801         */
    788         cpsid   if,#CPSR_SVC_MODE
     802        cpsid   if, #CPSR_SVC_MODE
    789803        ldr             sp, =istkpt
    790804        ldr             sp, [sp]
     
    802816         */
    803817        cps             #CPSR_SVC_MODE
    804         stmfd   sp!, {r0-r4,r12,lr}
     818        stmfd   sp!, {r0-r5,r12,lr}
    805819#endif /* __TARGET_ARCH_ARM < 6 */
    806820
     
    833847         */
    834848        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    835         stmfd   sp!, {r0-r4,r12,lr,pc}          /* pcはスペース確保のため */
     849        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    836850
    837851        /*
     
    846860         */
    847861        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    848         str             r2, [sp,#0x1c]                  /* 戻り番地をスタックに保存 */
     862        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    849863        push    {r1}                                    /* spsrをスタックに保存 */
    850864#else /* __TARGET_ARCH_ARM < 6 */
     
    860874         */
    861875        cps             #CPSR_SVC_MODE
    862         stmfd   sp!, {r0-r4,r12,lr}
     876        stmfd   sp!, {r0-r5,r12,lr}
    863877#endif /* __TARGET_ARCH_ARM < 6 */
    864878        mov             r4, #EXCNO_FIQ
     
    875889 * 【この時点のレジスタ状æ
    876890‹ã€‘
    877  *  r0:CPU例外ハンドラ番号
     891 *  r4:CPU例外ハンドラ番号
    878892 */
    879893ALABEL(exc_handler_1)
     
    889903        ldr             r3, [r2]
    890904        push    {r3}                                    /* 例外ネストカウントを保存 */
    891         mov             r12, sp                                 /* CPU例外のæƒ
     905        mov             r5, sp                                  /* CPU例外のæƒ
    892906報を記憶している領域の */
    893                                                                         /*                              å
    894 ˆé ­ç•ªåœ°ã‚’r12に保存 */
     907                                                                        /*                                å
     908ˆé ­ç•ªåœ°ã‚’r5に保存 */
     909        /*
     910         *  スタックポインタの調整
     911         */
     912        and             r1, sp, #4
     913        sub             sp, sp, r1
     914        push    {r0,r1}                                 /* r0はスペース確保のため */
     915
    895916        /*
    896917         *  カーネル管理外のCPU例外か判定する
     
    905926         *  のいずれかがセットされているなら,これ該当する.
    906927         */
    907         ldr             r1, [r12,#T_EXCINF_cpsr]        /* 例外フレームからcpsrを取得 */
     928        ldr             r1, [r5,#T_EXCINF_cpsr]         /* 例外フレームからcpsrを取得 */
    908929        ands    r1, r1, #CPSR_FIQ_IRQ_BIT
    909930        bne             nk_exc_handler_1                /* カーネル管理外のCPU例外の処理へ */
     
    915936         *  r3:excpt_nest_countの値
    916937         *  r4:CPU例外ハンドラ番号
    917          *  r12:CPU例外のæƒ
     938         *  r5:CPU例外のæƒ
    918939報を記憶している領域のå
    919940ˆé ­ç•ªåœ°
     
    932953         *  オーバランタイマを停止する.
    933954         */
    934         push    {r12}
    935955        bl              ovrtimer_stop
    936         pop             {r12}
    937956#endif /* TOPPERS_SUPPORT_OVRHDR */
    938957
     
    943962        ldr             r2, =istkpt                             /* 非タスクコンテキスト用のスタックに */
    944963        ldr             sp, [r2]
    945         push    {r3}                                    /* 切換え前のスタックポインタを保存 */
    946 
     964        push    {r0,r3}                                 /* 切換え前のスタックポインタを保存 */
     965                                                                        /* r0はスペース確保のため */
    947966ALABEL(exc_handler_2)
    948967        /*
     
    950969‹ã€‘
    951970         *  r4:CPU例外ハンドラ番号
    952          *  r12:CPU例外のæƒ
     971         *  r5:CPU例外のæƒ
    953972報を記憶している領域のå
    954973ˆé ­ç•ªåœ°
     
    9821001         */
    9831002#ifdef LOG_EXC_ENTER
    984         push    {r12}
    9851003        mov             r0, r4                                  /* CPU例外番号をパラメータに渡す */
    9861004        bl              log_exc_enter
    987         pop             {r12}
    9881005#endif /* LOG_EXC_ENTER */
    9891006
     
    9931010        ldr             r2, =exc_table                  /* CPU例外ハンドラテーブルの読込み */
    9941011        ldr             r3, [r2,r4,lsl #2]              /* CPU例外ハンドラの番地 → r3 */
    995         mov             r0, r12                                 /* CPU例外のæƒ
     1012        mov             r0, r5                                  /* CPU例外のæƒ
    9961013報を記憶している領域の */
    9971014                                                                        /*              å
     
    10351052        ldr             r3, [r2]
    10361053        subs    r3, r3, #1
    1037         str             r3, [r2]
     1054        str             r3, [r2]                                /* 戻りå
     1055ˆãŒéžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãªã‚‰ */
     1056        bne             exc_handler_3                   /*                              exc_handler_3に分岐 */
    10381057
    10391058        /*
    10401059         *  タスク用のスタックに戻す.
    10411060         */
    1042         popeq   {r1}                                    /* 戻りå
    1043 ˆãŒã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãªã‚‰ */
    1044         moveq   sp, r1                                  /*               ã‚¿ã‚¹ã‚¯ç”¨ã®ã‚¹ã‚¿ãƒƒã‚¯ã«æˆ»ã™ */
     1061        pop             {r0,r3}
     1062        mov             sp, r3
     1063
     1064        /*
     1065         *  ディスパッチがå¿
     1066要か判定する.
     1067         */
     1068        ldr             r0, =p_runtsk                   /* p_runtsk → r0 */
     1069        ldr             r0, [r0]
     1070        ldr             r1, =p_schedtsk                 /* p_schedtsk → r1 */
     1071        ldr             r1, [r1]
     1072        teq             r0, r1                                  /* p_runtskとp_schedtskが同じなら */
     1073        beq             exc_handler_4                   /*                                exc_handler_4へ */
     1074
     1075        /*
     1076         *  コンテキストを保存する.
     1077         */
     1078        tst             r0, r0                                  /* p_runtskがNULLならdispatcher_0へ */
     1079        beq             dispatcher_0
     1080        stmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの保存 */
     1081        str             sp, [r0,#TCB_sp]                /* スタックポインタを保存 */
     1082        adr             r1, ret_exc_r                   /* 実行再開番地を保存 */
     1083        str             r1, [r0,#TCB_pc]
     1084        b               dispatcher                              /* r0にはp_runtskが格納されている */
     1085
     1086ALABEL(ret_exc_r)
     1087        /*
     1088         *  コンテキストを復帰する.
     1089         */
     1090        ldmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの復帰 */
     1091
     1092#ifdef TOPPERS_SUPPORT_OVRHDR
     1093        /*
     1094         *  オーバランタイマを動作開始する.
     1095         */
     1096        bl              ovrtimer_start
     1097#endif /* TOPPERS_SUPPORT_OVRHDR */
     1098
     1099        /*
     1100         *  CPU例外処理からのリターン
     1101         *
     1102         *  CPU例外処理からのリターンにより,CPUロック解除状æ
     1103‹ã«é·ç§»ã™ã‚‹ã‚ˆ
     1104         *  うにするå¿
     1105要があるが,ARMはCPSRのビットによってCPUロック状æ
     1106‹ã‚’
     1107         *  表しているため,CPSRをå
     1108ƒã«æˆ»ã—てリターンすればよい.
     1109         */
     1110#ifndef TOPPERS_SUPPORT_OVRHDR
     1111ALABEL(exc_handler_4)
     1112#endif /* TOPPERS_SUPPORT_OVRHDR */
     1113ALABEL(exc_handler_3)
     1114        pop             {r0,r1}                                 /* スタックポインタの調整 */
     1115        add             sp, sp, r1
    10451116        add             sp, sp, #8                              /* スタック上のæƒ
    10461117報を捨てる */
    1047         beq             ret_int_1                               /* ret_int_1に分岐 */
    1048 
    1049         /*
    1050          *  CPU例外処理からのリターン(irq_handler_3と同じ処理å†
    1051 å®¹ï¼‰
    1052          */
    10531118#if __TARGET_ARCH_ARM < 6
    10541119        ldmfd   sp!, {r0}                               /* 戻りå
    10551120ˆã®cpsrをspsrに設定 */
    10561121        msr             spsr_cxsf, r0
    1057         ldmfd   sp!, {r0-r4,r12,lr,pc}^ /* コンテキストの復帰 */
     1122        ldmfd   sp!, {r0-r5,r12,lr,pc}^ /* コンテキストの復帰 */
    10581123                                                                        /* ^付きなので,spsr → cpsr */
    10591124#else /* __TARGET_ARCH_ARM < 6 */
    1060         ldmfd   sp!, {r0-r4,r12,lr}
     1125        ldmfd   sp!, {r0-r5,r12,lr}
    10611126        rfefd   sp!
    10621127#endif /* __TARGET_ARCH_ARM < 6 */
     1128
     1129#ifdef TOPPERS_SUPPORT_OVRHDR
     1130ALABEL(exc_handler_4)
     1131        /*
     1132         *  オーバランタイマを動作開始する.
     1133         */
     1134        tst             r0, r0                                  /* p_runtskがNULLでない場合 */
     1135        blne    ovrtimer_start
     1136        b               exc_handler_3
     1137#endif /* TOPPERS_SUPPORT_OVRHDR */
    10631138
    10641139/*
     
    10741149         *  r3:excpt_nest_countの値
    10751150         *  r4:CPU例外ハンドラ番号
    1076          *  r12:CPU例外のæƒ
     1151         *  r5:CPU例外のæƒ
    10771152報を記憶している領域のå
    10781153ˆé ­ç•ªåœ°
     
    10931168        ldr             r2, =istkpt                             /* 非タスクコンテキスト用のスタックに */
    10941169        ldr             sp, [r2]
    1095         push    {r3}                                    /* 切換え前のスタックポインタを保存 */
    1096 
     1170        push    {r0,r3}                                 /* 切換え前のスタックポインタを保存 */
     1171                                                                        /* r0はスペース確保のため */
    10971172ALABEL(nk_exc_handler_2)
    10981173        /*
     
    11091184        ldr             r2, =exc_table                  /* CPU例外ハンドラテーブルの読込み */
    11101185        ldr             r3, [r2,r4,lsl #2]              /* CPU例外ハンドラの番地 → r3 */
    1111         mov             r0, r12                                 /* CPU例外のæƒ
     1186        mov             r0, r5                                  /* CPU例外のæƒ
    11121187報を記憶している領域の */
    11131188                                                                        /*              å
     
    11231198        ldr             r3, [r2]
    11241199        subs    r3, r3, #1
    1125         str             r3, [r2]
     1200        str             r3, [r2]                                /* 戻りå
     1201ˆãŒéžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãªã‚‰ */
     1202        bne             exc_handler_3                   /*                              exc_handler_3に分岐 */
    11261203
    11271204        /*
    11281205         *  タスク用のスタックに戻す.
    11291206         */
    1130         popeq   {r1}                                    /* 戻りå
    1131 ˆãŒã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãªã‚‰ */
    1132         moveq   sp, r1                                  /*               ã‚¿ã‚¹ã‚¯ç”¨ã®ã‚¹ã‚¿ãƒƒã‚¯ã«æˆ»ã™ */
    1133         add             sp, sp, #8                              /* スタック上のæƒ
    1134 å ±ã‚’捨てる */
    1135 
    1136         /*
    1137          *  CPU例外処理からのリターン(irq_handler_3と同じ処理å†
    1138 å®¹ï¼‰
    1139          */
    1140 #if __TARGET_ARCH_ARM < 6
    1141         ldmfd   sp!, {r0}                               /* 戻りå
    1142 ˆã®cpsrをspsrに設定 */
    1143         msr             spsr_cxsf, r0
    1144         ldmfd   sp!, {r0-r4,r12,lr,pc}^ /* コンテキストの復帰 */
    1145                                                                         /* ^付きなので,spsr → cpsr */
    1146 #else /* __TARGET_ARCH_ARM < 6 */
    1147         ldmfd   sp!, {r0-r4,r12,lr}
    1148         rfefd   sp!
    1149 #endif /* __TARGET_ARCH_ARM < 6 */
    1150 
    1151 /*
    1152  *  微少時間å¾
    1153 ã¡
    1154  */
    1155         ATEXT
    1156         AALIGN(2)
    1157         AGLOBAL(_sil_dly_nse)
    1158 ALABEL(_sil_dly_nse)
    1159         subs    r0, r0, #SIL_DLY_TIM1
    1160         bxls    lr
    1161 ALABEL(_sil_dly_nse1)
    1162         subs    r0, r0, #SIL_DLY_TIM2
    1163         bhi             _sil_dly_nse1
    1164         bx              lr
     1207        pop             {r0,r3}
     1208        mov             sp, r3
     1209        b               exc_handler_3
    11651210
    11661211/*
     
    11861231
    11871232#endif /* __thumb__ */
     1233
     1234/*
     1235 *  微少時間å¾
     1236ち
     1237 *
     1238 *  キャッシュラインのどの場所にあるかのよって実行時間が変わるため,大
     1239 *  きめの単位でアラインしている.
     1240 */
     1241        ATEXT
     1242        AALIGN(8)
     1243        AGLOBAL(sil_dly_nse)
     1244ALABEL(sil_dly_nse)
     1245        mov             r1, #0
     1246        mcr             p15, 0, r1, c7, c5, 6           /* 分岐予測å
     1247¨ä½“の無効化 */
     1248        asm_inst_sync_barrier r3
     1249        subs    r0, r0, #SIL_DLY_TIM1
     1250        bxls    lr
     1251ALABEL(sil_dly_nse1)
     1252        mcr             p15, 0, r1, c7, c5, 6           /* 分岐予測å
     1253¨ä½“の無効化 */
     1254        asm_inst_sync_barrier r3
     1255        subs    r0, r0, #SIL_DLY_TIM2
     1256        bhi             sil_dly_nse1
     1257        bx              lr
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_sym.def

    r304 r306  
    11TARGET_ARCH_ARM,__TARGET_ARCH_ARM
    2 USE_INTCFG_TABLE,1,,defined(USE_INTCFG_TABLE)
     2USE_INTCFG_TABLE,true,bool,defined(USE_INTCFG_TABLE)
    33sizeof_TCB,sizeof(TCB)
    44offsetof_TCB_p_tinib,"offsetof(TCB,p_tinib)"
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_unrename.h

    r304 r306  
    5959
    6060/*
     61 *  pl310.c
     62 */
     63#undef pl310_initialize
     64#undef pl310_disable
     65#undef pl310_invalidate_all
     66#undef pl310_clean_and_invalidate_all
     67
     68/*
    6169 *  target_kernel_impl.c
    6270 */
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/gic_kernel_impl.c

    r305 r306  
    11/*
    2  *  TOPPERS/ASP Kernel
    3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
    4  *      Advanced Standard Profile Kernel
     2 *  TOPPERS Software
     3 *      Toyohashi Open Platform for Embedded Real-Time Systems
    54 *
    65 *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
     
    5150 *  の責任を負わない.
    5251 *
    53  *  $Id: gic_kernel_impl.c 522 2016-01-14 06:56:53Z ertl-hiro $
     52 *  $Id: gic_kernel_impl.c 714 2016-03-31 05:52:19Z ertl-hiro $
    5453 */
    5554
     
    138137         *  すべての割込みをグループ1(IRQ)に設定
    139138         */
    140         for (i = 0; i < GIC_TNUM_INTNO / 32; i++) {
     139        for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) {
    141140                sil_wrw_mem(GICD_IGROUPR(i), 0xffffffffU);
    142141        }
     
    146145         *  すべての割込みを禁止
    147146         */
    148         for (i = 0; i < GIC_TNUM_INTNO / 32; i++) {
     147        for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) {
    149148                sil_wrw_mem(GICD_ICENABLER(i), 0xffffffffU);
    150149        }
     
    153152         *  すべての割込みペンディングをクリア
    154153         */
    155         for (i = 0; i < GIC_TNUM_INTNO / 32; i++) {
     154        for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) {
    156155                sil_wrw_mem(GICD_ICPENDR(i), 0xffffffffU);
    157156        }
     
    161160ˆåº¦ã«è¨­å®š
    162161         */
    163         for (i = 0; i < GIC_TNUM_INTNO / 4; i++){
     162        for (i = 0; i < (GIC_TNUM_INTNO + 3) / 4; i++){
    164163                sil_wrw_mem(GICD_IPRIORITYR(i), 0xffffffffU);
    165164        }
     
    169168±æœ‰ãƒšãƒªãƒ•ã‚§ãƒ©ãƒ«å‰²è¾¼ã¿ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’プロセッサ0に設定
    170169         */
    171         for (i = GIC_INTNO_SPI0 / 4; i < GIC_TNUM_INTNO / 4; i++) {
     170        for (i = GIC_INTNO_SPI0 / 4; i < (GIC_TNUM_INTNO + 3) / 4; i++) {
    172171                sil_wrw_mem(GICD_ITARGETSR(i), 0x01010101U);
    173172        }
     
    176175         *  すべてのペリフェラル割込みをレベルトリガに設定
    177176         */
    178         for (i = GIC_INTNO_PPI0 / 16; i < GIC_TNUM_INTNO / 16; i++) {
     177        for (i = GIC_INTNO_PPI0 / 16; i < (GIC_TNUM_INTNO + 15) / 16; i++) {
    179178#ifdef GIC_ARM11MPCORE
    180179                sil_wrw_mem(GICD_ICFGR(i), 0x55555555U);
     
    198197        sil_wrw_mem(GICD_CTLR, GICD_CTLR_DISABLE);
    199198}
     199
     200#ifndef OMIT_GIC_INITIALIZE_INTERRUPT
    200201
    201202/*
     
    273274        }
    274275}
     276
     277#endif /* OMIT_GIC_INITIALIZE_INTERRUPT */
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/gic_kernel_impl.h

    r305 r306  
    11/*
    2  *  TOPPERS/ASP Kernel
    3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
    4  *      Advanced Standard Profile Kernel
     2 *  TOPPERS Software
     3 *      Toyohashi Open Platform for Embedded Real-Time Systems
    54 *
    65 *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
     
    5150 *  の責任を負わない.
    5251 *
    53  *  $Id: gic_kernel_impl.h 535 2016-01-16 00:42:29Z ertl-hiro $
     52 *  $Id: gic_kernel_impl.h 714 2016-03-31 05:52:19Z ertl-hiro $
    5453 */
    5554
     
    176175#define GICD_TYPER                      GIC_REG(GICD_BASE, 0x004)
    177176#define GICD_IIDR                       GIC_REG(GICD_BASE, 0x008)
    178 #define GICD_IGROUPR(n)         GIC_REG(GICD_BASE, 0x080 + n * 4)
    179 #define GICD_ISENABLER(n)       GIC_REG(GICD_BASE, 0x100 + n * 4)
    180 #define GICD_ICENABLER(n)       GIC_REG(GICD_BASE, 0x180 + n * 4)
    181 #define GICD_ISPENDR(n)         GIC_REG(GICD_BASE, 0x200 + n * 4)
    182 #define GICD_ICPENDR(n)         GIC_REG(GICD_BASE, 0x280 + n * 4)
    183 #define GICD_ISACTIVER(n)       GIC_REG(GICD_BASE, 0x300 + n * 4)
    184 #define GICD_ICACTIVER(n)       GIC_REG(GICD_BASE, 0x380 + n * 4)
    185 #define GICD_IPRIORITYR(n)      GIC_REG(GICD_BASE, 0x400 + n * 4)
    186 #define GICD_ITARGETSR(n)       GIC_REG(GICD_BASE, 0x800 + n * 4)
    187 #define GICD_ICFGR(n)           GIC_REG(GICD_BASE, 0xc00 + n * 4)
    188 #define GICD_NSCAR(n)           GIC_REG(GICD_BASE, 0xe00 + n * 4)
     177#define GICD_IGROUPR(n)         GIC_REG(GICD_BASE, 0x080 + (n) * 4)
     178#define GICD_ISENABLER(n)       GIC_REG(GICD_BASE, 0x100 + (n) * 4)
     179#define GICD_ICENABLER(n)       GIC_REG(GICD_BASE, 0x180 + (n) * 4)
     180#define GICD_ISPENDR(n)         GIC_REG(GICD_BASE, 0x200 + (n) * 4)
     181#define GICD_ICPENDR(n)         GIC_REG(GICD_BASE, 0x280 + (n) * 4)
     182#define GICD_ISACTIVER(n)       GIC_REG(GICD_BASE, 0x300 + (n) * 4)
     183#define GICD_ICACTIVER(n)       GIC_REG(GICD_BASE, 0x380 + (n) * 4)
     184#define GICD_IPRIORITYR(n)      GIC_REG(GICD_BASE, 0x400 + (n) * 4)
     185#define GICD_ITARGETSR(n)       GIC_REG(GICD_BASE, 0x800 + (n) * 4)
     186#define GICD_ICFGR(n)           GIC_REG(GICD_BASE, 0xc00 + (n) * 4)
     187#define GICD_NSCAR(n)           GIC_REG(GICD_BASE, 0xe00 + (n) * 4)
    189188#define GICD_SGIR                       GIC_REG(GICD_BASE, 0xf00)
    190 #define GICD_CPENDSGIR(n)       GIC_REG(GICD_BASE, 0xf10 + n * 4)
    191 #define GICD_SPENDSGIR(n)       GIC_REG(GICD_BASE, 0xf20 + n * 4)
     189#define GICD_CPENDSGIR(n)       GIC_REG(GICD_BASE, 0xf10 + (n) * 4)
     190#define GICD_SPENDSGIR(n)       GIC_REG(GICD_BASE, 0xf20 + (n) * 4)
    192191
    193192/*
     
    200199 *  割込みコンフィギュレーションレジスタ(GICD_ICFGRn)の設定値
    201200 *
    202  *  第1ビットは,ARM11 MPCoreでは割込みの通知å
    203 ˆãƒ—ロセッサを設定するため
    204  *  に使用されているが,GICv1およびGICv2では予約ビットとなっている.
     201 *  第1ビットは,ARM11 MPCoreおよびGICの早い時期の実è£
     202では割込みの通知
     203 *  å
     204ˆãƒ—ロセッサを設定するために使用されている.
    205205 */
    206206#define GICD_ICFGRn_LEVEL       UINT_C(0x00)
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/gic_support.S

    r305 r306  
    11/*
    2  *  TOPPERS/ASP Kernel
    3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
    4  *      Advanced Standard Profile Kernel
     2 *  TOPPERS Software
     3 *      Toyohashi Open Platform for Embedded Real-Time Systems
    54 *
    65 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
     
    5352 *  の責任を負わない.
    5453 *
    55  *  $Id: gic_support.S 522 2016-01-14 06:56:53Z ertl-hiro $
     54 *  $Id: gic_support.S 718 2016-04-01 15:05:01Z ertl-hiro $
    5655 */
    5756
     
    7978報(割込み発生前の割込み
    8079 *  優å
    81 ˆåº¦ãƒžã‚¹ã‚¯ï¼‰ã‚’,スタックに保存する.
     80ˆåº¦ãƒžã‚¹ã‚¯ï¼‰ã‚’,スタックのå
     81ˆé ­ã«ä¿å­˜ã™ã‚‹ï¼Ž
    8282 */
    8383        ATEXT
     
    104104        str             r0, [r1]                        /* 新しい割込み優å
    105105ˆåº¦ãƒžã‚¹ã‚¯ã‚’セットする */
    106 //      DATA_SYNC_BARRIER                       /* 割込み優å
     106        asm_data_sync_barrier r0        /* 割込み優å
    107107ˆåº¦ãƒžã‚¹ã‚¯ãŒã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã®ã‚’å¾
    108108つ */
    109 #if __TARGET_ARCH_ARM == 6
    110         mov             r0, #0
    111         mcr             p15, 0, r0, c7, c10, 4
    112 #elif __TARGET_ARCH_ARM == 7
    113         dsb
    114 #endif /* __TARGET_ARCH_ARM == 7 */
    115         push    {r2}                            /* irc_end_intで用いるæƒ
     109        str             r2, [sp]                        /* irc_end_intで用いるæƒ
    116110報を保存 */
    117111
     
    141135ƒã«æˆ»ã™ï¼Ž
    142136         */
    143         pop             {r2}                            /* irc_begin_intで保存したæƒ
     137        ldr             r2, [sp]                        /* irc_begin_intで保存したæƒ
    144138報を復帰 */
    145139        ldr             r1, =GICC_PMR           /* 割込み優å
     
    178172報(CPU例外発生前の割込み優å
    179173ˆåº¦ãƒžã‚¹ã‚¯ï¼‰ã‚’,スタッ
    180  *      クに保存する.
     174 *      クのå
     175ˆé ­ã«ä¿å­˜ã™ã‚‹ï¼Ž
    181176 */
    182177        ATEXT
     
    191186ˆåº¦ã‚’取得 */
    192187        ldr             r2, [r1]
    193         push    {r2}                            /* irc_end_excで用いるæƒ
     188        str             r2, [sp]                        /* irc_end_excで用いるæƒ
    194189報を保存 */
    195190        bx              lr
     
    207202ƒã«æˆ»ã™ï¼Ž
    208203         */
    209         pop             {r2}                            /* irc_begin_excで保存したæƒ
     204        ldr             r2, [sp]                        /* irc_begin_excで保存したæƒ
    210205報を復帰 */
    211206        ldr             r1, =GICC_PMR           /* 割込み優å
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/uart_pl011.h

    r302 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2006-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: uart_pl011.h 359 2015-07-26 10:27:20Z ertl-hiro $
     55 *  $Id: uart_pl011.h 509 2016-01-12 06:06:14Z ertl-hiro $
    5656 */
    5757
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/arm_design.txt

    r302 r306  
    33                ARMコア依存部 設計メモ
    44
    5                 対応バージョン: Release 3.B.0
    6                 最終更新: 2015å¹´8月18日
    7 
     5                対応バージョン: Release 3.1.0
     6                最終更新: 2016å¹´5月14日
     7
     8----------------------------------------------------------------------
     9 TOPPERS/ASP Kernel
     10     Toyohashi Open Platform for Embedded Real-Time Systems/
     11     Advanced Standard Profile Kernel
     12
     13 Copyright (C) 2014-2016 by Embedded and Real-Time Systems Laboratory
     14             Graduate School of Information Science, Nagoya Univ., JAPAN
     15 
     16 ä¸Šè¨˜è‘—作権è€
     17は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     18 ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
     19 å¤‰ãƒ»å†é
     20å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
     21 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     22     æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
     23     ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
     24 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     25     ç”¨ã§ãã‚‹å½¢ã§å†é
     26å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
     27å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
     28     è€
     29マニュアルなど)に,上記の著作権表示,この利用条件および下記
     30     ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
     31 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     32     ç”¨ã§ããªã„形で再é
     33å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
     34     ã¨ï¼Ž
     35   (a) 再é
     36å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
     37マニュアルなど)に,上記の著
     38       ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
     39   (b) 再é
     40å¸ƒã®å½¢æ
     41‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
     42       å ±å‘Šã™ã‚‹ã“と.
     43 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     44     å®³ã‹ã‚‰ã‚‚,上記著作権è€
     45およびTOPPERSプロジェクトをå
     46è²¬ã™ã‚‹ã“と.
     47     ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
     48     ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
     49およびTOPPERSプロジェクトを
     50     å
     51è²¬ã™ã‚‹ã“と.
     52 
     53 æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
     54お
     55 ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     56 ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
     57 ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
     58 ã®è²¬ä»»ã‚’負わない.
     59 
     60 $Id: arm_design.txt 751 2016-05-14 15:03:06Z ertl-hiro $
    861----------------------------------------------------------------------
    962
     
    55108ARMv7-A,ARMv7-Rに準拠したプロセッサコアを持つターゲットシステム(チッ
    56109プ)にå
    57 ±é€šã«ä½¿ç”¨ã§ãã‚‹éƒ¨åˆ†ã§ã‚る.
     110±é€šã«ä½¿ç”¨ã§ãã‚‹éƒ¨åˆ†ã§ã‚る.ただし,これに該当するすべてのARMコア
     111に対応できているわけではない.新しいチップにポーティングする際には,コ
     112ア依存部に何らかの修正がå¿
     113要になることも多いと思われる.
    58114
    59115ARMコアのプロセッサコア略称を"arm"とする.GNU開発環境向けのARMコア依存
     
    284340ˆã®cpsrをspsrに復帰 */
    285341        msr             spsr_cxsf, r0
    286         ldmfd   sp!, {r0-r4,r12,lr,pc}^         /* 例外処理からの復帰 */
    287 ----------------------------------------
    288 
    289 ã“こで,スクラッチレジスタに加えてr4も復帰しているのは,例外の出å
    290 ¥å£å‡¦
    291 ç†ã§ã‚¹ã‚¯ãƒ©ãƒƒãƒãƒ¬ã‚¸ã‚¹ã‚¿ä»¥å¤–に使えるレジスタとして,r4を確保するためであ
    292 ã‚‹ï¼Ž
     342        ldmfd   sp!, {r0-r5,r12,lr,pc}^         /* 例外処理からの復帰 */
     343----------------------------------------
     344
     345ここで,スクラッチレジスタに加えてr4とr5も復帰しているのは,例外の出å
     346¥
     347口処理でスクラッチレジスタ以外に使えるレジスタとして,r4とr5を確保する
     348ためである(実際には,r4だけが使えれば十分であるが,スタックポインタを
     3498バイト境界にアラインするためにr5も保存/復帰している).
    293350
    294351この出口を実行する時点で,スタックは次のようになっているå¿
     
    310367        |       r4       |
    311368        +----------------+ <- sp+0x18
     369        |       r5       |
     370        +----------------+ <- sp+0x1c
    312371        |       r12      |
    313         +----------------+ <- sp+0x1c
     372        +----------------+ <- sp+0x20
    314373        |       lr       |
    315         +----------------+ <- sp+0x20
     374        +----------------+ <- sp+0x24
    316375        |    戻り番地    |
    317         +----------------+
     376        +----------------+ <- sp+0x28
    318377
    319378これに対応する例外のå
     
    325384         */
    326385        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_IRQ_BIT)
    327         stmfd   sp!, {r0-r4,r12,lr,pc}          /* pcはスペース確保のため */  (*1)
     386        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */  (*1)
    328387
    329388        /*
     
    339398         */
    340399        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_IRQ_BIT)
    341         str             r2, [sp,#0x1c]                  /* 戻り番地をスタックに保存 */              (*2)
     400        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */              (*2)
    342401        push    {r1}                                    /* spsrをスタックに保存 */
    343402----------------------------------------
     
    346405り,その時点で保存するpcの値は使わない.(*2)で,確保したスペースに戻り
    347406番地を格納する.格納å
    348 ˆã‚’[sp,#0x1c]とするのは,この時点ではspは上の図の
    349 ï¼ˆsp+0x04)を指しており,戻り番地は(sp+0x20)に格納したいためである.
     407ˆã‚’[sp,#0x20]とするのは,この時点ではspは上の図の
     408(sp+0x04)を指しており,戻り番地は(sp+0x24)に格納したいためである.
    350409
    351410例外を受け付けるとIビットをセットするため,例外のå
     
    393452
    394453----------------------------------------
    395         ldmfd   sp!, {r0-r4,r12,lr}
     454        ldmfd   sp!, {r0-r5,r12,lr}
    396455        rfefd   sp!
    397456----------------------------------------
    398457
    399 ã“こで,スクラッチレジスタに加えてr4も復帰しているのは,例外の出å
    400 ¥å£å‡¦
    401 ç†ã§ã‚¹ã‚¯ãƒ©ãƒƒãƒãƒ¬ã‚¸ã‚¹ã‚¿ä»¥å¤–に使えるレジスタとして,r4を確保するためであ
    402 ã‚‹ï¼Ž
     458ここで,スクラッチレジスタに加えてr4とr5も復帰しているのは,例外の出å
     459¥
     460口処理でスクラッチレジスタ以外に使えるレジスタとして,r4とr5を確保する
     461ためである(実際には,r4だけが使えれば十分であるが,スタックポインタを
     4628バイト境界にアラインするためにr5も保存/復帰している).
    403463
    404464この出口を実行する時点で,スタックは次のようになっているå¿
     
    418478        |       r4       |
    419479        +----------------+ <- sp+0x14
     480        |       r5       |
     481        +----------------+ <- sp+0x18
    420482        |       r12      |
    421         +----------------+ <- sp+0x18
     483        +----------------+ <- sp+0x1c
    422484        |       lr       |
    423         +----------------+ <- sp+0x1c
     485        +----------------+ <- sp+0x20
    424486        |    戻り番地    |
    425         +----------------+ <- sp+0x20
     487        +----------------+ <- sp+0x24
    426488        |      cpsr      |
    427         +----------------+
     489        +----------------+ <- sp+0x28
    428490
    429491これに対応する例外のå
     
    443505         */
    444506        cps             #CPSR_SVC_MODE
    445         stmfd   sp!, {r0-r4,r12,lr}
     507        stmfd   sp!, {r0-r5,r12,lr}
    446508----------------------------------------
    447509
     
    585647中でå¿
    586648要なæƒ
    587 å ±ï¼ˆä¾‹ãˆã°ï¼Œå‰²è¾¼ã¿ç•ªå·ï¼‰ã¯ï¼Œirc_begin_intでスタック上に保存
    588 ã—ておくå¿
    589 è¦ãŒã‚る.これを可能にするために,irc_begin_intが呼び出された
    590 ã‚‰ï¼Œirc_end_intもå¿
    591 ãšå‘¼ã³å‡ºã•ã‚Œã‚‹ã‚ˆã†ã«ã—ておく.スプリアス割込みの場合
    592 ã«ã‚‚,irc_end_intを呼び出すようにしている.
    593 
     649報(例えば,割込み番号)は,irc_begin_intでスタックのå
     650ˆé ­ã«
     651保存しておくå¿
     652要がある.これに用いるために,スタックのå
     653ˆé ­ã«1ワードの空
     654き領域を設けている.
     655
     656irc_end_intでå¿
     657要なæƒ
     658報が1ワードで不足する場合には,irc_begin_intでスタッ
     659クに積み,irc_end_intでスタックから取り出す.これを可能にするために,
     660irc_begin_intが呼び出されたら,irc_end_intもå¿
     661ず呼び出されるようにして
     662おく.スプリアス割込みの場合にも,irc_end_intを呼び出すようにしている.
    594663サブルーチン(irc_begin_int)の中でスタックに積み増すのは,一般には採用
    595664しないプログラミング技法であるが,irc_begin_intからirc_end_intに渡すæƒ
     
    894963報を記憶している領域のå
    895964ˆé ­ç•ªåœ°ã‚’第1パラメータ,CPU例外ハンド
    896 ãƒ©ç•ªå·ã‚’第2パラメータとして呼び出す.r12に保存されているCPU例外のæƒ
    897 å ±ã‚’
    898 è¨˜æ†¶ã—ている領域のå
    899 ˆé ­ç•ªåœ°ãŒä¿å­˜ã•ã‚Œã‚‹ã‚ˆã†ã«ï¼Œå¿
    900 è¦ã«å¿œã˜ã¦ï¼Œã‚¹ã‚¿ãƒƒã‚¯ã«
    901 ä¿å­˜ã™ã‚‹ï¼Ž
     965ラ番号を第2パラメータとして呼び出す.
    902966
    903967----------------------------------------
     
    919983クに戻す.その後,CPU例外が発生した状況を判断するための追加æƒ
    920984報をスタッ
    921 ã‚¯ä¸Šã‹ã‚‰æ¨ã¦ã‚‹ï¼Žä¾‹å¤–ネストカウントが0になった場合の処理は,割込みハンド
    922 ãƒ©ã®å‡ºå£å‡¦ç†ã¨å
    923 ±é€šã§ã‚るため,ret_int_1に分岐する.
     985ク上から捨てる.例外ネストカウントが0になった場合の処理は,追加æƒ
     986報をス
     987タック上から捨てること以外は,割込みハンドラの出口処理と同様である.
    924988
    925989----------------------------------------
     
    9571021#endif /* TOPPERS_SUPPORT_OVRHDR */
    9581022                }
    959 ----------------------------------------
    960 
    961 ä»¥ä¸Šã®å‡¦ç†ã«ã¯ï¼Œå‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ã®å‡ºå£å‡¦ç†ã®ãƒ«ãƒ¼ãƒãƒ³ã‚’流用する.
    962 
    963 ----------------------------------------
    9641023                CPU例外処理からのリターン後に,CPUロック解除状æ
    9651024‹ã«æˆ»ã‚‹ã‚ˆã†ã«æº–備する
     
    9721031----------------------------------------
    9731032
    974 ã‚¹ã‚¯ãƒ©ãƒƒãƒãƒ¬ã‚¸ã‚¹ã‚¿ã‚’復帰した後,例外からリターンする.
    975 
    9761033●スタックポインタが不正の場合の対策
    9771034
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/arm_memo.txt

    r302 r306  
    8282        - 物理メモリシステムアーキテクチャ(PMSA)でのレジスタ
    8383        - パフォーマンスモニタレジスタ
     84・その他(備忘録)
    8485
    8586○参考文献
     
    651652・ARMv7-A(VMSA)におけるキャッシュ・分岐予測メンテナンス操作
    652653        - ICIALLIS, ICIALLU, ICIMVAU … 命令キャッシュと分岐予測の無効化
    653         - BPIALLIS, CPIALL, CPIMVA      … 分岐予測の無効化
     654        - BPIALLIS, BPIALL, BPIMVA      … 分岐予測の無効化
    654655        - DCIMVAC, DCISW                        … データ/統合キャッシュの無効化
    655656        - DCCMVAC, DCCSW, DCCMVAU       â€¦ データ/統合キャッシュのクリーン
     
    13221323●パフォーマンスモニタレジスタ
    13231324
     1325○その他(備忘録)
     1326
     1327●スタックのアラインメント
     1328
     1329ARMアーキテクチャ向けプロシージャコール標準(AAPCS)では,すべての外部
     1330インタフェースにおいて,スタックポインタを8バイト境界でアラインするå¿
     1331要
     1332がある。
     1333
    13241334以上
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/arm_vmsa_memo.txt

    r302 r306  
    55                作成è€
    66: 高田広章(名古屋大学)
    7                 最終更新: 2015å¹´8月6日
     7                最終更新: 2016å¹´1月16日
    88
    99○メモの位置づけ
     
    382382±æœ‰ï¼ˆ1)か非å
    383383±æœ‰ï¼ˆ0)か
     384・ビット[0]
     385        ページテーブルウォークがキャッシュできる(1)かできない(0)か
    384386・他のビットは未使用
     387
     388・ARMv5以前は,ビット[4:0]はサポートしておらず,0にすべき(以下の記述よ
     389り判断).
     390
     391参考文献[1]のB4.7.1節より
     392--------------------
     393Prior to VMSAv6, a single TTBR existed. Only bits[31:14] of the
     394Translation Table Base Register are significant, and bits[13:0] should
     395be zero.
     396--------------------
    385397
    386398●TTBR1(Translation Table Base Register 1)… (0, c2, c0, 1)
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/gic_design.txt

    r302 r306  
    33                GIC(ARM Generic Interrupt Controller)依存部 設計メモ
    44
    5                 対応バージョン: Release 3.B.0
    6                 最終更新: 2015å¹´7月24日
    7 
     5                対応バージョン: Release 3.0.0
     6                最終更新: 2016å¹´1月16日
     7
     8----------------------------------------------------------------------
     9 TOPPERS/ASP Kernel
     10     Toyohashi Open Platform for Embedded Real-Time Systems/
     11     Advanced Standard Profile Kernel
     12
     13 Copyright (C) 2014-2016 by Embedded and Real-Time Systems Laboratory
     14             Graduate School of Information Science, Nagoya Univ., JAPAN
     15 
     16 ä¸Šè¨˜è‘—作権è€
     17は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     18 ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
     19 å¤‰ãƒ»å†é
     20å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
     21 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     22     æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
     23     ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
     24 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     25     ç”¨ã§ãã‚‹å½¢ã§å†é
     26å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
     27å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
     28     è€
     29マニュアルなど)に,上記の著作権表示,この利用条件および下記
     30     ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
     31 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     32     ç”¨ã§ããªã„形で再é
     33å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
     34     ã¨ï¼Ž
     35   (a) 再é
     36å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
     37マニュアルなど)に,上記の著
     38       ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
     39   (b) 再é
     40å¸ƒã®å½¢æ
     41‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
     42       å ±å‘Šã™ã‚‹ã“と.
     43 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     44     å®³ã‹ã‚‰ã‚‚,上記著作権è€
     45およびTOPPERSプロジェクトをå
     46è²¬ã™ã‚‹ã“と.
     47     ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
     48     ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
     49およびTOPPERSプロジェクトを
     50     å
     51è²¬ã™ã‚‹ã“と.
     52 
     53 æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
     54お
     55 ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     56 ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
     57 ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
     58 ã®è²¬ä»»ã‚’負わない.
     59 
     60 $Id: gic_design.txt 533 2016-01-15 23:29:33Z ertl-hiro $
    861----------------------------------------------------------------------
    962
     
    1467        - GIC依存部を構成するファイル
    1568・チップ依存のパラメータ
     69        - アプリケーションから参ç
     70§ã§ãã‚‹ãƒ‘ラメータ
     71        - カーネルå†
     72部で使用するパラメータ
    1673・GICにおける割込みハンドラおよびCPU例外ハンドラの出å
    1774¥å£å‡¦ç†
    1875        - GICにおける割込みハンドラの出å
     76¥å£å‡¦ç†
     77        - GICにおけるCPU例外ハンドラの出å
    1978¥å£å‡¦ç†
    2079
     
    43102GIC依存部は,次の3つのファイルで構成される.
    44103
    45 gic_kernel_impl.h
    46 gic_kernel_impl.c
    47 gic_support.S
     104  arch/arm_gcc/common/
     105        gic_kernel_impl.h       ã‚«ãƒ¼ãƒãƒ«ã®å‰²è¾¼ã¿GIC依存部のヘッダファイル
     106        gic_kernel_impl.c       ã‚«ãƒ¼ãƒãƒ«ã®å‰²è¾¼ã¿GIC依存部
     107        gic_support.S           ã‚«ãƒ¼ãƒãƒ«ã®å‰²è¾¼ã¿GIC依存部のアセンブリ言語部
    48108
    49109○チップ依存のパラメータ
    50110
    51 TMIN_INTPRI
    52 TMAX_INTPRI
    53 
    54 ã‚«ãƒ¼ãƒãƒ«ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨ã®ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰gic_kernel_impl.hをインク
    55 ãƒ«ãƒ¼ãƒ‰ã™ã‚‹å‰ã«ï¼Œå¿
    56 è¦ã«å¿œã˜ã¦ï¼Œä»¥ä¸‹ã®å®šæ•°ã‚’マクロ定義しておく.
     111●アプリケーションから参ç
     112§ã§ãã‚‹ãƒ‘ラメータ
     113
     114target_kernel.h(または,そこからインクルードされるファイル)で,以下の
     115定数をマクロ定義しておく.
     116
     117(1) TMIN_INTPRI                 å‰²è¾¼ã¿å„ªå
     118ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰
     119(2) TMAX_INTPRI                 å‰²è¾¼ã¿å„ªå
     120ˆåº¦ã®æœ€å¤§å€¤ï¼ˆæœ€ä½Žå€¤ï¼‰
     121
     122TMAX_INTPRIは,-1に定義する.TMAX_INTPRIは,ターゲットチップのGICでサポー
     123トする割込み優å
     124ˆåº¦ã®æ®µæ•°ã«ã‚ˆã‚Šï¼Œ-15,-31,-63,-127,-255のいずれかに定
     125義する.
     126
     127●カーネルå†
     128部で使用するパラメータ
     129
     130target_kernel_impl.h(または,そこからインクルードされるファイル)から
     131gic_kernel_impl.hをインクルードする前に,å¿
     132要に応じて,以下の定数をマク
     133ロ定義しておく.
    57134
    58135(1) GIC_TNUM_INTNO              割込みの数
     
    62139Peripheral Interrupt)の合計数.
    63140
    64 (2) GIC_PRI_LEVEL               å‰²è¾¼ã¿å„ªå
    65 ˆåº¦ã®æ®µæ•°
    66 
    67 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒãƒƒãƒ—のGICがサポートする割込み優å
    68 ˆåº¦ã®æ®µæ•°ï¼Ž16,32,64,128,
    69 256のいずれか.
    70 
    71 (3) GICC_BASE                   CPUインタフェースのベースアドレス
    72 (4) GICD_BASE                   ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュータのベースアドレス
     141(2) GICC_BASE                   CPUインタフェースのベースアドレス
     142(3) GICD_BASE                   ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュータのベースアドレス
    73143
    74144GICのCPUインタフェースおよびディストリビュータのベースアドレス.
    75145
    76 (5) TOPPERS_SAFEG_SECURE        セキュアモード(オプション)
     146(4) TOPPERS_SAFEG_SECURE        セキュアモード(オプション)
    77147
    78148セキュアモードでカーネルを動作させ,FIQをカーネル管理の割込みと扱う場合
    79149に,このシンボルをマクロ定義する.
    80150
    81 (6) GIC_ARM11MOCORE             ARM11 MPCoreへの対応(オプション)
     151(5) GIC_ARM11MPCORE             ARM11 MPCoreへの対応(オプション)
    82152
    83153ARM11 MPCoreのDistributed Interrupt Controllerの場合には,このシンボル
     
    284354¥å£å‡¦ç†
    285355
    286 
     356GICにおけるCPU例外ハンドラのå
     357¥å£å‡¦ç†ï¼ˆirc_begin_exc)では,CPU例外発生
     358前の割込み優å
     359ˆåº¦ãƒžã‚¹ã‚¯ã‚’スタックに保存し,CPU例外ハンドラのå
     360¥å£å‡¦ç†
     361(irc_end_exc)で割込み優å
     362ˆåº¦ãƒžã‚¹ã‚¯ã‚’å
     363ƒã«æˆ»ã™ï¼Ž
     364
     365----------------------------------------
     366ALABEL(irc_begin_exc)
     367        /*
     368         *  割込み優å
     369ˆåº¦ãƒžã‚¹ã‚¯ã‚’保存する.
     370         */
     371        ldr             r1, =GICC_PMR           /* 現在の割込み優å
     372ˆåº¦ã‚’取得 */
     373        ldr             r2, [r1]
     374        push    {r2}                            /* irc_end_excで用いるæƒ
     375報を保存 */
     376        bx              lr
     377----------------------------------------
     378ALABEL(irc_end_exc)
     379        /*
     380         *  割込み優å
     381ˆåº¦ãƒžã‚¹ã‚¯ã‚’å
     382ƒã«æˆ»ã™ï¼Ž
     383         */
     384        pop             {r2}                            /* irc_begin_excで保存したæƒ
     385報を復帰 */
     386        ldr             r1, =GICC_PMR           /* 割込み優å
     387ˆåº¦ãƒžã‚¹ã‚¯ã‚’å
     388ƒã«æˆ»ã™ */
     389        str             r2, [r1]
     390        bx              lr
     391----------------------------------------
    287392
    288393以上
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/gic_memo.txt

    r302 r306  
    55                作成è€
    66: 高田広章(名古屋大学)
    7                 最終更新: 2015å¹´7月25日
     7                最終更新: 2016å¹´3月24日
    88
    99○メモの位置づけ
     
    340340        - 各割込みのコンフィギュレーションを2ビットで設定
    341341        - レベルトリガかエッジトリガかを設定
     342                        上位ビットが0:レベルトリガ
     343                        上位ビットが1:エッジトリガ
    342344        - GICv1より前の一部の実è£
    343345では,N-Nモデルか1-Nモデルかもここで設定
    344                         0:N-Nモデル
    345                         1:1-Nモデル
     346                        下位ビットが0:N-Nモデル
     347                        下位ビットが1:1-Nモデル
     348        - GICv1以降では,下位ビットをどのように設定すべきか?
     349                        文献[1]には明記がない
     350                        文献[2]によると,1にすべきとも読める
     351        → GIC_ARM11MPCOREが定義されていれば1,そうでなければ0に初期化する.
    346352
    347353割込みノンセキュアアクセス制御レジスタ(GICD_NSCARn)0xe00〜0xefc … オプション
  • asp3_wo_tecs/trunk/arch/arm_gcc/doc/mpcore_memo.txt

    r302 r306  
    55                作成è€
    66: 高田広章(名古屋大学)
    7                 最終更新: 2015å¹´8月9日
     7                最終更新: 2016å¹´1月16日
    88
    99○メモの位置づけ
     
    2222
    2323・参考文献
     24・MPCoreとは?
     25・SCU(Snoop Control Unit)
    2426・ARM CT11MPcore with RealView Emulation Baseboard
    2527        - 用語の整理
     
    5355HBI-0159, HBI-0175, HBI-0176
    5456DUI0351E_realview_platform_baseboard_for_arm11_mpcore_ug.pdf
     57
     58○MPCoreとは?
     59
     60MPCoreとは,ARMコアを1〜4個と,SCU(Snoop Control Unit)など,マルチコ
     61アシステムにå¿
     62要な周辺回路を含むプロセッサアーキテクチャの名称と思われ
     63る.
     64
     65参考文献[1]によると,ARM11 MPCoreとは,1〜4個のMP11 CPU(コア)を載せ,
     66SCU,DIC(Distributed Interrupt Controller),コア毎のプライベートタイ
     67マとプライベートウォッチドッグ,AXIインタフェースなどを含むプロセッサの
     68名称である.MP11 CPUとは,ARM11を拡張したコアのことと思われる.
     69
     70参考文献[2]によると,Cortex-A9 MPCoreとは,1〜4個のCortex-A9プロセッサ
     71(コア)を載せ,SCU,GIC(Generic Interrupt Controller),プライベート
     72ペリフェラル(グローバルタイマ,コア毎のプライベートタイマとウォッチドッ
     73グ),AXIインタフェース(オプション)などを含むプロセッサの名称である.
     74
     75以上より,MPCoreチップ依存部には,SCU,GIC(またはDIC),プライベートペ
     76リフェラルを扱うコードを含めるのが妥当と考えられる.ただし,GIC(および
     77DIC)については,別のARMプロセッサにもå
     78±é€šã§ä½¿ã‚ã‚Œã‚‹ãŸã‚ï¼ŒARMコア依存部
     79に含める.
     80
     81○SCU(Snoop Control Unit)
     82
     83SCUは,各コアが持つL1キャッシュのコヒーレンスを保つための回路である.
     84ARM11 MPCoreでは,SCUがパフォーマンスモニタの機能を持っているが,
     85Cortex-Aシリーズでは,パフォーマンスモニタは独立した機能として用意され
     86ており,SCUはパフォーマンスモニタの機能を持たない.
     87
     88以下では,SCUの制御レジスタについてまとめる.
     89
     90SCU制御レジスタ(MPCORE_SCU_CTRL)… 32ビット
     91!ARM11 MPCoreとCortex-A9 MPCoreで,ビットé
     92ç½®ãŒç•°ãªã‚‹ï¼Ž
     93
     94SCUコンフィギュレーションレジスタ(MPCORE_SCU_CONFIG)… 32ビット
     95
     96SCU CPUパワーステータスレジスタ(MPCORE_SCU_CPUSTAT)… 32ビット
     97!ARM11 MPCoreとCortex-A9 MPCoreで,ビットé
     98ç½®ãŒç•°ãªã‚‹ï¼Ž
     99
     100SCUå
     101¨ç„¡åŠ¹åŒ–レジスタ(MPCORE_SCU_INVALL)… 32ビット
     102        - このレジスタに書き込むことで,タグメモリを無効化できる.
    55103
    56104○ARM CT11MPcore with RealView Emulation Baseboard
     
    133181        - 以下のレジスタのアドレスを決める
    134182                + ARM11 MPCoreのレジスタ
    135                         Snoop Control Unit(SCU)の制御レジスタ
     183                        SCUの制御レジスタ
    136184                + L220キャッシュコントローラのレジスタ
    137185                + ARM11 MPCoreテストチップのレジスタ
     
    167215蔵タイマ([1] 9.2節)
    168216
    169 ARM11 MPCoreは,コア毎に,タイマとウォッチドッグを持つ.ウォッチドッグ
    170 ã¯ï¼Œã‚¿ã‚¤ãƒžã¨ã—て使用することもできる.
     217ARM11 MPCoreは,コア毎に,プライベートタイマとプライベートウォッチドッ
     218グを持つ.ウォッチドッグは,タイマとして使用することもできる.
    171219
    172220●タイマ
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/Makefile.core

    r304 r306  
    9595
    9696#
    97 #  オフセットファイル生成のための定義(ToDo)
     97#  オフセットファイル生成のための定義
    9898#
    9999TARGET_OFFSET_TRB = $(COREDIR)/core_offset.trb
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core_check.trb

    r304 r306  
    11# ======================================================================
    2 # 
     2#
    33#   TOPPERS/ASP Kernel
    44#       Toyohashi Open Platform for Embedded Real-Time Systems/
    55#       Advanced Standard Profile Kernel
    6 # 
     6#
    77#   Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    88#                               Toyohashi Univ. of Technology, JAPAN
    99#   Copyright (C) 2005-2014 by Embedded and Real-Time Systems Laboratory
    1010#               Graduate School of Information Science, Nagoya Univ., JAPAN
    11 # 
     11#
    1212#   ä¸Šè¨˜è‘—作権è€
    1313は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     
    4646#       å
    4747è²¬ã™ã‚‹ã“と.
    48 # 
     48#
    4949#   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    5050お
     
    5353#   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    5454#   ã®è²¬ä»»ã‚’負わない.
    55 # 
     55#
    5656#   @(#) $Id: core_check.tf 301 2015-01-07 04:57:01Z ertl-ishikawa $
    5757#
    5858# =====================================================================
    5959
    60 # 
     60#
    6161#               ãƒ‘ス3のプロセッサ依存テンプレート(ARM-M用)
    62 # 
     62#
    6363
    64 # 
     64#
    6565#  パス4のプロセッサ依存テンプレート(ARM-M用)
    66 
    67 def GetStackTskinictxb(key, params)
    68     tinib = SYMBOL("_kernel_tinib_table")
    69     tinib += $sizeof_TINIB * (key - 1)
     66#
     67def GetStackTskinictxb(key, params, tinib)
    7068    bottom = PEEK(tinib + $offsetof_TINIB_TSKINICTXB_stk_bottom, $sizeof_void_ptr)
    7169    size = PEEK(tinib + $offsetof_TINIB_TSKINICTXB_stksz, $sizeof_size_t)
     
    7371end
    7472
    75 # 
     73#
    7674#  ターゲット非依存部のインクルード
    77 # 
     75#
    7876IncludeTrb("kernel/kernel_check.trb")
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core_kernel.trb

    r304 r306  
    11# ======================================================================
    2 # 
     2#
    33#   TOPPERS/ASP Kernel
    44#       Toyohashi Open Platform for Embedded Real-Time Systems/
    55#       Advanced Standard Profile Kernel
    6 # 
     6#
    77#   Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    88#                               Toyohashi Univ. of Technology, JAPAN
    99#   Copyright (C) 2005-2015 by Embedded and Real-Time Systems Laboratory
    1010#               Graduate School of Information Science, Nagoya Univ., JAPAN
    11 # 
     11#
    1212#   ä¸Šè¨˜è‘—作権è€
    1313は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     
    4646#       å
    4747è²¬ã™ã‚‹ã“と.
    48 # 
     48#
    4949#   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    5050お
     
    5353#   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    5454#   ã®è²¬ä»»ã‚’負わない.
    55 # 
     55#
    5656#   @(#) $Id: core.tf 322 2015-04-30 13:23:48Z ertl-ishikawa $
    5757#
    5858# =====================================================================
    5959
    60 # 
     60#
    6161#     ãƒ‘ス2のアーキテクチャ依存テンプレート(ARM-M用)
    62 # 
    63 
    64 # 
     62#
     63
     64#
    6565#  有効な割込み番号,割込みハンドラ番号
    66 # 
    67 $INTNO_VALID = Array(15..$TMAX_INTNO.val)
     66#
     67$INTNO_VALID = Array(15..$TMAX_INTNO)
    6868$INHNO_VALID = $INTNO_VALID
    6969
    70 # 
     70#
    7171#  有効なCPU例外番号
    7272#  7,8はエミュレートされた例外
    73 # 
     73#
    7474$EXCNO_VALID = [ 2,3,4,5,6,7,8,11,12,14 ]
    7575
    76 # 
     76#
    7777#  CRE_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
    78 # 
     78#
    7979$INTNO_CREISR_VALID = $INTNO_VALID
    8080$INHNO_CREISR_VALID = $INHNO_VALID
    8181
    82 # 
     82#
    8383#  DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号
    84 # 
     84#
    8585$INHNO_DEFINH_VALID = $INHNO_VALID
    8686$EXCNO_DEFEXC_VALID = $EXCNO_VALID
    8787
    88 # 
     88#
    8989#  CFG_INTで使用できる割込み番号と割込み優å
    9090ˆåº¦
     
    9696#  そのため,カーネル管理外の割込みでのみ指定可能.
    9797$INTNO_CFGINT_VALID = $INTNO_VALID
    98 $INTPRI_CFGINT_VALID = Array(-(1 << $TBITW_IPRI.val)..-2)
    99 
    100 # 
     98$INTPRI_CFGINT_VALID = Array(-(1 << $TBITW_IPRI)..-2)
     99
     100#
    101101#  kernel/kernel.tf のターゲット依存部
    102 # 
    103 
    104 # 
     102#
     103
     104#
    105105#  TSKINICTXBの初期化æƒ
    106106報を生成
    107 # 
     107#
    108108def GenerateTskinictxb(key, params)
    109109   return("{" \
     
    114114end
    115115
    116 # 
     116#
    117117#  標準テンプレートファイルのインクルード
    118 # 
     118#
    119119IncludeTrb("kernel/kernel.trb")
    120120
     
    124124 */
    125125
    126 /* 
     126/*
    127127 *  ベクターテーブル
    128  */ 
     128 */
    129129__attribute__ ((section(".vector")))
    130130const FP _kernel_vector_table[] = {
     
    143143$INTNO_VALID.each { |inhno|
    144144    #if $cfgData[:DEF_INH][inhno]) && ((INH.INHATR[inhno] & TA_NONKERNEL) != 0)$
    145     inh = $cfgData[:DEF_INH].select { |k,v| 
     145    inh = $cfgData[:DEF_INH].select { |k,v|
    146146        (v[:inhno] == inhno) && (v[:inhatr] & $TA_NONKERNEL)
    147147    }
     
    158158$kernelCfgC.add("const FP _kernel_exc_tbl[] = {")
    159159Array(0..14).each { |excno|
    160     exc = $cfgData[:DEF_EXC].select { |k,v| 
     160    exc = $cfgData[:DEF_EXC].select { |k,v|
    161161        (v[:excno] == excno)
    162162    }
     
    170170}
    171171$INTNO_VALID.each { |inhno|
    172     inh = $cfgData[:DEF_INH].select { |k,v| 
     172    inh = $cfgData[:DEF_INH].select { |k,v|
    173173        (v[:inhno] == inhno)
    174174    }
     
    183183$kernelCfgC.add2("};")
    184184
    185 # 
     185#
    186186#  _kernel_bitpat_cfgintの生成
    187 # 
     187#
    188188
    189189bitpat_cfgint_num = 0
     
    199199Array(0..(bitpat_cfgint_num-1)).each { |num|
    200200    Array((num*32)..((num*32)+31)).each { |inhno|
    201         inh = $cfgData[:DEF_INH].select { |k,v| 
     201        inh = $cfgData[:DEF_INH].select { |k,v|
    202202            (v[:inhno] == inhno)
    203203        }
     
    210210$kernelCfgC.add2("};")
    211211
    212 # 
     212#
    213213#  割込み優å
    214214ˆåº¦ãƒ†ãƒ¼ãƒ–ル(å†
    215215部表現)
    216 # 
     216#
    217217$kernelCfgC.add("const uint32_t _kernel_int_iipm_tbl[] = {")
    218218Array(0..14).each { |excno|
     
    220220}
    221221$INTNO_VALID.each { |intno|
    222     int = $cfgData[:CFG_INT].select { |k,v| 
     222    int = $cfgData[:CFG_INT].select { |k,v|
    223223        (v[:intno] == intno)
    224224    }
  • asp3_wo_tecs/trunk/configure.rb

    r305 r306  
    5454#  の責任を負わない.
    5555#
    56 #  $Id: configure.rb 585 2016-02-05 10:58:56Z ertl-hiro $
     56#  $Id: configure.rb 626 2016-02-12 13:46:32Z ertl-hiro $
    5757#
    5858
     
    227227  $appldirs.push("\$(SRCDIR)/sample")
    228228end
    229 if $applname.nil?
    230   $applname = "sample1"
    231 end
     229$applname ||= "sample1"
    232230if $option_t.nil?
    233231  $applobjs.unshift($applname + ".o")
    234232end
    235 if $cfgfile.nil?
    236   $cfgfile = $applname + ".cfg"
    237 end
    238 if $cdlfile.nil?
    239   $cdlfile = $applname + ".cdl"
    240 end
     233$cfgfile ||= $applname + ".cfg"
     234$cdlfile ||= $applname + ".cdl"
    241235if $srcdir.nil?
    242236  # ソースディレクトリ名を取り出す
     
    252246  $srcabsdir = Shell.new.cwd + "/" + $srcdir
    253247end
    254 if $tempmakefile.nil?
    255   $tempmakefile = $srcdir + "/sample/Makefile"
    256 end
    257 if $cfg.nil?
    258   $cfg = $ruby + " \$(SRCDIR)/cfg/cfg.rb"
    259 end
    260 if $tecsgen.nil?
    261   $tecsgen = $ruby + " \$(SRCDIR)/tecsgen/tecsgen.rb"
    262 end
     248$tempmakefile ||= $srcdir + "/sample/Makefile"
     249$cfg ||= $ruby + " \$(SRCDIR)/cfg/cfg.rb"
     250$tecsgen ||= $ruby + " \$(SRCDIR)/tecsgen/tecsgen.rb"
    263251
    264252#
  • asp3_wo_tecs/trunk/include/kernel.h

    r305 r306  
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: kernel.h 520 2016-01-14 05:06:26Z ertl-hiro $
     55 *  $Id: kernel.h 654 2016-02-20 12:59:31Z ertl-hiro $
    5656 */
    5757
     
    547547#define TKERNEL_MAKER   UINT_C(0x0118)  /* カーネルのメーカーコード */
    548548#define TKERNEL_PRID    UINT_C(0x0007)  /* カーネルの識別番号 */
    549 #define TKERNEL_SPVER   UINT_C(0xf630)  /* カーネル仕様のバージョン番号 */
    550 #define TKERNEL_PRVER   UINT_C(0x3000)  /* カーネルのバージョン番号 */
     549#define TKERNEL_SPVER   UINT_C(0xf631)  /* カーネル仕様のバージョン番号 */
     550#define TKERNEL_PRVER   UINT_C(0x3010)  /* カーネルのバージョン番号 */
    551551
    552552/*
  • asp3_wo_tecs/trunk/kernel/dataqueue.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: dataqueue.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: dataqueue.trb 668 2016-03-03 13:57:53Z ertl-hiro $
    5656#
    5757
     
    6666
    6767  def prepare(key, params)
     68    # パラメータが省略された時のデフォルト値の設定
     69    params[:dtqmb] ||= "NULL"
     70
    6871    # dtqatrが無効の場合(E_RSATR)[NGKI1669ï¼½
    6972    #(TA_TPRI以外のビットがセットされている場合)
     
    7477    # dtqmbがNULLでない場合(E_NOSPT)[ASPS0132ï¼½
    7578    if params[:dtqmb] != "NULL"
    76       error_illegal_id("E_PAR", params, :dtqmb, :dtqid)
     79      error_illegal_id("E_NOSPT", params, :dtqmb, :dtqid)
    7780    end
    7881
    7982    # データキュー管理領域
    8083    if params[:dtqcnt] > 0
    81       $kernelCfgC.add("static DTQMB _kernel_dtqmb_#{params[:dtqid]}" \
    82                                                                                                 "[#{params[:dtqcnt]}];")
     84      dtqmbName = "_kernel_dtqmb_#{params[:dtqid]}"
     85      $kernelCfgC.add("static DTQMB #{dtqmbName}[#{params[:dtqcnt]}];")
     86      params[:dtqinib_dtqmb] = dtqmbName
     87    else
     88      params[:dtqinib_dtqmb] = "NULL"
    8389    end
    8490  end
    8591
    8692  def generateInib(key, params)
    87     if params[:dtqcnt] > 0
    88       dtqmb = "_kernel_dtqmb_#{params[:dtqid]}"
    89     else
    90       dtqmb = "NULL"
    91     end
    92     return("(#{params[:dtqatr]}), (#{params[:dtqcnt]}), #{dtqmb}")
     93    return("(#{params[:dtqatr]}), (#{params[:dtqcnt]}), " \
     94                                                                                "#{params[:dtqinib_dtqmb]}")
    9395  end
    9496end
  • asp3_wo_tecs/trunk/kernel/exception.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: exception.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: exception.trb 663 2016-02-27 04:45:50Z ertl-hiro $
    5656#
    5757
     
    7676  # excatrが無効の場合(E_RSATR)[NGKI3131ï¼½
    7777  #(TARGET_EXCATR以外のビットがセットされている場合)
    78   if (params[:excatr] & ~$TARGET_EXCATR) != 0
     78  if (params[:excatr] & ~($TARGET_EXCATR)) != 0
    7979    error_illegal_sym("E_RSATR", params, :excatr, :excno)
    8080  end
     
    8585報の生成
    8686#
    87 if $OMIT_INITIALIZE_EXCEPTION.nil?
     87if !$OMIT_INITIALIZE_EXCEPTION
    8888  #
    8989  #  定義するCPU例外ハンドラの数
    9090  #
    91   $kernelCfgC.append(<<EOS)
     91  $kernelCfgC.add(<<EOS)
    9292#define TNUM_DEF_EXCNO  #{$cfgData[:DEF_EXC].size}
    9393const uint_t _kernel_tnum_def_excno = TNUM_DEF_EXCNO;
    94 
    9594EOS
    9695
  • asp3_wo_tecs/trunk/kernel/genoffset.trb

    r304 r306  
    5252#   ã®è²¬ä»»ã‚’負わない.
    5353#
    54 #   $Id: genoffset.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     54#   $Id: genoffset.trb 662 2016-02-27 02:33:51Z ertl-hiro $
    5555#
    5656
     
    7575#
    7676def GenerateDefine(symbol, value)
    77   $offsetH.add("#define #{symbol}\t#{value.val}")
     77  $offsetH.add("#define #{symbol}\t#{value}")
    7878end
    7979
  • asp3_wo_tecs/trunk/kernel/interrupt.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: interrupt.trb 612 2016-02-08 04:27:57Z ertl-hiro $
     55#   $Id: interrupt.trb 678 2016-03-06 02:36:09Z ertl-hiro $
    5656#
    5757
     
    7878#  トレースログマクロのデフォルト定義
    7979#
    80 $kernelCfgC.append(<<EOS)
     80$kernelCfgC.add(<<EOS)
    8181#ifndef LOG_ISR_ENTER
    8282#define LOG_ISR_ENTER(isrid)
     
    8686#define LOG_ISR_LEAVE(isrid)
    8787#endif /* LOG_ISR_LEAVE */
    88 
    8988EOS
    9089
     
    105104#
    106105if $INTPRI_CFGINT_VALID.nil?
    107   $INTPRI_CFGINT_VALID = $TMIN_INTPRI.val.upto($TMAX_INTPRI.val).to_a
     106  $INTPRI_CFGINT_VALID = $TMIN_INTPRI.upto($TMAX_INTPRI).to_a
    108107end
    109108
     
    151150    if !$INTNO_FIX_NONKERNEL.index(params[:intno]).nil?
    152151      if params[:intpri] >= $TMIN_INTPRI
    153         error_ercd("E_OBJ", params, "intno `#{params[:intno]}'" \
    154                                                         " must have higher priority than TMIN_INTPRI")
     152        error_ercd("E_OBJ", params, "%%intno must have higher priority " \
     153                                                                                        "than TMIN_INTPRI in %apiname")
    155154      end
    156155    end
     
    162161    if !$INTNO_FIX_KERNEL.index(params[:intno]).nil?
    163162      if params[:intpri] < $TMIN_INTPRI
    164         error_ercd("E_OBJ", params, "intno `#{params[:intno]}'" \
    165                                         " must have lower or equal priority to TMIN_INTPRI")
     163        error_ercd("E_OBJ", params, "%%intno must have lower or equal " \
     164                                                                        "priority to TMIN_INTPRI in %apiname")
    166165      end
    167166    end
     
    180179  # inhatrが無効の場合(E_RSATR)[NGKI3052ï¼½
    181180  #(TARGET_INHATR以外のビットがセットされている場合)
    182   if (params[:inhatr] & ~$TARGET_INHATR) != 0
     181  if (params[:inhatr] & ~($TARGET_INHATR)) != 0
    183182    error_illegal_sym("E_RSATR", params, :inhatr, :inhno)
    184183  end
     
    189188    if !$INHNO_FIX_NONKERNEL.index(params[:inhno]).nil?
    190189      if (params[:inhatr] & $TA_NONKERNEL) == 0
    191         error_ercd("E_RSATR", params, "inhno `#{params[:inhno]}'" \
    192                                                                         " must be non-kernel interrupt")
     190        error_ercd("E_RSATR", params, "%%inhno must be " \
     191                                                                "non-kernel interrupt in %apiname")
    193192      end
    194193    end
     
    200199    if !$INHNO_FIX_KERNEL.index(params[:inhno]).nil?
    201200      if (params[:inhatr] & $TA_NONKERNEL) != 0
    202         error_ercd("E_RSATR", params, "inhno `#{params[:inhno]}'" \
    203                                                                         " must not be non-kernel interrupt")
     201        error_ercd("E_RSATR", params, "%%inhno must not be " \
     202                                                                "non-kernel interrupt in %apiname")
    204203      end
    205204    end
     
    211210    # inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ)[NGKI3062ï¼½
    212211    if !$cfgData[:CFG_INT].has_key?(intnoVal)
    213       error_ercd("E_OBJ", params, "intno `#{intnoVal}' corresponding to" \
    214                                 " inhno `#{params[:inhno]}' is not configured with CFG_INT")
     212      error_ercd("E_OBJ", params, "intno `#{intnoVal}' corresponding to " \
     213                                        "%%inhno in %apiname is not configured with CFG_INT")
    215214    else
    216215      intnoParams = $cfgData[:CFG_INT][intnoVal]
     
    221220        # さい場合(E_OBJ)[NGKI3065ï¼½
    222221        if intnoParams[:intpri] < $TMIN_INTPRI
    223           error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}'" \
    224                                                 " configured for inhno `#{params[:inhno]}' must" \
    225                                                 " be lower or equal to TMIN_INTPRI")
     222          error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \
     223                                "configured for %%inhno must be lower or equal to TMIN_INTPRI")
    226224        end
    227225      else
     
    231229        # 場合(E_OBJ)[NGKI3066ï¼½
    232230        if intnoParams[:intpri] >= $TMIN_INTPRI
    233           error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}'" \
    234                                                 " configured for inhno `#{params[:inhno]}' must" \
    235                                                 " be higher than with TMIN_INTPRI")
     231          error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \
     232                                        "configured for %%inhno must be higher than TMIN_INTPRI")
    236233        end
    237234      end
     
    246243  #     isratrが無効の場合(E_RSATR)[NGKI2998ï¼½
    247244  #(TARGET_ISRATR以外のビットがセットされている場合)
    248   if (params[:isratr] & ~$TARGET_ISRATR) != 0
     245  if (params[:isratr] & ~($TARGET_ISRATR)) != 0
    249246    error_illegal("E_RSATR", params, "isratr")
    250247  end
     
    267264  isrParamsList = []
    268265  $cfgData[:CRE_ISR].sort.each do |key, params|
    269     if params[:intno].val == intnoVal
     266    if params[:intno] == intnoVal
    270267      isrParamsList.push(params)
    271268    end
     
    279276    if $cfgData[:DEF_INH].has_key?(inhnoVal)
    280277      inhnoParams = $cfgData[:DEF_INH][inhnoVal]
    281       error_ercd("E_OBJ", isrParamsList[0], \
    282                                         "intno `#{isrParamsList[0][:intno]}' in CRE_ISR" \
    283                                         " is duplicated with inhno #{inhnoParams[:inhno]}")
     278      error_ercd("E_OBJ", isrParamsList[0], "%%intno in %apiname " \
     279                                        "is duplicated with inhno #{inhnoParams[:inhno]}")
    284280    end
    285281
    286282    # intnoに対するCFG_INTがない場合(E_OBJ)[NGKI3012ï¼½
    287283    if !$cfgData[:CFG_INT].has_key?(intnoVal)
    288       error_ercd("E_OBJ", isrParamsList[0], \
    289                                                 "intno `#{isrParamsList[0][:intno]}'" \
    290                                                 " is not configured with CFG_INT")
     284      error_ercd("E_OBJ", isrParamsList[0], "%%intno in %apiname " \
     285                                                                        "is not configured with CFG_INT")
    291286    else
    292287      intnoParams = $cfgData[:CFG_INT][intnoVal]
     
    297292      if intnoParams[:intpri] < $TMIN_INTPRI
    298293        error_ercd("E_OBJ", isrParamsList[0],
    299                                                 "intpri `#{intnoParams[:intpri]}' configured for" \
    300                                                 " intno `#{isrParamsList[0][:intno]}}' in higher" \
    301                                                 " than TMIN_INTPRI")
     294                                                "intpri `#{intnoParams[:intpri]}' configured for " \
     295                                                "%%intno with CFG_INT in higher than TMIN_INTPRI")
    302296      end
    303297    end
     
    305299    # 次のDEF_INHに相当するデータを生成
    306300    # DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } );
    307     params = {
    308       :inhno => StrVal.new(inhnoVal.to_s, inhnoVal),
    309       :inhatr => $TA_NULL,
    310       :inthdr => StrVal.new("_kernel_inthdr_#{intnoVal}")
     301    $cfgData[:DEF_INH][inhnoVal] = {
     302      inhno: NumStr.new(inhnoVal),
     303      inhatr: NumStr.new($TA_NULL, "TA_NULL"),
     304      inthdr: "_kernel_inthdr_#{intnoVal}"
    311305    }
    312     $cfgData[:DEF_INH][inhnoVal] = params
    313306
    314307    # 割込みサービスルーチン用の割込みハンドラ
     
    340333報の生成
    341334#
    342 if $OMIT_INITIALIZE_INTERRUPT.nil? || !$USE_INHINIB_TABLE.nil?
     335if !$OMIT_INITIALIZE_INTERRUPT || $USE_INHINIB_TABLE
    343336  #
    344337  #  定義する割込みハンドラの数
    345338  #
    346   $kernelCfgC.append(<<EOS)
     339  $kernelCfgC.add(<<EOS)
    347340#define TNUM_DEF_INHNO  #{$cfgData[:DEF_INH].size}
    348341const uint_t _kernel_tnum_def_inhno = TNUM_DEF_INHNO;
    349 
    350342EOS
    351343
     
    388380報の生成
    389381#
    390 if $OMIT_INITIALIZE_INTERRUPT.nil? || !$USE_INTINIB_TABLE.nil?
     382if !$OMIT_INITIALIZE_INTERRUPT || $USE_INTINIB_TABLE
    391383  #
    392384  #  設定する割込み要求ラインの数
    393385  #
    394   $kernelCfgC.append(<<EOS)
     386  $kernelCfgC.add(<<EOS)
    395387#define TNUM_CFG_INTNO  #{$cfgData[:CFG_INT].size}
    396388const uint_t _kernel_tnum_cfg_intno = TNUM_CFG_INTNO;
    397 
    398389EOS
    399390
  • asp3_wo_tecs/trunk/kernel/kernel.trb

    r305 r306  
    4545#       å
    4646è²¬ã™ã‚‹ã“と.
    47 #
     47# 
    4848#   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    4949お
     
    5252#   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    5353#   ã®è²¬ä»»ã‚’負わない.
    54 #
    55 #   $Id: kernel.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    56 #
     54# 
     55#   $Id: kernel.trb 670 2016-03-03 15:08:11Z ertl-hiro $
     56# 
    5757
    5858#
     
    6060#
    6161
    62 # 
     62#
    6363#  タイムスタンプファイルの指定
    64 # 
     64#
    6565$timeStampFileName = "kernel_cfg.timestamp"
    6666
     
    7070#
    7171$kernelCfgH = GenFile.new("kernel_cfg.h")
    72 $kernelCfgH.append(<<EOS)
     72$kernelCfgH.add(<<EOS)
    7373/* kernel_cfg.h */
    7474#ifndef TOPPERS_KERNEL_CFG_H
    7575#define TOPPERS_KERNEL_CFG_H
    76 
    7776EOS
    7877
     
    8281#
    8382$kernelCfgC = GenFile.new("kernel_cfg.c")
    84 $kernelCfgC.append(<<EOS)
     83$kernelCfgC.add(<<EOS)
    8584/* kernel_cfg.c */
    8685#include "kernel/kernel_int.h"
     
    9089#error The kernel does not match this configuration file.
    9190#endif
    92 
    93 EOS
    94 
    95 #
     91EOS
     92
     93#
    9694#  インクルードディレクティブ(#include)
    97 # 
     95#
    9896$kernelCfgC.comment_header("Include Directives")
    9997$includeFiles.each do |file|
     
    142140
    143141    # オブジェクトのID番号を保持する変数
    144     if !$USE_EXTERNAL_ID.nil?
     142    if $USE_EXTERNAL_ID
    145143      $cfgData[@api].sort.each do |key, params|
    146144        $kernelCfgC.add("const ID #{params[@objid]}_id" \
     
    224222                                                                || (nfymode2 == $TENFY_SETFLG && epar2.nil?)
    225223    # パラメータが足りない場合
    226     error_api(params, "too few parameters for nfymode `#{nfymode}'" \
    227                                                         " in #{params[:apiname]} of #{params[objid]}")
     224    error_api(params, "too few parameters for nfymode `#{nfymode}' " \
     225                                                                                        "in %apiname of %#{objid}")
    228226  elsif (nfymode2 == 0 && !epar1.nil?) \
    229227                                        || (nfymode2 != $TENFY_SETFLG && !epar2.nil?)
    230228    # パラメータが多すぎる場合
    231     error_api(params, "too many parameters for nfymode `#{nfymode}'" \
    232                                                         " in #{params[:apiname]} of #{params[objid]}")
     229    error_api(params, "too many parameters for nfymode `#{nfymode}' " \
     230                                                                                        "in %apiname of %#{objid}")
    233231  elsif nfymode == $TNFY_HANDLER
    234232    # タイムイベントハンドラの呼出し
     
    354352IncludeTrb("kernel/exception.trb")
    355353
    356 # 
     354#
    357355#  非タスクコンテキスト用のスタック領域
    358 # 
     356#
    359357$kernelCfgC.comment_header("Stack Area for Non-task Context")
    360358
    361 if $cfgData[:DEF_ICS].size() == 0
     359if $cfgData[:DEF_ICS].size == 0
    362360  # DEF_ICSがない場合のデフォルト値の設定
    363361  if $DEFAULT_ISTK.nil?
     
    371369else
    372370  # 静的API「DEF_ICS」が複数ある(E_OBJ)[NGKI3216ï¼½
    373   if $cfgData[:DEF_ICS].size() > 1
     371  if $cfgData[:DEF_ICS].size > 1
    374372    error("E_OBJ: too many DEF_ICS")
    375373  end
     
    378376  params = $cfgData[:DEF_ICS][1]
    379377
     378  # パラメータが省略された時のデフォルト値の設定
     379  params[:istk] ||= "NULL"
     380
    380381  # istkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ,未定義の場合は1)
    381382  # よりも小さい場合(E_PAR)[NGKI3254ï¼½
    382   if params[:istksz] <= $TARGET_MIN_ISTKSZ
     383  if params[:istksz] < $TARGET_MIN_ISTKSZ
    383384    error_wrong("E_PAR", params, :istksz, "too small")
    384385  end
    385386
    386   if (params[:istk] == "NULL")
     387  if params[:istk] == "NULL"
    387388    # スタック領域の自動割付け
    388         istksz = AllocStack("_kernel_istack", params[:istksz])
     389    istksz = AllocStack("_kernel_istack", params[:istksz])
    389390    istk = "_kernel_istack"
    390391  else
     
    399400end
    400401
    401 $kernelCfgC.append(<<EOS)
     402$kernelCfgC.add(<<EOS)
    402403const size_t _kernel_istksz = #{istksz};
    403404STK_T *const _kernel_istk = #{istk};
     
    406407STK_T *const _kernel_istkpt = TOPPERS_ISTKPT(#{istk}, #{istksz});
    407408#endif /* TOPPERS_ISTKPT */
    408 
    409 EOS
    410 
    411 #
     409EOS
     410
     411#
    412412#  タイムイベント管理
    413 # 
     413#
    414414$kernelCfgC.comment_header("Time Event Management")
    415 $kernelCfgC.append(<<EOS)
     415$kernelCfgC.add(<<EOS)
    416416TMEVTN   _kernel_tmevt_heap[1 + TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];
    417 
    418 EOS
    419 
    420 #
     417EOS
     418
     419#
    421420#  各モジュールの初期化関数
    422 # 
     421#
    423422$kernelCfgC.comment_header("Module Initialization Function")
    424423$kernelCfgC.append(<<EOS)
     
    428427EOS
    429428$initializeFunctions.each do |func|
    430         $kernelCfgC.add("\t#{func}")
     429  $kernelCfgC.add("\t#{func}")
    431430end
    432431$kernelCfgC.add2("}")
    433432
    434 # 
     433#
    435434#  初期化ルーチン機能
    436 #
    437 #
     435#
    438436$kernelCfgC.comment_header("Initialization Routine")
    439437
     
    442440  # iniatrが無効の場合(E_RSATR)[NGKI3241ï¼½
    443441  #(TA_NULLでない場合)
    444   if (params[:iniatr] != 0)
     442  if (params[:iniatr] != $TA_NULL)
    445443    error_illegal_sym("E_RSATR", params, :iniatr, :inirtn)
    446444  end
     
    459457$kernelCfgC.add2("}")
    460458
    461 # 
     459#
    462460#  終了処理ルーチン機能
    463 # 
     461#
    464462$kernelCfgC.comment_header("Termination Routine")
    465463
     
    468466  # teratrが無効の場合(E_RSATR)[NGKI3248ï¼½
    469467  #(TA_NULLでない場合)
    470   if (params[:teratr] != 0)
     468  if (params[:teratr] != $TA_NULL)
    471469    error_illegal_sym("E_RSATR", params, :teratr, :terrtn)
    472470  end
  • asp3_wo_tecs/trunk/kernel/kernel_api.def

    r304 r306  
    1 CRE_TSK #tskid* { .tskatr &exinf &task +itskpri .stksz &stk }
     1CRE_TSK #tskid* { .tskatr &exinf &task +itskpri .stksz &stk? }
    22CRE_SEM #semid* { .sematr .isemcnt .maxsem }
    33CRE_FLG #flgid* { .flgatr .iflgptn }
    4 CRE_DTQ #dtqid* { .dtqatr .dtqcnt &dtqmb }
    5 CRE_PDQ #pdqid* { .pdqatr .pdqcnt +maxdpri &pdqmb }
     4CRE_DTQ #dtqid* { .dtqatr .dtqcnt &dtqmb? }
     5CRE_PDQ #pdqid* { .pdqatr .pdqcnt +maxdpri &pdqmb? }
    66CRE_MTX #mtxid* { .mtxatr +ceilpri? }
    7 CRE_MPF #mpfid* { .mpfatr .blkcnt .blksz &mpf &mpfmb }
     7CRE_MPF #mpfid* { .mpfatr .blkcnt .blksz &mpf? &mpfmb? }
    88CRE_CYC #cycid* { .cycatr { .nfymode &par1 &par2? &par3? &par4? } .cyctim .cycphs }
    99CRE_ALM #almid* { .almatr { .nfymode &par1 &par2? &par3? &par4? } }
     
    1212DEF_INH .inhno* { .inhatr &inthdr }
    1313DEF_EXC .excno* { .excatr &exchdr }
    14 DEF_ICS { .istksz &istk }
     14DEF_ICS { .istksz &istk? }
    1515ATT_INI { .iniatr &exinf &inirtn }
    1616ATT_TER { .teratr &exinf &terrtn }
  • asp3_wo_tecs/trunk/kernel/kernel_check.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: kernel_check.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: kernel_check.trb 662 2016-02-27 02:33:51Z ertl-hiro $
    5656
    5757
     
    7979    elsif startIdata.nil?
    8080      error_exit("symbol `lma[:START_IDATA]' not found")
     81    else
     82      BCOPY(startIdata, startData, endData - startData)
    8183    end
    8284  end
     
    8789報のチェック関数
    8890#
    89 $tmax_tskid = PEEK(SYMBOL("_kernel_tmax_tskid"), $sizeof_ID)
    90 $tmax_semid = PEEK(SYMBOL("_kernel_tmax_semid"), $sizeof_ID)
    91 $tmax_flgid = PEEK(SYMBOL("_kernel_tmax_flgid"), $sizeof_ID)
    92 $tmax_dtqid = PEEK(SYMBOL("_kernel_tmax_dtqid"), $sizeof_ID)
     91$tmax_tskid = $TMIN_TSKID + $cfgData[:CRE_TSK].size - 1
     92$tmax_semid = $TMIN_SEMID + $cfgData[:CRE_SEM].size - 1
     93$tmax_flgid = $TMIN_FLGID + $cfgData[:CRE_FLG].size - 1
     94$tmax_dtqid = $TMIN_DTQID + $cfgData[:CRE_DTQ].size - 1
    9395
    9496def checkNotifyHandler(key, params, objid, exinf, nfyhdr)
     
    122124      error_wrong_id("E_PAR", params1, :tmehdr, objid, "not aligned")
    123125    end
    124     if $CHECK_FUNC_NONNULL == 1 && tmehdr == 0
     126    if $CHECK_FUNC_NONNULL && tmehdr == 0
    125127      error_wrong_id("E_PAR", params1, :tmehdr, objid, "null")
    126128    end
     
    138140      error_wrong_id("E_PAR", params1, :p_var, objid, "not aligned")
    139141    end
    140     if $CHECK_INTPTR_NONNULL == 1 && p_var == 0
     142    if $CHECK_INTPTR_NONNULL && p_var == 0
    141143      error_wrong_id("E_PAR", params1, :p_var, objid, "null")
    142144    end
     
    194196      error_wrong_id("E_PAR", params1, :p_var, objid, "not aligned")
    195197    end
    196     if $CHECK_INTPTR_NONNULL == 1 && p_var == 0
     198    if $CHECK_INTPTR_NONNULL && p_var == 0
    197199      error_wrong_id("E_PAR", params1, :p_var, objid, "null")
    198200    end
     
    244246#
    245247tinib = SYMBOL("_kernel_tinib_table")
    246 $cfgData[:CRE_TSK].each do |key, params|
     248$cfgData[:CRE_TSK].sort.each do |key, params|
     249  task = PEEK(tinib + $offsetof_TINIB_task, $sizeof_TASK)
     250
    247251  # タスクのå
    248252ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI1033ï¼½
    249   task = PEEK(tinib + $offsetof_TINIB_task, $sizeof_FP)
    250253  if (task & ($CHECK_FUNC_ALIGN - 1)) != 0
    251254    error_wrong_id("E_PAR", params, :task, :tskid, "not aligned")
    252255  end
    253   if $CHECK_FUNC_NONNULL == 1 && task == 0
     256  if $CHECK_FUNC_NONNULL && task == 0
    254257    error_wrong_id("E_PAR", params, :task, :tskid, "null")
    255258  end
     
    257260  # タスクのスタック領域のå
    258261ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI1056ï¼½
    259   if $USE_TSKINICTXB == 1
    260     stk = GetStackTskinictxb(key, params)
     262  if $USE_TSKINICTXB
     263    stk = GetStackTskinictxb(key, params, tinib)
    261264  else
    262265    stk = PEEK(tinib + $offsetof_TINIB_stk, $sizeof_void_ptr)
     
    265268    error_wrong_id("E_PAR", params, :stk, :tskid, "not aligned")
    266269  end
    267   if $CHECK_STACK_NONNULL == 1 && stk == 0
     270  if $CHECK_STACK_NONNULL && stk == 0
    268271    error_wrong_id("E_PAR", params, :stk, :tskid, "null")
    269272  end
     
    276279#
    277280mpfinib = SYMBOL("_kernel_mpfinib_table")
    278 $cfgData[:CRE_MPF].each do |key, params|
     281$cfgData[:CRE_MPF].sort.each do |key, params|
    279282  mpf = PEEK(mpfinib + $offsetof_MPFINIB_mpf, $sizeof_void_ptr)
    280283
     
    284287    error_wrong_id("E_PAR", params, :mpf, :mpfid, "not aligned")
    285288  end
    286   if $CHECK_MPF_NONNULL == 1 && mpf == 0
     289  if $CHECK_MPF_NONNULL && mpf == 0
    287290    error_wrong_id("E_PAR", params, :mpf, :mpfid, "null")
    288291  end
     
    295298#
    296299cycinib = SYMBOL("_kernel_cycinib_table")
    297 $cfgData[:CRE_CYC].each do |key, params|
     300$cfgData[:CRE_CYC].sort.each do |key, params|
    298301  exinf = PEEK(cycinib + $offsetof_CYCINIB_exinf, $sizeof_intptr_t)
    299   nfyhdr = PEEK(cycinib + $offsetof_CYCINIB_nfyhdr, $sizeof_FP)
     302  nfyhdr = PEEK(cycinib + $offsetof_CYCINIB_nfyhdr, $sizeof_NFYHDR)
    300303
    301304  #     é€šçŸ¥æƒ
     
    310313#
    311314alminib = SYMBOL("_kernel_alminib_table")
    312 $cfgData[:CRE_ALM].each do |key, params|
     315$cfgData[:CRE_ALM].sort.each do |key, params|
    313316  exinf = PEEK(alminib + $offsetof_ALMINIB_exinf, $sizeof_intptr_t)
    314   nfyhdr = PEEK(alminib + $offsetof_ALMINIB_nfyhdr, $sizeof_FP)
     317  nfyhdr = PEEK(alminib + $offsetof_ALMINIB_nfyhdr, $sizeof_NFYHDR)
    315318
    316319  #     é€šçŸ¥æƒ
     
    324327#  非タスクコンテキスト用のスタック領域に関するチェック
    325328#
    326 istk = PEEK(SYMBOL("_kernel_istk"), $sizeof_void_ptr)
    327 
    328 # 非タスクコンテキスト用のスタック領域のå
     329istkAddr = SYMBOL("_kernel_istk")
     330if !istkAddr.nil?
     331  istk = PEEK(istkAddr, $sizeof_void_ptr)
     332
     333  # 非タスクコンテキスト用のスタック領域のå
    329334ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3222ï¼½
    330 if (istk & ($CHECK_STACK_ALIGN - 1)) != 0
    331   error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "not aligned")
    332 end
    333 if $CHECK_STACK_NONNULL == 1 && istk == 0
    334   error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "null")
    335 end
     335  if (istk & ($CHECK_STACK_ALIGN - 1)) != 0
     336    error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "not aligned")
     337  end
     338  if $CHECK_STACK_NONNULL && istk == 0
     339    error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "null")
     340  end
     341end
  • asp3_wo_tecs/trunk/kernel/kernel_impl.h

    r302 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2004-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2004-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: kernel_impl.h 332 2015-06-21 13:20:37Z ertl-hiro $
     55 *  $Id: kernel_impl.h 706 2016-03-29 14:19:40Z ertl-hiro $
    5656 */
    5757
     
    8888 */
    8989#include <t_syslog.h>
    90 
    91 /*
    92  *  型キャストを行うマクロの定義
    93  */
    94 #ifndef CAST
    95 #define CAST(type, val)         ((type)(val))
    96 #endif /* CAST */
    9790
    9891/*
  • asp3_wo_tecs/trunk/kernel/kernel_sym.def

    r305 r306  
    1 USE_EXTERNAL_ID,1,,defined(USE_EXTERNAL_ID)
    2 SIL_ENDIAN_BIG,1,,defined(SIL_ENDIAN_BIG)
    3 SIL_ENDIAN_LITTLE,1,,defined(SIL_ENDIAN_LITTLE)
     1USE_EXTERNAL_ID,true,bool,defined(USE_EXTERNAL_ID)
     2SIL_ENDIAN_BIG,true,bool,defined(SIL_ENDIAN_BIG)
     3SIL_ENDIAN_LITTLE,true,bool,defined(SIL_ENDIAN_LITTLE)
    44TA_NULL
    55TA_ACT
     
    4848TMIN_CYCID,,signed
    4949TMIN_ALMID,,signed
    50 USE_TSKINICTXB,1,,defined(USE_TSKINICTXB)
    51 OMIT_INITIALIZE_INTERRUPT,1,,defined(OMIT_INITIALIZE_INTERRUPT)
    52 USE_INHINIB_TABLE,1,,defined(USE_INHINIB_TABLE)
    53 USE_INTINIB_TABLE,1,,defined(USE_INTINIB_TABLE)
    54 OMIT_INITIALIZE_EXCEPTION,1,,defined(OMIT_INITIALIZE_EXCEPTION)
     50USE_TSKINICTXB,true,bool,defined(USE_TSKINICTXB)
     51OMIT_INITIALIZE_INTERRUPT,true,bool,defined(OMIT_INITIALIZE_INTERRUPT)
     52USE_INHINIB_TABLE,true,bool,defined(USE_INHINIB_TABLE)
     53USE_INTINIB_TABLE,true,bool,defined(USE_INTINIB_TABLE)
     54OMIT_INITIALIZE_EXCEPTION,true,bool,defined(OMIT_INITIALIZE_EXCEPTION)
    5555DEFAULT_ISTK,,,defined(DEFAULT_ISTK)
    5656TARGET_TSKATR,,,defined(TARGET_TSKATR),0
     
    6363CHECK_STKSZ_ALIGN,,,defined(CHECK_STKSZ_ALIGN),1
    6464CHECK_INTPTR_ALIGN,,,defined(CHECK_INTPTR_ALIGN),1
    65 CHECK_INTPTR_NONNULL,1,,defined(CHECK_INTPTR_NONNULL)
     65CHECK_INTPTR_NONNULL,true,bool,defined(CHECK_INTPTR_NONNULL)
    6666CHECK_FUNC_ALIGN,,,defined(CHECK_FUNC_ALIGN),1
    67 CHECK_FUNC_NONNULL,1,,defined(CHECK_FUNC_NONNULL)
     67CHECK_FUNC_NONNULL,true,bool,defined(CHECK_FUNC_NONNULL)
    6868CHECK_STACK_ALIGN,,,defined(CHECK_STACK_ALIGN),1
    69 CHECK_STACK_NONNULL,1,,defined(CHECK_STACK_NONNULL)
     69CHECK_STACK_NONNULL,true,bool,defined(CHECK_STACK_NONNULL)
    7070CHECK_MPF_ALIGN,,,defined(CHECK_MPF_ALIGN),1
    71 CHECK_MPF_NONNULL,1,,defined(CHECK_MPF_NONNULL)
     71CHECK_MPF_NONNULL,true,bool,defined(CHECK_MPF_NONNULL)
    7272sizeof_void_ptr,sizeof(void*)
    7373sizeof_uint_t,sizeof(uint_t)
     
    7676sizeof_ID,sizeof(ID)
    7777sizeof_FP,sizeof(FP)
     78sizeof_INTNO,sizeof(INTNO)
    7879sizeof_INHNO,sizeof(INHNO)
    79 sizeof_INTNO,sizeof(INTNO)
    8080sizeof_EXCNO,sizeof(EXCNO)
     81sizeof_TASK,sizeof(TASK)
     82sizeof_TMEHDR,sizeof(TMEHDR)
     83sizeof_ISR,sizeof(ISR)
     84sizeof_INTHDR,sizeof(INTHDR)
     85sizeof_EXCHDR,sizeof(EXCHDR)
     86sizeof_INIRTN,sizeof(INIRTN)
     87sizeof_TERRTN,sizeof(TERRTN)
     88sizeof_NFYHDR,sizeof(NFYHDR)
    8189sizeof_TINIB,sizeof(TINIB)
    8290offsetof_TINIB_tskatr,"offsetof(TINIB,tskatr)"
  • asp3_wo_tecs/trunk/kernel/mempfix.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: mempfix.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: mempfix.trb 672 2016-03-05 15:33:08Z ertl-hiro $
    5656#
    5757
     
    6666
    6767  def prepare(key, params)
     68    # パラメータが省略された時のデフォルト値の設定
     69    params[:mpf] ||= "NULL"
     70    params[:mpfmb] ||= "NULL"
     71
    6872    # mpfatrが無効の場合(E_RSATR)[NGKI2225ï¼½
    6973    #(TA_TPRI以外のビットがセットされている場合)
     
    7276    end
    7377
    74     # blkcntが0以下の場合(E_PAR)[NGKI2229ï¼½
    75     if params[:blkcnt] <= 0
     78    # blkcntが0の場合(E_PAR)[NGKI2229ï¼½
     79    if params[:blkcnt] == 0
    7680      error_illegal_id("E_PAR", params, :blkcnt, :mpfid)
    7781    end
    7882
    79     # blkszが0以下の場合(E_PAR)[NGKI2230ï¼½
    80     if params[:blksz] <= 0
     83    # blkszが0の場合(E_PAR)[NGKI2230ï¼½
     84    if params[:blksz] == 0
    8185      error_illegal_id("E_PAR", params, :blksz, :mpfid)
    8286    end
     
    8488    # 固定長メモリプール領域
    8589    if params[:mpf] == "NULL"
    86       $kernelCfgC.add("static MPF_T _kernel_mpf_#{params[:mpfid]}" \
     90      mpfName = "_kernel_mpf_#{params[:mpfid]}"
     91      $kernelCfgC.add("static MPF_T #{mpfName}" \
    8792                                "[#{params[:blkcnt]} * COUNT_MPF_T(#{params[:blksz]})];")
     93      params[:mpfinib_mpf] = mpfName
     94    else
     95      params[:mpfinib_mpf] = "(void *)(#{params[:mpf]})"
    8896    end
    8997
    9098    # mpfmbがNULLでない場合(E_NOSPT)[ASPS0166ï¼½
    9199    if params[:mpfmb] != "NULL"
    92       error_illegal_id("E_PAR", params, :mpfmb, :mpfid)
     100      error_illegal_id("E_NOSPT", params, :mpfmb, :mpfid)
    93101    end
    94102
    95103    # 固定長メモリプール管理領域
    96     $kernelCfgC.add("static MPFMB _kernel_mpfmb_#{params[:mpfid]}" \
    97                                                                                                 "[#{params[:blkcnt]}];")
     104    mpfmbName = "_kernel_mpfmb_#{params[:mpfid]}"
     105    $kernelCfgC.add("static MPFMB #{mpfmbName}[#{params[:blkcnt]}];")
     106    params[:mpfinib_mpfmb] = mpfmbName
    98107  end
    99108
    100109  def generateInib(key, params)
    101     if params[:mpf] == "NULL"
    102       mpf = "_kernel_mpf_#{params[:mpfid]}"
    103     else
    104       mpf = "(void *)(#{params[:mpf]})"
    105     end
    106110    return("(#{params[:mpfatr]}), (#{params[:blkcnt]}), " \
    107                                         "ROUND_MPF_T(#{params[:blksz]}), #{mpf}, " \
    108                                         "_kernel_mpfmb_#{params[:mpfid]}")
     111                        "ROUND_MPF_T(#{params[:blksz]}), #{params[:mpfinib_mpf]}, " \
     112                        "#{params[:mpfinib_mpfmb]}")
    109113  end
    110114end
  • asp3_wo_tecs/trunk/kernel/mutex.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: mutex.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: mutex.trb 630 2016-02-14 11:30:17Z ertl-hiro $
    5656#
    5757
     
    7878      # ceilpriが未指定の場合はエラーとする
    7979      if params[:ceilpri].nil?
    80         error_api(params, "ceilpri must be specified" \
    81                                                         " in #{params[:apiname]} of #{param[:mtxid]}")
     80        error_api(params, "ceilpri must be specified in %apiname of %mtxid")
    8281
    8382      # (TMIN_TPRI <= ceilpri && ceilpri <= TMAX_TPRI)でない場合(E_PAR)
     
    9190      # ceilpriが指定されている場合は警告メッセージを出す
    9291      if !params[:ceilpri].nil?
    93         warning_api(params, "ceilpri `#{params[:ceilpri]}' is ignored" \
    94                                                                 " in #{params[:apiname]} of #{params[:mtxid]}")
     92        warning_api(params, "%%ceilpri is ignored in %apiname of %mtxid")
    9593      end
    9694      params[:ceilpri] = 0
  • asp3_wo_tecs/trunk/kernel/pridataq.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: pridataq.trb 588 2016-02-05 12:54:58Z ertl-hiro $
     55#   $Id: pridataq.trb 668 2016-03-03 13:57:53Z ertl-hiro $
    5656#
    5757
     
    6767
    6868  def prepare(key, params)
     69    # パラメータが省略された時のデフォルト値の設定
     70    params[:pdqmb] ||= "NULL"
     71
    6972    # pdqatrが無効の場合(E_RSATR)[NGKI1804ï¼½
    7073    #(TA_TPRI以外のビットがセットされている場合)
     
    8184    # pdqmbがNULLでない場合(E_NOSPT)[ASPS0142ï¼½
    8285    if params[:pdqmb] != "NULL"
    83       error_illegal_id("E_PAR", params, :pdqmb, :pdqid)
     86      error_illegal_id("E_NOSPT", params, :pdqmb, :pdqid)
    8487    end
    8588
     
    8790ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ç®¡ç†é ˜åŸŸ
    8891    if params[:pdqcnt] > 0
    89       $kernelCfgC.add("static PDQMB _kernel_pdqmb_#{params[:pdqid]}" \
    90                                                                                                 "[#{params[:pdqcnt]}];")
     92      pdqmbName = "_kernel_pdqmb_#{params[:pdqid]}"
     93      $kernelCfgC.add("static PDQMB #{pdqmbName}[#{params[:pdqcnt]}];")
     94      params[:pdqinib_pdqmb] = pdqmbName
     95    else
     96      params[:pdqinib_pdqmb] = "NULL"
    9197    end
    9298  end
    9399
    94100  def generateInib(key, params)
    95     if params[:pdqcnt] > 0
    96       pdqmb = "_kernel_pdqmb_#{params[:pdqid]}"
    97     else
    98       pdqmb = "NULL"
    99     end
    100101    return("(#{params[:pdqatr]}), (#{params[:pdqcnt]}), " \
    101                                                                         "(#{params[:maxdpri]}), #{pdqmb}")
     102                                "(#{params[:maxdpri]}), #{params[:pdqinib_pdqmb]}")
    102103  end
    103104end
  • asp3_wo_tecs/trunk/kernel/startup.c

    r302 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2005-2014 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: startup.c 181 2014-06-14 16:45:07Z ertl-hiro $
     55 *  $Id: startup.c 509 2016-01-12 06:06:14Z ertl-hiro $
    5656 */
    5757
  • asp3_wo_tecs/trunk/kernel/sys_manage.c

    r302 r306  
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: sys_manage.c 469 2015-12-30 02:38:47Z ertl-hiro $
     55 *  $Id: sys_manage.c 682 2016-03-11 13:52:39Z ertl-hiro $
    5656 */
    5757
     
    174174/*
    175175 *  タスクの優å
    176 ˆé †ä½ã®å›žè»¢
     176ˆé †ä½ã®å›žè»¢ï¼»NGKI3548ï¼½
    177177 */
    178178#ifdef TOPPERS_rot_rdq
     
    185185
    186186        LOG_ROT_RDQ_ENTER(tskpri);
    187         CHECK_UNL();
     187        CHECK_UNL();                                                            /*ï¼»NGKI2684ï¼½*/
    188188        if (tskpri == TPRI_SELF && !sense_context()) {
    189                 pri = p_runtsk->bpriority;
     189                pri = p_runtsk->bpriority;                              /*ï¼»NGKI2689ï¼½*/
    190190        }
    191191        else {
    192                 CHECK_PAR(VALID_TPRI(tskpri));
     192                CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI2685ï¼½*/
    193193                pri = INT_PRIORITY(tskpri);
    194194        }
     
    217217 *  実行状æ
    218218‹ã®ã‚¿ã‚¹ã‚¯IDの参ç
    219 §
     219§ï¼»NGKI3550ï¼½
    220220 */
    221221#ifdef TOPPERS_get_tid
     
    227227
    228228        LOG_GET_TID_ENTER(p_tskid);
    229         CHECK_UNL();
     229        CHECK_UNL();                                                            /*ï¼»NGKI2707ï¼½*/
    230230
    231231        lock_cpu();
     
    243243/*
    244244 *  実行できるタスクの数の参ç
    245 §
     245§ï¼»NGKI3623ï¼½
    246246 */
    247247#ifdef TOPPERS_get_lod
     
    255255
    256256        LOG_GET_LOD_ENTER(p_tskid, p_load);
    257         CHECK_TSKCTX_UNL();
     257        CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3624][NGKI3625ï¼½*/
    258258        if (tskpri == TPRI_SELF) {
    259                 pri = p_runtsk->bpriority;
     259                pri = p_runtsk->bpriority;                              /*ï¼»NGKI3631ï¼½*/
    260260        }
    261261        else {
    262                 CHECK_PAR(VALID_TPRI(tskpri));
     262                CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI3626ï¼½*/
    263263                pri = INT_PRIORITY(tskpri);
    264264        }
     
    285285 *  指定した優å
    286286ˆé †ä½ã®ã‚¿ã‚¹ã‚¯IDの参ç
    287 §
     287§ï¼»NGKI3641ï¼½
    288288 */
    289289#ifdef TOPPERS_get_nth
     
    298298
    299299        LOG_GET_NTH_ENTER(p_tskid, nth, p_tskid);
    300         CHECK_TSKCTX_UNL();
     300        CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3642][NGKI3643ï¼½*/
    301301        if (tskpri == TPRI_SELF) {
    302                 pri = p_runtsk->bpriority;
     302                pri = p_runtsk->bpriority;                              /*ï¼»NGKI3650ï¼½*/
    303303        }
    304304        else {
    305                 CHECK_PAR(VALID_TPRI(tskpri));
     305                CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI3644ï¼½*/
    306306                pri = INT_PRIORITY(tskpri);
    307307        }
     
    331331/*
    332332 *  CPUロック状æ
    333 ‹ã¸ã®é·ç§»
     333‹ã¸ã®é·ç§»ï¼»NGKI3538ï¼½
    334334 */
    335335#ifdef TOPPERS_loc_cpu
     
    342342        LOG_LOC_CPU_ENTER();
    343343
    344         if (!sense_lock()) {
    345                 lock_cpu();
     344        if (!sense_lock()) {                                            /*ï¼»NGKI2731ï¼½*/
     345                lock_cpu();                                                             /*ï¼»NGKI2730ï¼½*/
    346346        }
    347347        ercd = E_OK;
     
    355355/*
    356356 *  CPUロック状æ
    357 ‹ã®è§£é™¤
     357‹ã®è§£é™¤ï¼»NGKI3539ï¼½
    358358 *
    359359 *  CPUロック中は,ディスパッチがå¿
     
    373373        LOG_UNL_CPU_ENTER();
    374374
    375         if (sense_lock()) {
    376                 unlock_cpu();
     375        if (sense_lock()) {                                                     /*ï¼»NGKI2738ï¼½*/
     376                unlock_cpu();                                                   /*ï¼»NGKI2737ï¼½*/
    377377        }
    378378        ercd = E_OK;
     
    385385
    386386/*
    387  *  ディスパッチの禁止
     387 *  ディスパッチの禁止[NGKI2740ï¼½
    388388 */
    389389#ifdef TOPPERS_dis_dsp
     
    395395
    396396        LOG_DIS_DSP_ENTER();
    397         CHECK_TSKCTX_UNL();
     397        CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI2741][NGKI2742ï¼½*/
    398398
    399399        lock_cpu();
     
    411411
    412412/*
    413  *  ディスパッチの許可
     413 *  ディスパッチの許可[NGKI2746ï¼½
    414414 */
    415415#ifdef TOPPERS_ena_dsp
     
    421421
    422422        LOG_ENA_DSP_ENTER();
    423         CHECK_TSKCTX_UNL();
     423        CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI2747][NGKI2748ï¼½*/
    424424
    425425        lock_cpu();
     
    454454/*
    455455 *  コンテキストの参ç
    456 §
     456§ï¼»NGKI2752ï¼½
    457457 */
    458458#ifdef TOPPERS_sns_ctx
     
    474474 *  CPUロック状æ
    475475‹ã®å‚ç
    476 §
     476§ï¼»NGKI2754ï¼½
    477477 */
    478478#ifdef TOPPERS_sns_loc
     
    494494 *  ディスパッチ禁止状æ
    495495‹ã®å‚ç
    496 §
     496§ï¼»NGKI2756ï¼½
    497497 */
    498498#ifdef TOPPERS_sns_dsp
     
    514514 *  ディスパッチ保留状æ
    515515‹ã®å‚ç
    516 §
     516§ï¼»NGKI2758ï¼½
    517517 */
    518518#ifdef TOPPERS_sns_dpn
     
    534534 *  カーネル非動作状æ
    535535‹ã®å‚ç
    536 §
     536§ï¼»NGKI2760ï¼½
    537537 */
    538538#ifdef TOPPERS_sns_ker
  • asp3_wo_tecs/trunk/kernel/task.trb

    r305 r306  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: task.trb 596 2016-02-06 17:08:56Z ertl-hiro $
     55#   $Id: task.trb 668 2016-03-03 13:57:53Z ertl-hiro $
    5656#
    5757
     
    6666
    6767  def prepare(key, params)
     68    # パラメータが省略された時のデフォルト値の設定
     69    params[:stk] ||= "NULL"
     70
    6871    # tskatrが無効の場合(E_RSATR)[NGKI1028ï¼½
    6972    #(TA_ACT,TA_NOACTQUE,TARGET_TSKATR以外のビットがセットされている場合)
     
    8588    # スタック領域の設定[NGKI1041ï¼½
    8689    if params[:stk] == "NULL"
    87       params[:tinib_stksz] = AllocStack("_kernel_stack_#{params[:tskid]}", \
    88                                                                                                                         params[:stksz])
    89       params[:tinib_stk] = "_kernel_stack_#{params[:tskid]}"
     90      # スタック領域の生成[NGKI1049ï¼½
     91      stkName = "_kernel_stack_#{params[:tskid]}"
     92      params[:tinib_stksz] = AllocStack(stkName, params[:stksz])
     93      params[:tinib_stk] = stkName
    9094    else
    9195      # stkszがスタック領域のサイズとして正しくない場合[NGKI1056ï¼½
     
    100104
    101105  def generateInib(key, params)
    102     if $USE_TSKINICTXB == 1
     106    if $USE_TSKINICTXB
    103107      tskinictxb = GenerateTskinictxb(key, params)
    104108    else
  • asp3_wo_tecs/trunk/kernel/time_event.c

    r305 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2005-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: time_event.c 451 2015-08-14 15:29:07Z ertl-hiro $
     55 *  $Id: time_event.c 532 2016-01-15 14:48:04Z ertl-hiro $
    5656 */
    5757
  • asp3_wo_tecs/trunk/sample/Makefile

    r305 r306  
    208208CFG_OBJS := $(CFG_ASMOBJS) $(CFG_COBJS)
    209209CFG2_OUT_SRCS := kernel_cfg.h kernel_cfg.c $(CFG2_OUT_SRCS)
    210 CFG_CFLAGS := $(CFG_CFLAGS)
     210CFG_CFLAGS := -DTOPPERS_CB_TYPE_ONLY $(CFG_CFLAGS)
    211211
    212212#
     
    272272ALL_OBJS = $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    273273                                                                                        $(END_OBJS) $(HIDDEN_OBJS)
     274ALL_LIBS = -lkernel $(LIBS)
    274275ifdef KERNEL_LIB
    275         ALL_LIBS = -lkernel $(LIBS)
    276276        LIBS_DEP = $(KERNEL_LIB)/libkernel.a $(filter %.a,$(LIBS))
    277277        OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L$(KERNEL_LIB)
    278278        REALCLEAN_FILES := libkernel.a $(REALCLEAN_FILES)
    279279else
    280         ALL_LIBS = libkernel.a $(LIBS)
    281280        LIBS_DEP = libkernel.a $(filter %.a,$(LIBS))
     281        OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L.
    282282endif
    283283
  • asp3_wo_tecs/trunk/sample/sample1.c

    r302 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2004-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2004-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: sample1.c 346 2015-07-18 02:12:08Z ertl-hiro $
     55 *  $Id: sample1.c 711 2016-03-29 14:45:54Z ertl-hiro $
    5656 */
    5757
     
    237237
    238238/*
     239 *  割込みハンドラ
     240 */
     241#ifdef INTNO1
     242
     243void intno1_isr(intptr_t exinf)
     244{
     245        intno1_clear();
     246        SVC_PERROR(rot_rdq(HIGH_PRIORITY));
     247        SVC_PERROR(rot_rdq(MID_PRIORITY));
     248        SVC_PERROR(rot_rdq(LOW_PRIORITY));
     249}
     250
     251#endif /* INTNO1 */
     252
     253/*
    239254 *  CPU例外ハンドラ
    240255 */
  • asp3_wo_tecs/trunk/sample/sample1.cfg

    r304 r306  
    1717CRE_CYC(CYCHDR1, { TA_NULL, { TNFY_HANDLER, 0, cyclic_handler }, 2000000, 0 });
    1818CRE_ALM(ALMHDR1, { TA_NULL, { TNFY_HANDLER, 0, alarm_handler }});
     19#ifdef INTNO1
     20CFG_INT(INTNO1, { INTNO1_INTATR, INTNO1_INTPRI });
     21CRE_ISR(INTNO1_ISR, { TA_NULL, 0, INTNO1, intno1_isr, 1 });
     22#endif /* INTNO1 */
    1923#ifdef CPUEXC1
    2024DEF_EXC(CPUEXC1, { TA_NULL, cpuexc_handler });
  • asp3_wo_tecs/trunk/sample/sample1.h

    r302 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2004-2014 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2004-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: sample1.h 286 2014-11-29 07:51:11Z ertl-hiro $
     55 *  $Id: sample1.h 705 2016-03-29 14:16:41Z ertl-hiro $
    5656 */
    5757
     
    108108extern void     main_task(intptr_t exinf);
    109109extern void exc_task(intptr_t exinf);
     110#ifdef INTNO1
     111extern void intno1_isr(intptr_t exinf);
     112#endif /* INTNO1 */
    110113#ifdef CPUEXC1
    111114extern void     cpuexc_handler(void *p_excinf);
  • asp3_wo_tecs/trunk/syssvc/histogram.h

    r305 r306  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: histogram.h 506 2016-01-12 01:46:49Z ertl-hiro $
     52 *  $Id: histogram.h 509 2016-01-12 06:06:14Z ertl-hiro $
    5353 */
    5454
  • asp3_wo_tecs/trunk/syssvc/serial.h

    r302 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2004-2011 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2004-2015 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
  • asp3_wo_tecs/trunk/syssvc/test_svc.h

    r302 r306  
    6666
    6767#include <kernel.h>
    68 
    69 /*
    70  *  ターゲット依存の定義
    71  */
    7268#include "target_test.h"
    7369
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/Makefile.target

    r304 r306  
    22#               Makefileのターゲット依存部(CT11MPcore用)
    33#
    4 #  $Id: Makefile.target 504 2016-01-12 01:19:55Z ertl-hiro $
     4#  $Id: Makefile.target 572 2016-02-01 14:40:09Z ertl-hiro $
    55#
    66
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/ct11mpcore.ld

    r302 r306  
    11/*
    2  *  $Id: ct11mpcore.ld 362 2015-07-26 11:29:15Z ertl-hiro $
     2 *  $Id: ct11mpcore.ld 679 2016-03-07 07:14:20Z ertl-hiro $
    33 */
    44
     
    1313        .text ALIGN(4) : {
    1414                __start_text = .;
    15                 *(vector)
     15                *(.vector)
    1616                *(.text)
    1717                *(.glue_7t)
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/target_check.trb

    r304 r306  
    1 #
     1# -*- coding: utf-8 -*-
     2#
    23#               ãƒ‘ス3の生成スクリプトのターゲット依存部(CT11MPCore用)
    3 #
     4#
     5#  $Id: target_check.trb 745 2016-04-10 17:00:12Z ertl-hiro $
     6#
    47
    5 # 
     8#
    69#  生成スクリプトのコア依存部(チップ依存部は飛ばす)
    7 # 
     10#
    811IncludeTrb("core_check.trb")
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/target_kernel.trb

    r304 r306  
    1 #
     1# -*- coding: utf-8 -*-
     2#
    23#               ãƒ‘ス2の生成スクリプトのターゲット依存部(CT11MPCore用)
    3 # 
    4 #  $Id: target_kernel.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     4#
     5#  $Id: target_kernel.trb 745 2016-04-10 17:00:12Z ertl-hiro $
    56#
    67
    7 # 
     8#
    89#  使用できる割込み番号とそれに対応する割込みハンドラ番号
    9 # 
     10#
    1011$INTNO_VALID = [ *(0..47) ]
    1112$INHNO_VALID = $INTNO_VALID
    1213
    13 # 
     14#
    1415#  生成スクリプトのコア依存部(チップ依存部は飛ばす)
    15 # 
     16#
    1617IncludeTrb("core_kernel.trb")
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/target_kernel_impl.c

    r302 r306  
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: target_kernel_impl.c 365 2015-07-26 13:18:44Z ertl-hiro $
     53 *  $Id: target_kernel_impl.c 509 2016-01-12 06:06:14Z ertl-hiro $
    5454 */
    5555
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/target_kernel_impl.h

    r305 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2006-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: target_kernel_impl.h 397 2015-08-02 01:44:43Z ertl-hiro $
     55 *  $Id: target_kernel_impl.h 704 2016-03-29 12:27:19Z ertl-hiro $
    5656 */
    5757
     
    6666#define TOPPERS_TARGET_KERNEL_IMPL_H
    6767
     68/*
     69 *  ターゲットのハードウェア資源の定義
     70 */
    6871#include "ct11mpcore.h"
    6972
     
    103106ちのための定義(本来はSILのターゲット依存部)
    104107 */
    105 #define SIL_DLY_TIM1    20
    106 #define SIL_DLY_TIM2    3
     108#define SIL_DLY_TIM1    26
     109#define SIL_DLY_TIM2    2
    107110
    108111/*
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/target_stddef.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: target_stddef.h 362 2015-07-26 11:29:15Z ertl-hiro $
     52 *  $Id: target_stddef.h 509 2016-01-12 06:06:14Z ertl-hiro $
    5353 */
    5454
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/target_syssvc.h

    r302 r306  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2005-2015 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: target_syssvc.h 362 2015-07-26 11:29:15Z ertl-hiro $
     55 *  $Id: target_syssvc.h 698 2016-03-26 08:48:12Z ertl-hiro $
    5656 */
    5757
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/target_test.h

    r302 r306  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: target_test.h 362 2015-07-26 11:29:15Z ertl-hiro $
     53 *  $Id: target_test.h 736 2016-04-04 23:50:03Z ertl-hiro $
    5454 */
    5555
     
    6262
    6363/*
     64 *  テストプログラムで使用する時間パラメータに関する定義
     65 */
     66#ifdef TOPPERS_USE_QEMU
     67#define TEST_TIME_CP    1000U
     68#endif /* TOPPERS_USE_QEMU */
     69
     70/*
    6471 *  コアでå
    6572±é€šãªå®šç¾©ï¼ˆãƒãƒƒãƒ—依存部は飛ばす)
     
    6774#include "core_test.h"
    6875
    69 /*
    70  *  テストプログラムの動作パラメータの定義
    71  */
    72 #ifdef TOPPERS_USE_QEMU
    73 #define ALM1_RELTIM             2000U           /* アラームハンドラ1に仕掛ける相対時間 */
    74 #endif /* TOPPERS_USE_QEMU */
    75 
    7676#endif /* TOPPERS_TARGET_TEST_H */
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/target_timer.h

    r302 r306  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: target_timer.h 458 2015-08-21 14:59:09Z ertl-hiro $
     53 *  $Id: target_timer.h 742 2016-04-07 13:11:22Z ertl-hiro $
    5454 */
    5555
     
    9595#define INHNO_OVRTIMER          OVRTIMER_TIMER_IRQNO    /* 割込みハンドラ番号 */
    9696#define INTNO_OVRTIMER          OVRTIMER_TIMER_IRQNO    /* 割込み番号 */
    97 #define INTPRI_OVRTIMER         (TMAX_INTPRI - 1)               /* 割込み優å
     97#define INTPRI_OVRTIMER         TMAX_INTPRI                             /* 割込み優å
    9898ˆåº¦ */
    9999#define INTATR_OVRTIMER         TA_NULL                                 /* 割込み属性 */
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/target_user.txt

    r302 r306  
    11
    2                 TOPPERS/ASPカーネル
    3                 CT11MPcore依存部 ユーザーズマニュアル
    4 
    5                 対応バージョン: Release 3.0.0
    6                 最終更新: 2015å¹´8月9日
    7 
    8 ã“のドキュメントは,TOPPERS/ASPカーネルのCT11MPcoreターゲット依存部を使
    9 ç”¨ã™ã‚‹ãŸã‚ã«å¿
     2                TOPPERS/ASP3カーネル
     3                CT11MPCore依存部 ユーザーズマニュアル
     4
     5                対応バージョン: Release 3.1
     6                最終更新: 2016å¹´1月30日
     7
     8このドキュメントは,TOPPERS/ASP3カーネルのCT11MPCoreターゲット依存部を
     9使用するためにå¿
    1010要な事é 
    1111を説明するものである.
     
    1616     Advanced Standard Profile Kernel
    1717
    18  Copyright (C) 2008-2015 by Embedded and Real-Time Systems Laboratory
     18 Copyright (C) 2008-2016 by Embedded and Real-Time Systems Laboratory
    1919             Graduate School of Information Science, Nagoya Univ., JAPAN
    2020 
     
    6363 ã®è²¬ä»»ã‚’負わない.
    6464 
    65  $Id: target_user.txt 437 2015-08-09 00:36:08Z ertl-hiro $
     65 $Id: target_user.txt 752 2016-05-14 15:06:22Z ertl-hiro $
    6666----------------------------------------------------------------------
    6767
    6868○目次
    6969
    70 ï¼‘.CT11MPcoreターゲット依存部の概要
     701.CT11MPCoreターゲット依存部の概要
    7171        1.1 対応するターゲットシステムとターゲット略称
    7272        1.2 ターゲット依存部の構成
     
    9292
    9393
    94 ï¼‘.CT11MPcoreターゲット依存部の概要
    95 
    96 CT11MPcoreターゲット依存部は,TOPPERS/ASPカーネルを,ARM11 MPCoreのテス
    97 ãƒˆãƒãƒƒãƒ—を搭載したCoreTile(CT11MPCore)を,RealView Emulation
     941.CT11MPCoreターゲット依存部の概要
     95
     96CT11MPCoreターゲット依存部は,TOPPERS/ASP3カーネルを,ARM11 MPCoreのテ
     97ストチップを搭載したCoreTile(CT11MPCore)を,RealView Emulation
    9898Baseboard上に実è£
    9999したターゲットシステムで動作させる環境を構築するための
     
    1071071.1 対応するターゲットシステムとターゲット略称
    108108
    109 CT11MPcoreターゲット依存部の動作確認は,Qemuを用いて行っている.動作確
     109CT11MPCoreターゲット依存部の動作確認は,Qemuを用いて行っている.動作確
    110110認を行ったQemuのバージョンは次の通り.
    111111
    112112        qemu-system-arm         version 2.1.0
    113113
    114 Qemu上でASPカーネルを実行するためのコマンドは次の通り.
     114Qemu上でASP3カーネルを実行するためのコマンドは次の通り.
    115115
    116116        qemu-system-arm -M realview-eb-mpcore -semihosting -m 128M -smp 1 \
     
    1251251.2 ターゲット依存部の構成
    126126
    127 CT11MPcoreターゲット依存部の使用するターゲット依存部(targetディレクト
     127CT11MPCoreターゲット依存部の使用するターゲット依存部(targetディレクト
    128128リ)およびターゲット依存部のå
    129129±é€šéƒ¨ï¼ˆarchディレクトリ)のディレクトリは
     
    131131
    132132        target/
    133                 ct11mpcore_gcc/         CT11MPcoreターゲット依存部
     133                ct11mpcore_gcc/         CT11MPCoreターゲット依存部
    134134
    135135        arch/
    136136                arm_gcc/common/         ARMコア依存部
    137137                arm_gcc/mpcore/         MPCoreチップ依存部
     138                arm_gcc/doc/            ARM依存部に関するドキュメント
    138139                gcc/                            GCC開発環境依存部
    139                 logtrace/                       ãƒˆãƒ¬ãƒ¼ã‚¹ãƒ­ã‚°è¨˜éŒ²ã®ã‚µãƒ³ãƒ—ルコード
     140                tracelog/                       ãƒˆãƒ¬ãƒ¼ã‚¹ãƒ­ã‚°è¨˜éŒ²ã®ã‚µãƒ³ãƒ—ルコード
    140141
    1411421.3 依存している個別パッケージのバージョン番号
    142143
    143 Mac OS Xターゲット依存部(バージョン 3.B.0)の個別パッケージが依存して
    144 ã„る個別パッケージと,動作確認を行ったバージョンは次の通り.
     144CT11MPCoreターゲット依存部(バージョン 3.0.0)の個別パッケージが依存し
     145ている個別パッケージと,動作確認を行ったバージョンは次の通り.
    145146
    146147        個別パッケージの名称  バージョン 個別パッケージファイル名
     
    186187の規定
    187188
    188 CT11MPcoreターゲット依存部は,ARMコア依存部とMPCoreチップ依存部を用いて
     189CT11MPCoreターゲット依存部は,ARMコア依存部とMPCoreチップ依存部を用いて
    189190実è£
    190 ã•ã‚Œã¦ã„る.ここでは,ARMコア依存部およびMPCoreチップ依存部と異なる,
    191 ãªã„しは,それらで規定されていない事é 
     191されている.ARMコア依存部およびMPCoreチップ依存部におけるターゲット
     192定義事é 
     193の規定については,「ARM依存部 ユーザーズマニュアル」を参ç
     194§ã™ã‚‹
     195こと.
     196
     197以下では,ARMコア依存部およびMPCoreチップ依存部と異なる,ないしは,それ
     198らで規定されていない事é 
    192199について説明する.
    193200
     
    195202ˆåº¦ã¨å‰²è¾¼ã¿ç•ªå·
    196203
    197 CT11MPCoreの割込みコントローラ(Distributed Interrupt COntroller)は,
     204CT11MPCoreの割込みコントローラ(Distributed Interrupt Controller)は,
    19820516レベルの割込み優å
    199206ˆåº¦ã‚’サポートしている.そのため,割込み優å
     
    2382453.1 タイマドライバ
    239246
    240 é«˜åˆ†è§£èƒ½ã‚¿ã‚¤ãƒžã¯ï¼ŒMPCoreがコア毎に持つタイマとウォッチドッグを使用して
    241 å®Ÿç¾ã—ている.å
    242 ·ä½“的には,ウォッチドッグを現在時刻の管理のために用い,
    243 ã‚¿ã‚¤ãƒžã‚’相対時間割込みの発生のために用いている.そのため,これらのタイ
    244 ãƒžã‚’別の目的で使用することはできない.
     247高分解能タイマは,MPCoreがコア毎に持つプライベートタイマとプライベート
     248ウォッチドッグを使用して実現している.å
     249·ä½“的には,ウォッチドッグを現在
     250時刻の管理のために用い,タイマを相対時間割込みの発生のために用いている.
     251そのため,これらのタイマを別の目的で使用することはできない.
    245252
    246253また,オーバランハンドラ機能をサポートする場合には,RealView Emulation
     
    256263されている4チャンネルのUARTのå†
    257264の1つ(どの1つを用いるかは,コ
    258 ã‚¢æ¯Žã«ç•°ãªã‚‹ï¼‰ã‚’用いて,シリアルI/Oポートを1つのみサポートしている.
    259 
    260 ç”¨ã„ã‚‹UARTを変更する場合には,target_syssvc.hを修正するå¿
    261 è¦ãŒã‚る.
     265ア毎に異なる)を用いて,SIOポートを1つのみサポートしている.
     266
     267用いるSIOポートを変更する場合には,tSIOPortCT11MPCore.cdlを修正するå¿
     268要
     269がある.
    262270
    2632713.3 システムログの低レベル出力
     
    266274るのと同じUARTを用い,ポーリングにより文字を出力する方法で実現している.
    267275
    268 ç”¨ã„ã‚‹UARTを変更する場合には,target_kernel_impl.hを修正するå¿
     276用いるSIOポートを変更する場合には,target.cdlを修正するå¿
    269277要がある.
    270278
     
    2742824.1 システム構築
    275283
    276 CT11MPcore向けの構築する手順は,「TOPPERS/ASPカーネル ユーザーズマニュ
    277 ã‚¢ãƒ«ã€ã®ã€Œï¼“.クイックスタートガイド」の章に記述されている通りである.
    278 Qemuで実行する場合には,コンパイルオプションに「-DTOPPERS_USE_QEMU」を
    279 è¿½åŠ ã™ã‚‹ã“と.
     284CT11MPCore用のASP3カーネルを構築する手順は,「TOPPERS/ASP3カーネル ユー
     285ザーズマニュアル」の「3.クイックスタートガイド」の章に記述されている
     286通りである.Qemuで実行する場合には,コンパイルオプションに
     287「-DTOPPERS_USE_QEMU」を追加すること.
    280288
    2812894.2 Qemuで実行する場合のデバッガの使用方法
     
    3113195.1 ディレクトリ構成・ファイル構成
    312320
    313         target/macosx_xcode/
     321        target/ct11mpcore_gcc/
    314322                E_PACKAGE                               ç°¡æ˜“パッケージのファイルリスト
    315323                MANIFEST                                個別パッケージのファイルリスト
     
    317325                ct11mpcore.h                    ターゲットのハードウェア資源の定義
    318326                ct11mpcore.ld                   æ¨™æº–のリンカスクリプト
    319                 target.tf                               kernel.tfのターゲット依存部
     327                tPutLogCT11MPCore.c             ã‚·ã‚¹ãƒ†ãƒ ãƒ­ã‚°ã®ä½Žãƒ¬ãƒ™ãƒ«å‡ºåŠ›
     328                tPutLogCT11MPCore.cdl   ã‚·ã‚¹ãƒ†ãƒ ãƒ­ã‚°ã®ä½Žãƒ¬ãƒ™ãƒ«å‡ºåŠ›ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆè¨˜è¿°
     329                tSIOPortCT11MPCore.cdl  シリアルインタフェースドライバのターゲット
     330                                                                依存部(CT11MPCore用)のコンポーネント記述
     331                tSIOPortCT11MPCoreMain_inline.h         ã‚·ãƒªã‚¢ãƒ«ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ãƒ‰ãƒ©ã‚¤ãƒ
     332                                                                のターゲット依存部(CT11MPCore用)
     333                target.cdl                              コンポーネント記述ファイルのターゲット依存部
    320334                target_cfg1_out.h               cfg1_out.cのリンクにå¿
    321335要なスタブの定義
    322                 target_check.tf                 kernel_check.tfのターゲット依存部
     336                target_kernel.cfg               ã‚«ãƒ¼ãƒãƒ«å®Ÿè£
     337のコンフィギュレーションファイル
    323338                target_kernel.h                 kernel.hのターゲット依存部
     339                target_kernel.trb               kernel.trbのターゲット依存部
     340                target_check.trb                kernel_check.trbのターゲット依存部
    324341                target_kernel_impl.c    カーネル実è£
    325 ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨é–¢é€£ã®å®šç¾©
     342のターゲット依存部
    326343                target_kernel_impl.h    カーネル実è£
    327 ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨
     344のターゲット依存部に関する定義
    328345                target_rename.def               ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨ã®å†
    329346部識別名のリネーム定義
    330347                target_rename.h                 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨ã®å†
    331348部識別名のリネーム
    332                 target_serial.c                 serial.cのターゲット依存部
    333                 target_serial.cfg               serial.cfgのターゲット依存部
    334                 target_serial.h                 serial.hのターゲット依存部
    335349                target_sil.h                    sil.hのターゲット依存部
    336350                target_stddef.h                 t_stddef.hのターゲット依存部
    337351                target_syssvc.h                 ã‚·ã‚¹ãƒ†ãƒ ã‚µãƒ¼ãƒ“スのターゲット依存定義
    338352                target_test.h                   ãƒ†ã‚¹ãƒˆãƒ—ログラムのターゲット依存定義
     353                target_timer.c                  タイマドライバ
    339354                target_timer.cfg                タイマドライバのコンフィギュレーションファイル
    340355                target_timer.h                  タイマドライバを使用するための定義
     
    343358                target_user.txt                 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚ºãƒžãƒ‹ãƒ¥ã‚¢ãƒ«
    344359
    345 6.2 バージョン履歴
     3605.2 バージョン履歴
    346361
    347362        2015å¹´8月5日 Release 3.B.0           æœ€åˆã®ãƒªãƒªãƒ¼ã‚¹
    348         2015å¹´ 月 日 Release 3.0.0           æœ€åˆã®ä¸€èˆ¬å
     363        2016å¹´2月8日 Release 3.0.0           æœ€åˆã®ä¸€èˆ¬å
    349364¬é–‹
     365        2016å¹´5月15日        Release 3.1.0
    350366
    351367以上
  • asp3_wo_tecs/trunk/target/dummy_gcc/Makefile.target

    r304 r306  
    22#               Makefile のターゲット依存部(ダミーターゲット用)
    33#
    4 #  $Id: Makefile.target 504 2016-01-12 01:19:55Z ertl-hiro $
     4#  $Id: Makefile.target 572 2016-02-01 14:40:09Z ertl-hiro $
    55#
    66
  • asp3_wo_tecs/trunk/target/dummy_gcc/dummy.h

    r305 r306  
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: dummy.h 238 2014-09-28 19:19:25Z ertl-hiro $
     53 *  $Id: dummy.h 526 2016-01-14 11:43:26Z ertl-hiro $
    5454 */
    5555
  • asp3_wo_tecs/trunk/target/dummy_gcc/target_kernel_impl.c

    r305 r306  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2013-2015 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2013-2016 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: target_kernel_impl.c 374 2015-07-30 22:01:54Z ertl-hiro $
     53 *  $Id: target_kernel_impl.c 515 2016-01-13 02:21:39Z ertl-hiro $
    5454 */
    5555
  • asp3_wo_tecs/trunk/target/dummy_gcc/target_kernel_impl.h

    r305 r306  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2013-2015 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2013-2016 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: target_kernel_impl.h 471 2015-12-30 10:03:16Z ertl-hiro $
     53 *  $Id: target_kernel_impl.h 515 2016-01-13 02:21:39Z ertl-hiro $
    5454 */
    5555
  • asp3_wo_tecs/trunk/target/dummy_gcc/target_stddef.h

    r302 r306  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: target_stddef.h 293 2014-11-30 09:27:54Z ertl-hiro $
     52 *  $Id: target_stddef.h 509 2016-01-12 06:06:14Z ertl-hiro $
    5353 */
    5454
  • asp3_wo_tecs/trunk/target/dummy_gcc/target_syssvc.h

    r302 r306  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2013-2014 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2013-2016 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: target_syssvc.h 293 2014-11-30 09:27:54Z ertl-hiro $
     53 *  $Id: target_syssvc.h 524 2016-01-14 11:01:56Z ertl-hiro $
    5454 */
    5555
  • asp3_wo_tecs/trunk/target/nucleo_f401re_gcc/target_kernel_impl.c

    r303 r306  
    9797
    9898/*
    99  *  cfgのpass3でエラーになるないように
     99 *  cfgのpass3でエラーにならないように
    100100 */
    101101extern const ID _kernel_tmax_tskid;
  • asp3_wo_tecs/trunk/test/MANIFEST

    r304 r306  
    5151test_dlynse.cfg
    5252test_dlynse.h
     53test_dtq1.c
     54test_dtq1.cfg
     55test_dtq1.h
    5356test_flg1.c
    5457test_flg1.cfg
     
    107110test_tmevt1.cfg
    108111test_tmevt1.h
     112testexec.rb
  • asp3_wo_tecs/trunk/test/bit_kernel.c

    r305 r306  
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: bit_kernel.c 554 2016-01-17 13:21:59Z ertl-hiro $
     53 *  $Id: bit_kernel.c 739 2016-04-05 15:09:40Z ertl-hiro $
    5454 */
    5555
     
    195195
    196196        /*
    197          *  enadspとp_schedtskの整合性の検査
    198          */
    199         if (enadsp) {
     197         *  dspflgとp_schedtskの整合性の検査
     198         */
     199        if (dspflg) {
    200200                if (primap_empty()) {
    201201                        if (p_schedtsk != NULL) {
  • asp3_wo_tecs/trunk/test/test_cpuexc.cfg

    r304 r306  
    22 *              CPU例外処理のテスト(1)〜(10)のシステムコンフィギュレーションファイル
    33 *
    4  *  $Id: test_cpuexc.cfg 404 2015-08-02 21:56:21Z ertl-hiro $
     4 *  $Id: test_cpuexc.cfg 571 2016-02-01 14:29:07Z ertl-hiro $
    55 */
    6 INCLUDE("syssvc/syslog.cfg");
    7 INCLUDE("syssvc/banner.cfg");
    8 INCLUDE("syssvc/serial.cfg");
     6INCLUDE("tecsgen.cfg");
    97
    108#include "test_cpuexc.h"
  • asp3_wo_tecs/trunk/test/test_cpuexc.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_cpuexc.h 404 2015-08-02 21:56:21Z ertl-hiro $
     52 *  $Id: test_cpuexc.h 737 2016-04-05 13:11:23Z ertl-hiro $
    5353 */
    5454
     
    8080#endif /* STACK_SIZE */
    8181
     82#ifndef TEST_TIME_CP
     83#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     84報の出力時間 */
     85#endif /* TEST_TIME_CP */
     86
     87#ifndef TEST_TIME_PROC
     88#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     89#endif /* TEST_TIME_PROC */
     90
    8291/*
    8392 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_cpuexc1.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_cpuexc1.c 346 2015-07-18 02:12:08Z ertl-hiro $
     52 *  $Id: test_cpuexc1.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    117117 *      2:      state(false, false, true, true, false)
    118118 *              ipm(TIPM_ENAALL)
    119  *              sta_alm(ALM1, 10000U)
     119 *              sta_alm(ALM1, TEST_TIME_PROC) ... ALM1が実行開始するまで
    120120 *              DO(while(!alm1_flag))
    121121 *      == ALM1 ==
     
    223223        check_ipm(TIPM_ENAALL);
    224224
    225         ercd = sta_alm(ALM1, 10000U);
     225        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    226226        check_ercd(ercd, E_OK);
    227227
  • asp3_wo_tecs/trunk/test/test_cpuexc2.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_cpuexc2.c 346 2015-07-18 02:12:08Z ertl-hiro $
     52 *  $Id: test_cpuexc2.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    111111 *      2:      state(false, false, true, true, false)
    112112 *              ipm(TIPM_ENAALL)
    113  *              sta_alm(ALM1, 10000U)
     113 *              sta_alm(ALM1, TEST_TIME_PROC) ... ALM1が実行開始するまで
    114114 *              DO(while(!alm1_flag))
    115115 *      == ALM1 ==
     
    217217        check_ipm(TIPM_ENAALL);
    218218
    219         ercd = sta_alm(ALM1, 10000U);
     219        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    220220        check_ercd(ercd, E_OK);
    221221
  • asp3_wo_tecs/trunk/test/test_cpuexc3.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_cpuexc3.c 346 2015-07-18 02:12:08Z ertl-hiro $
     52 *  $Id: test_cpuexc3.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    110110 *      2:      state(false, false, true, true, false)
    111111 *              ipm(TIPM_ENAALL)
    112  *              sta_alm(ALM1, 10000U)
     112 *              sta_alm(ALM1, TEST_TIME_PROC) ... ALM1が実行開始するまで
    113113 *              DO(while(!alm1_flag))
    114114 *      == ALM1 ==
     
    211211        check_ipm(TIPM_ENAALL);
    212212
    213         ercd = sta_alm(ALM1, 10000U);
     213        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    214214        check_ercd(ercd, E_OK);
    215215
  • asp3_wo_tecs/trunk/test/test_dlynse.c

    r302 r306  
    55 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    66 *                              Toyohashi Univ. of Technology, JAPAN
    7  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     7 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
     
    5252 *  の責任を負わない.
    5353 *
    54  *  $Id: test_dlynse.c 482 2016-01-03 13:12:51Z ertl-hiro $
     54 *  $Id: test_dlynse.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5555 */
    5656
     
    7575#include "target_kernel_impl.h"
    7676
    77 #define NO_LOOP         ULONG_C(1000000)
     77#define NO_LOOP         1000000UL
    7878
    79 SYSTIM  empty_time;
     79HRTCNT  empty_time;
    8080
    8181static void
     
    9090        etime = fch_hrt();
    9191        empty_time = etime - stime;
     92#ifdef TCYC_HRTCNT
     93        if (etime < stime) {
     94                empty_time += TCYC_HRTCNT;
     95        }
     96#endif /* TCYC_HRTCNT */
    9297        syslog(LOG_NOTICE, "empty loop: %u", empty_time);
    9398        (void) syslog_fls_log();
     
    97102test_dly_nse(ulong_t dlytim)
    98103{
    99         HRTCNT  stime, etime;
     104        HRTCNT  stime, etime, diff;
    100105        ulong_t delay_time;
    101106        volatile ulong_t        i;
     
    106111        }
    107112        etime = fch_hrt();
    108         delay_time = ((etime - stime) - empty_time) / 1000U;
     113        diff = etime - stime;
     114#ifdef TCYC_HRTCNT
     115        if (etime < stime) {
     116                diff += TCYC_HRTCNT;
     117        }
     118#endif /* TCYC_HRTCNT */
     119        delay_time = (diff - empty_time) / 1000U;
    109120        syslog(LOG_NOTICE, "sil_dly_nse(%lu): %lu %s", dlytim, delay_time,
    110121                                                                        delay_time >= dlytim ? "OK" : "NG");
     
    127138        test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 4);
    128139        test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 5);
     140        test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 6);
     141        test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 7);
     142        test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 8);
     143        test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 9);
    129144        test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 10);
    130145        test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 20);
  • asp3_wo_tecs/trunk/test/test_dtq1.c

    r305 r306  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_dtq1.c 602 2016-02-07 12:22:32Z ertl-hiro $
     52 *  $Id: test_dtq1.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    302302 *      == TASK3(続き)==
    303303 *      19:     assert(data == DATA1)
    304  *      20:     sta_alm(ALM1, 10000U)
     304 *      20:     sta_alm(ALM1, TEST_TIME_CP) ... ALM1が実行開始するまで
    305305 *      21:     rcv_dtq(DTQ2, &data)
    306306 *      == ALM1 ==
     
    626626
    627627        check_point(20);
    628         ercd = sta_alm(ALM1, 10000U);
     628        ercd = sta_alm(ALM1, TEST_TIME_CP);
    629629        check_ercd(ercd, E_OK);
    630630
  • asp3_wo_tecs/trunk/test/test_dtq1.h

    r305 r306  
    22 *              データキュー機能のテスト(1)のヘッダファイル
    33 *
    4  *  $Id: test_dtq1.h 602 2016-02-07 12:22:32Z ertl-hiro $
     4 *  $Id: test_dtq1.h 737 2016-04-05 13:11:23Z ertl-hiro $
    55 */
    66
     
    3030#endif /* STACK_SIZE */
    3131
     32#ifndef TEST_TIME_CP
     33#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     34報の出力時間 */
     35#endif /* TEST_TIME_CP */
     36
     37#ifndef TEST_TIME_PROC
     38#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     39#endif /* TEST_TIME_PROC */
     40
    3241/*
    3342 *  送受信するデータの定義
  • asp3_wo_tecs/trunk/test/test_flg1.c

    r305 r306  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_flg1.c 599 2016-02-07 03:33:35Z ertl-hiro $
     52 *  $Id: test_flg1.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    319319 *      == TASK1(続き)==
    320320 *      37:     clr_flg(FLG3, 0)
    321  *              sta_alm(ALM1, 10000U)
     321 *              sta_alm(ALM1, 2 * TEST_TIME_CP) ... ALM1が実行開始するまで
    322322 *      38:     wai_flg(FLG3, 0x01, TWF_ORW, &flgptn)
    323323 *      == TASK3(続き)==
     
    578578        check_ercd(ercd, E_OK);
    579579
    580         ercd = sta_alm(ALM1, 10000U);
     580        ercd = sta_alm(ALM1, 2 * TEST_TIME_CP);
    581581        check_ercd(ercd, E_OK);
    582582
  • asp3_wo_tecs/trunk/test/test_flg1.h

    r305 r306  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_flg1.h 599 2016-02-07 03:33:35Z ertl-hiro $
     52 *  $Id: test_flg1.h 737 2016-04-05 13:11:23Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
     92
    8493/*
    8594 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_hrt1.c

    r302 r306  
    5252 *  の責任を負わない.
    5353 *
    54  *  $Id: test_hrt1.c 310 2015-02-08 13:46:46Z ertl-hiro $
     54 *  $Id: test_hrt1.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5555 */
    5656
     
    8282#include "test_hrt1.h"
    8383
    84 #define NO_LOOP         ULONG_C(100000)
     84#define NO_LOOP         100000UL
    8585
    8686HRTCNT  recent_hrtcnt;
  • asp3_wo_tecs/trunk/test/test_mutex.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_mutex.h 286 2014-11-29 07:51:11Z ertl-hiro $
     52 *  $Id: test_mutex.h 737 2016-04-05 13:11:23Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
     92
    8493/*
    8594 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_mutex1.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_mutex1.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_mutex1.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    147147 *              assert(rmtx.htskid == TASK2)
    148148 *              assert(rmtx.wtskid == TSK_NONE)
    149  *              tloc_mtx(MTX1, 10000U) -> E_TMOUT       ... (D-1)
     149 *              tloc_mtx(MTX1, 3 * TEST_TIME_CP) -> E_TMOUT     ... (D-1)
     150 *                                                                      ... TASK1が実行再開するまで
    150151 *      15:     wup_tsk(TASK2)
    151152 *      == TASK2(続き)==
     
    246247        check_assert(rmtx.wtskid == TSK_NONE);
    247248
    248         ercd = tloc_mtx(MTX1, 10000U);
     249        ercd = tloc_mtx(MTX1, 3 * TEST_TIME_CP);
    249250        check_ercd(ercd, E_TMOUT);
    250251
  • asp3_wo_tecs/trunk/test/test_mutex2.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_mutex2.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_mutex2.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    148148 *              assert(rmtx.htskid == TASK2)
    149149 *              assert(rmtx.wtskid == TSK_NONE)
    150  *              tloc_mtx(MTX1, 10000U) -> E_TMOUT       ... (D-1)
     150 *              tloc_mtx(MTX1, 3 * TEST_TIME_CP) -> E_TMOUT     ... (D-1)
     151 *                                                                      ... TASK1が実行再開するまで
    151152 *      15:     wup_tsk(TASK2)
    152153 *      == TASK2(続き)==
     
    247248        check_assert(rmtx.wtskid == TSK_NONE);
    248249
    249         ercd = tloc_mtx(MTX1, 10000U);
     250        ercd = tloc_mtx(MTX1, 3 * TEST_TIME_CP);
    250251        check_ercd(ercd, E_TMOUT);
    251252
  • asp3_wo_tecs/trunk/test/test_mutex3.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_mutex3.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_mutex3.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    124124 *              assert(rmtx.wtskid == TSK_NONE)
    125125 *              act_tsk(TASK2)
    126  *      4:      tslp_tsk(10000U) -> E_TMOUT
     126 *      4:      tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    127127 *      == TASK2(優å
    128128ˆåº¦ï¼šä¸­ï¼‰==
     
    134134 *              assert(rmtx.wtskid == TASK2)
    135135 *              act_tsk(TASK3)
    136  *      7:      tslp_tsk(10000U) -> E_TMOUT
     136 *      7:      tslp_tsk(2 * TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    137137 *      == TASK3(優å
    138138ˆåº¦ï¼šé«˜ï¼‰==
     
    165165 *              assert(rmtx.htskid == TASK2)
    166166 *              assert(rmtx.wtskid == TSK_NONE)
    167  *              tloc_mtx(MTX1, 10000U) -> E_TMOUT       ... (D-1)
     167 *              tloc_mtx(MTX1, 3 * TEST_TIME_CP) -> E_TMOUT     ... (D-1)
     168 *                                                                      ... TASK1が実行再開するまで
    168169 *      17:     wup_tsk(TASK2)
    169170 *      == TASK2(続き)==
     
    229230
    230231        check_point(4);
    231         ercd = tslp_tsk(10000U);
     232        ercd = tslp_tsk(TEST_TIME_CP);
    232233        check_ercd(ercd, E_TMOUT);
    233234
     
    244245
    245246        check_point(7);
    246         ercd = tslp_tsk(10000U);
     247        ercd = tslp_tsk(2 * TEST_TIME_CP);
    247248        check_ercd(ercd, E_TMOUT);
    248249
     
    287288        check_assert(rmtx.wtskid == TSK_NONE);
    288289
    289         ercd = tloc_mtx(MTX1, 10000U);
     290        ercd = tloc_mtx(MTX1, 3 * TEST_TIME_CP);
    290291        check_ercd(ercd, E_TMOUT);
    291292
  • asp3_wo_tecs/trunk/test/test_mutex5.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_mutex5.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_mutex5.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    431431 *      == TASK5(続き)==
    432432 *      38:     loc_mtx(MTX4)
    433  *      39:     tslp_tsk(10000U) -> E_TMOUT
     433 *      39:     tslp_tsk(3 * TEST_TIME_CP) -> E_TMOUT ... TASK5が実行再開するまで
    434434 *      //              低:TASK1→TASK2,MTX4:TASK5
    435435 *      == TASK1(続き)==
     
    10581058
    10591059        check_point(39);
    1060         ercd = tslp_tsk(10000U);
     1060        ercd = tslp_tsk(3 * TEST_TIME_CP);
    10611061        check_ercd(ercd, E_TMOUT);
    10621062
  • asp3_wo_tecs/trunk/test/test_mutex5.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_mutex5.h 286 2014-11-29 07:51:11Z ertl-hiro $
     52 *  $Id: test_mutex5.h 740 2016-04-05 15:44:39Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
     92
    8493/*
    8594 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_mutex7.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2008-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2008-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_mutex7.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_mutex7.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    207207 *      9:      loc_mtx(MTX1)
    208208 *      //              中:TASK2,低:TASK3,MTX1:TASK2
    209  *      10:     tslp_tsk(10000U) -> E_TMOUT
     209 *      10:     tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK2-2が実行再開するまで
    210210 *      //              低:TASK3,MTX1:TASK2
    211211 *      == TASK3-1(優å
     
    288288 *              loc_mtx(MTX2)
    289289 *      //              中:TASK2,低:TASK3→TASK4,MTX1:TASK2,MTX2:TASK2
    290  *      34:     tslp_tsk(10000U) -> E_TMOUT
     290 *      34:     tslp_tsk(2 * TEST_TIME_CP) -> E_TMOUT ... TASK2-5が実行再開するまで
    291291 *      //              低:TASK3→TASK4,MTX1:TASK2,MTX2:TASK2
    292292 *      == TASK3-3(優å
     
    582582
    583583                check_point(10);
    584                 ercd = tslp_tsk(10000U);
     584                ercd = tslp_tsk(TEST_TIME_CP);
    585585                check_ercd(ercd, E_TMOUT);
    586586
     
    625625
    626626                check_point(34);
    627                 ercd = tslp_tsk(10000U);
     627                ercd = tslp_tsk(2 * TEST_TIME_CP);
    628628                check_ercd(ercd, E_TMOUT);
    629629
  • asp3_wo_tecs/trunk/test/test_mutex7.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2008-2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2008-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_mutex7.h 286 2014-11-29 07:51:11Z ertl-hiro $
     52 *  $Id: test_mutex7.h 740 2016-04-05 15:44:39Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
     92
    8493/*
    8594 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_mutex8.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2009-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2009-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_mutex8.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_mutex8.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    350350 *      == TASK5(続き)==
    351351 *      28:     loc_mtx(MTX2)
    352  *      29:     tslp_tsk(10000U) -> E_TMOUT
     352 *      29:     tslp_tsk(3 * TEST_TIME_CP) -> E_TMOUT ... TASK5が実行再開するまで
    353353 *      == TASK1(続き)==
    354354 *      30:     wup_tsk(TASK4)
     
    380380 *      == TASK5(続き)==
    381381 *      41:     loc_mtx(MTX2)
    382  *      42:     tslp_tsk(10000U) -> E_TMOUT
     382 *      42:     tslp_tsk(2 * TEST_TIME_CP) -> E_TMOUT ... TASK5が実行再開するまで
    383383 *      == TASK1(続き)==
    384384 *      43:     loc_mtx(MTX2)
     
    412412 *      == TASK5(続き)==
    413413 *      55:     loc_mtx(MTX2)
    414  *      56:     tslp_tsk(10000U) -> E_TMOUT
     414 *      56:     tslp_tsk(6 * TEST_TIME_CP) -> E_TMOUT ... TASK5が実行再開するまで
    415415 *      //              中:TASK1,MTX1:TASK1,MTX2:TASK5
    416416 *      == TASK1(続き)==
     
    784784
    785785        check_point(29);
    786         ercd = tslp_tsk(10000U);
     786        ercd = tslp_tsk(3 * TEST_TIME_CP);
    787787        check_ercd(ercd, E_TMOUT);
    788788
     
    804804
    805805        check_point(42);
    806         ercd = tslp_tsk(10000U);
     806        ercd = tslp_tsk(2 * TEST_TIME_CP);
    807807        check_ercd(ercd, E_TMOUT);
    808808
     
    824824
    825825        check_point(56);
    826         ercd = tslp_tsk(10000U);
     826        ercd = tslp_tsk(6 * TEST_TIME_CP);
    827827        check_ercd(ercd, E_TMOUT);
    828828
  • asp3_wo_tecs/trunk/test/test_mutex8.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2009-2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2009-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_mutex8.h 286 2014-11-29 07:51:11Z ertl-hiro $
     52 *  $Id: test_mutex8.h 740 2016-04-05 15:44:39Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
     92
    8493/*
    8594 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_notify1.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2015-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_notify1.c 463 2015-10-18 14:25:55Z ertl-hiro $
     52 *  $Id: test_notify1.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    119119 *
    120120 *      == TASK1 ==
    121  *      1:      sta_alm(ALM1, ALM_RELTIM)
     121 *      1:      sta_alm(ALM1, TEST_TIME_PROC) ... ref_almで動作確認するまで
    122122 *              assert(event_variable == false)
    123123 *              ref_alm(ALM1, &ralm)
     
    126126 *      2:      ref_alm(ALM1, &ralm)
    127127 *              assert((ralm.almstat & TALM_STP) != 0U)
    128  *      3:      sta_alm(ALM2, ALM_RELTIM)
     128 *      3:      sta_alm(ALM2, TEST_TIME_CP) ... TASK2-1が実行開始するまで
    129129 *              ref_tsk(TASK2, &rtsk)
    130130 *              assert((rtsk.tskstat & TTS_DMT) != 0U)
     
    137137 *      6:      wup_tsk(TASK1)
    138138 *      == TASK1(続き)==
    139  *      7:      sta_alm(ALM3, ALM_RELTIM)
     139 *      7:      sta_alm(ALM3, TEST_TIME_CP) ... TASK2-1が実行再開するまで
    140140 *              ref_tsk(TASK2, &rtsk)
    141141 *              assert((rtsk.tskstat & TTS_RDY) != 0U)
     
    149149 *      11:     wup_tsk(TASK1)
    150150 *      == TASK1(続き)==
    151  *      12:     dly_tsk(1000U)
     151 *      12:     dly_tsk(TEST_TIME_CP) ... TASK1が実行再開するまで
    152152 *      == TASK2-1(続き)==
    153153 *      13:     ext_tsk()
    154154 *      == TASK1(続き)==
    155  *      14:     sta_alm(ALM3, ALM_RELTIM)
     155 *      14:     sta_alm(ALM3, TEST_TIME_PROC) ... すぐに発生しても良い
    156156 *              DO(wait_error())                                                                ... (B-1)
    157157 *              assert(error_variable == E_OBJ)
    158  *      15:     sta_alm(ALM4, ALM_RELTIM)
     158 *      15:     sta_alm(ALM4, TEST_TIME_PROC) ... ref_almで動作確認するまで
    159159 *              ref_sem(SEM1, &rsem)
    160160 *              assert(rsem.semcnt == 0U)
    161161 *              ref_alm(ALM4, &ralm)
    162162 *              assert((ralm.almstat & TALM_STA) != 0U)
    163  *      16:     dly_tsk(ALM_RELTIM * 2)
     163 *      16:     dly_tsk(2 * TEST_TIME_PROC) ... ALM4が実行されるまで
    164164 *      17:     ref_sem(SEM1, &rsem)                                                    ... (A-5)
    165165 *              assert(rsem.semcnt == 1U)
    166166 *              ref_alm(ALM4, &ralm)
    167167 *              assert((ralm.almstat & TALM_STP) != 0U)
    168  *      18:     sta_alm(ALM4, ALM_RELTIM)
     168 *      18:     sta_alm(ALM4, TEST_TIME_CP) ... TASK2-2が実行開始するまで
    169169 *      19:     slp_tsk()
    170170 *      == TASK2-2(2回目)==
     
    172172 *      == TASK1(続き)==
    173173 *      21:     pol_sem(SEM1)
    174  *      22:     sta_alm(ALM5, ALM_RELTIM)
     174 *      22:     sta_alm(ALM5, 2 * TEST_TIME_CP) ... TASK1が実行開始するまで
    175175 *              ref_flg(FLG1, &rflg)
    176176 *              assert(rflg.flgptn == 0x00U)
     
    184184 *              ref_alm(ALM5, &ralm)
    185185 *              assert((ralm.almstat & TALM_STP) != 0U)
    186  *      26:     sta_alm(ALM6, ALM_RELTIM)
     186 *      26:     sta_alm(ALM6, TEST_TIME_CP) ... ref_almで動作確認するまで
    187187 *              ref_dtq(DTQ1, &rdtq)
    188188 *              assert(rdtq.sdtqcnt == 0U)
    189189 *              ref_alm(ALM6, &ralm)
    190190 *              assert((ralm.almstat & TALM_STA) != 0U)
    191  *      27:     dly_tsk(ALM_RELTIM * 2)
     191 *      27:     dly_tsk(2 * TEST_TIME_CP) ... ALM6が実行されるまで
    192192 *      28:     ref_dtq(DTQ1, &rdtq)                                                    ... (A-7)
    193193 *              assert(rdtq.sdtqcnt == 1U)
    194194 *              ref_alm(ALM6, &ralm)
    195195 *              assert((ralm.almstat & TALM_STP) != 0U)
    196  *      29:     sta_alm(ALM6, ALM_RELTIM)
     196 *      29:     sta_alm(ALM6, TEST_TIME_CP) ... TASK2-2が実行開始するまで
    197197 *      30:     slp_tsk()
    198198 *      == TASK2-2(続き)==
     
    202202 *              assert(data == 0x01)
    203203 *      33:     act_tsk(TASK2)
    204  *              sta_alm(ALM7, ALM_RELTIM)
     204 *              sta_alm(ALM7, 2 * TEST_TIME_CP) ... TASK1が実行開始するまで
    205205 *              ref_sem(SEM1, &rsem)
    206206 *              assert(rsem.semcnt == 0U)
     
    213213 *      36:     ref_alm(ALM7, &ralm)
    214214 *              assert((ralm.almstat & TALM_STP) != 0U)
    215  *      37:     sta_alm(ALM8, ALM_RELTIM)
     215 *      37:     sta_alm(ALM8, TEST_TIME_CP) ... wai_flgでå¾
     216ちにå
     217¥ã‚‹ã¾ã§
    216218 *              ref_flg(FLG1, &rflg)
    217219 *              assert(rflg.flgptn == 0x01U)
     
    222224 *              ref_alm(ALM8, &ralm)
    223225 *              assert((ralm.almstat & TALM_STP) != 0U)
    224  *      40:     sta_alm(ALM9, ALM_RELTIM)
    225  *      41:     ref_dtq(DTQ1, &rdtq)
     226 *      40:     sta_alm(ALM9,  TEST_TIME_CP) ... rcv_dtqでå¾
     227ちにå
     228¥ã‚‹ã¾ã§
     229 *              ref_dtq(DTQ1, &rdtq)
    226230 *              assert(rdtq.sdtqcnt == 0U)
    227231 *              ref_alm(ALM9, &ralm)
    228232 *              assert((ralm.almstat & TALM_STA) != 0U)
    229  *      42:     rcv_dtq(DTQ1, &data)                                                    ... (B-7)
    230  *      43:     assert(data == E_QOVR)
     233 *      41:     rcv_dtq(DTQ1, &data)                                                    ... (B-7)
     234 *      42:     assert(data == E_QOVR)
    231235 *              ref_alm(ALM9, &ralm)
    232236 *              assert((ralm.almstat & TALM_STP) != 0U)
    233  *      44:     sta_alm(ALM10, ALM_RELTIM)
    234  *      45:     assert(count_variable == 1)
     237 *      43:     sta_alm(ALM10, TEST_TIME_CP) ... ref_almで動作確認するまで
     238 *      44:     assert(count_variable == 1)
    235239 *              ref_alm(ALM10, &ralm)
    236240 *              assert((ralm.almstat & TALM_STA) != 0U)
    237241 *              DO(wait_count(1))                                                               ... (A-2)
    238  *      46:     ref_alm(ALM10, &ralm)
    239  *              assert((ralm.almstat & TALM_STP) != 0U)
    240  *      47:     sta_alm(ALM11, ALM_RELTIM)
    241  *      48:     assert(count_variable == 2)
     242 *      45:     ref_alm(ALM10, &ralm)
     243 *              assert((ralm.almstat & TALM_STP) != 0U)
     244 *      46:     sta_alm(ALM11, TEST_TIME_CP) ... ref_almで動作確認するまで
     245 *      47:     assert(count_variable == 2)
    242246 *              ref_alm(ALM11, &ralm)
    243247 *              assert((ralm.almstat & TALM_STA) != 0U)
    244248 *              DO(wait_count(2))                                                               ... (B-2)
    245  *      49:     ref_alm(ALM9, &ralm)
    246  *              assert((ralm.almstat & TALM_STP) != 0U)
    247  *      50:     END
     249 *      48:     ref_alm(ALM9, &ralm)
     250 *              assert((ralm.almstat & TALM_STP) != 0U)
     251 *      49:     END
    248252 */
    249253
     
    281285task1(intptr_t exinf)
    282286{
    283         T_RTSK  rtsk;
    284         T_RDTQ  rdtq;
    285         T_RFLG  rflg;
    286         intptr_t        data;
    287         FLGPTN  flgptn;
    288287        ER_UINT ercd;
    289288        T_RALM  ralm;
     289        T_RTSK  rtsk;
    290290        T_RSEM  rsem;
     291        T_RFLG  rflg;
     292        FLGPTN  flgptn;
     293        T_RDTQ  rdtq;
     294        intptr_t        data;
    291295
    292296        test_start(__FILE__);
    293297
    294298        check_point(1);
    295         ercd = sta_alm(ALM1, ALM_RELTIM);
     299        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    296300        check_ercd(ercd, E_OK);
    297301
     
    312316
    313317        check_point(3);
    314         ercd = sta_alm(ALM2, ALM_RELTIM);
     318        ercd = sta_alm(ALM2, TEST_TIME_CP);
    315319        check_ercd(ercd, E_OK);
    316320
     
    330334
    331335        check_point(7);
    332         ercd = sta_alm(ALM3, ALM_RELTIM);
     336        ercd = sta_alm(ALM3, TEST_TIME_CP);
    333337        check_ercd(ercd, E_OK);
    334338
     
    348352
    349353        check_point(12);
    350         ercd = dly_tsk(1000U);
     354        ercd = dly_tsk(TEST_TIME_CP);
    351355        check_ercd(ercd, E_OK);
    352356
    353357        check_point(14);
    354         ercd = sta_alm(ALM3, ALM_RELTIM);
     358        ercd = sta_alm(ALM3, TEST_TIME_PROC);
    355359        check_ercd(ercd, E_OK);
    356360
     
    360364
    361365        check_point(15);
    362         ercd = sta_alm(ALM4, ALM_RELTIM);
     366        ercd = sta_alm(ALM4, TEST_TIME_PROC);
    363367        check_ercd(ercd, E_OK);
    364368
     
    374378
    375379        check_point(16);
    376         ercd = dly_tsk(ALM_RELTIM * 2);
     380        ercd = dly_tsk(2 * TEST_TIME_PROC);
    377381        check_ercd(ercd, E_OK);
    378382
     
    389393
    390394        check_point(18);
    391         ercd = sta_alm(ALM4, ALM_RELTIM);
     395        ercd = sta_alm(ALM4, TEST_TIME_CP);
    392396        check_ercd(ercd, E_OK);
    393397
     
    401405
    402406        check_point(22);
    403         ercd = sta_alm(ALM5, ALM_RELTIM);
     407        ercd = sta_alm(ALM5, 2 * TEST_TIME_CP);
    404408        check_ercd(ercd, E_OK);
    405409
     
    427431
    428432        check_point(26);
    429         ercd = sta_alm(ALM6, ALM_RELTIM);
     433        ercd = sta_alm(ALM6, TEST_TIME_CP);
    430434        check_ercd(ercd, E_OK);
    431435
     
    441445
    442446        check_point(27);
    443         ercd = dly_tsk(ALM_RELTIM * 2);
     447        ercd = dly_tsk(2 * TEST_TIME_CP);
    444448        check_ercd(ercd, E_OK);
    445449
     
    456460
    457461        check_point(29);
    458         ercd = sta_alm(ALM6, ALM_RELTIM);
     462        ercd = sta_alm(ALM6, TEST_TIME_CP);
    459463        check_ercd(ercd, E_OK);
    460464
     
    473477        check_ercd(ercd, E_OK);
    474478
    475         ercd = sta_alm(ALM7, ALM_RELTIM);
     479        ercd = sta_alm(ALM7, 2 * TEST_TIME_CP);
    476480        check_ercd(ercd, E_OK);
    477481
     
    497501
    498502        check_point(37);
    499         ercd = sta_alm(ALM8, ALM_RELTIM);
     503        ercd = sta_alm(ALM8, TEST_TIME_CP);
    500504        check_ercd(ercd, E_OK);
    501505
     
    523527
    524528        check_point(40);
    525         ercd = sta_alm(ALM9, ALM_RELTIM);
    526         check_ercd(ercd, E_OK);
     529        ercd = sta_alm(ALM9,  TEST_TIME_CP);
     530        check_ercd(ercd, E_OK);
     531
     532        ercd = ref_dtq(DTQ1, &rdtq);
     533        check_ercd(ercd, E_OK);
     534
     535        check_assert(rdtq.sdtqcnt == 0U);
     536
     537        ercd = ref_alm(ALM9, &ralm);
     538        check_ercd(ercd, E_OK);
     539
     540        check_assert((ralm.almstat & TALM_STA) != 0U);
    527541
    528542        check_point(41);
    529         ercd = ref_dtq(DTQ1, &rdtq);
    530         check_ercd(ercd, E_OK);
    531 
    532         check_assert(rdtq.sdtqcnt == 0U);
     543        ercd = rcv_dtq(DTQ1, &data);
     544        check_ercd(ercd, E_OK);
     545
     546        check_point(42);
     547        check_assert(data == E_QOVR);
    533548
    534549        ercd = ref_alm(ALM9, &ralm);
    535550        check_ercd(ercd, E_OK);
    536551
    537         check_assert((ralm.almstat & TALM_STA) != 0U);
    538 
    539         check_point(42);
    540         ercd = rcv_dtq(DTQ1, &data);
    541         check_ercd(ercd, E_OK);
     552        check_assert((ralm.almstat & TALM_STP) != 0U);
    542553
    543554        check_point(43);
    544         check_assert(data == E_QOVR);
    545 
     555        ercd = sta_alm(ALM10, TEST_TIME_CP);
     556        check_ercd(ercd, E_OK);
     557
     558        check_point(44);
     559        check_assert(count_variable == 1);
     560
     561        ercd = ref_alm(ALM10, &ralm);
     562        check_ercd(ercd, E_OK);
     563
     564        check_assert((ralm.almstat & TALM_STA) != 0U);
     565
     566        wait_count(1);
     567
     568        check_point(45);
     569        ercd = ref_alm(ALM10, &ralm);
     570        check_ercd(ercd, E_OK);
     571
     572        check_assert((ralm.almstat & TALM_STP) != 0U);
     573
     574        check_point(46);
     575        ercd = sta_alm(ALM11, TEST_TIME_CP);
     576        check_ercd(ercd, E_OK);
     577
     578        check_point(47);
     579        check_assert(count_variable == 2);
     580
     581        ercd = ref_alm(ALM11, &ralm);
     582        check_ercd(ercd, E_OK);
     583
     584        check_assert((ralm.almstat & TALM_STA) != 0U);
     585
     586        wait_count(2);
     587
     588        check_point(48);
    546589        ercd = ref_alm(ALM9, &ralm);
    547590        check_ercd(ercd, E_OK);
     
    549592        check_assert((ralm.almstat & TALM_STP) != 0U);
    550593
    551         check_point(44);
    552         ercd = sta_alm(ALM10, ALM_RELTIM);
    553         check_ercd(ercd, E_OK);
    554 
    555         check_point(45);
    556         check_assert(count_variable == 1);
    557 
    558         ercd = ref_alm(ALM10, &ralm);
    559         check_ercd(ercd, E_OK);
    560 
    561         check_assert((ralm.almstat & TALM_STA) != 0U);
    562 
    563         wait_count(1);
    564 
    565         check_point(46);
    566         ercd = ref_alm(ALM10, &ralm);
    567         check_ercd(ercd, E_OK);
    568 
    569         check_assert((ralm.almstat & TALM_STP) != 0U);
    570 
    571         check_point(47);
    572         ercd = sta_alm(ALM11, ALM_RELTIM);
    573         check_ercd(ercd, E_OK);
    574 
    575         check_point(48);
    576         check_assert(count_variable == 2);
    577 
    578         ercd = ref_alm(ALM11, &ralm);
    579         check_ercd(ercd, E_OK);
    580 
    581         check_assert((ralm.almstat & TALM_STA) != 0U);
    582 
    583         wait_count(2);
    584 
    585         check_point(49);
    586         ercd = ref_alm(ALM9, &ralm);
    587         check_ercd(ercd, E_OK);
    588 
    589         check_assert((ralm.almstat & TALM_STP) != 0U);
    590 
    591         check_finish(50);
     594        check_finish(49);
    592595        check_point(0);
    593596}
  • asp3_wo_tecs/trunk/test/test_notify1.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2015-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_notify1.h 463 2015-10-18 14:25:55Z ertl-hiro $
     52 *  $Id: test_notify1.h 737 2016-04-05 13:11:23Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
    84 #ifndef ALM_RELTIM
    85 #define ALM_RELTIM              5000U           /* アラームハンドラに仕掛ける相対時間 */
    86 #endif /* ALM_RELTIM */
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
    8792
    8893#define E_INVALID               (-1)            /* エラーコードとして無効な値 */
  • asp3_wo_tecs/trunk/test/test_raster1.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2014-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2014-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_raster1.c 453 2015-08-15 23:05:31Z ertl-hiro $
     52 *  $Id: test_raster1.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    158158 *              call(set_bit_func(bit_kernel))
    159159 *      1:      act_tsk(TASK2)
    160  *              sta_alm(ALM1, 10000U)
     160 *              sta_alm(ALM1, TEST_TIME_CP) ... ALM1が実行開始するまで
    161161 *              slp_tsk()
    162162 *      == TASK2-1(1回目)==
     
    181181 *      9:      act_tsk(TASK3)
    182182 *      == TASK3-1(1回目)==
    183  *      10:     tloc_mtx(MTX1, 10000U)
     183 *      10:     tloc_mtx(MTX1, 3 * TEST_TIME_CP) ... ras_terされるまで
    184184 *      11:     slp_tsk()
    185185 *      == TASK1(続き)==
     
    263263 *              assert(rtsk.raster == false)                            ... (E-1)
    264264 *              assert(rtsk.dister == false)                            ... (E-2)(G-4)
    265  *              tslp_tsk(10000U) -> E_TMOUT
     265 *              tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    266266 *      == TASK2-3(3回目)==
    267267 *      41:     dis_ter()
     
    364364        check_ercd(ercd, E_OK);
    365365
    366         ercd = sta_alm(ALM1, 10000U);
     366        ercd = sta_alm(ALM1, TEST_TIME_CP);
    367367        check_ercd(ercd, E_OK);
    368368
     
    563563        check_assert(rtsk.dister == false);
    564564
    565         ercd = tslp_tsk(10000U);
     565        ercd = tslp_tsk(TEST_TIME_CP);
    566566        check_ercd(ercd, E_TMOUT);
    567567
     
    696696        case 1:
    697697                check_point(10);
    698                 ercd = tloc_mtx(MTX1, 10000U);
     698                ercd = tloc_mtx(MTX1, 3 * TEST_TIME_CP);
    699699                check_ercd(ercd, E_OK);
    700700
  • asp3_wo_tecs/trunk/test/test_raster1.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2014-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_raster1.h 286 2014-11-29 07:51:11Z ertl-hiro $
     52 *  $Id: test_raster1.h 737 2016-04-05 13:11:23Z ertl-hiro $
    5353 */
    5454
     
    8484#endif /* STACK_SIZE */
    8585
     86#ifndef TEST_TIME_CP
     87#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     88報の出力時間 */
     89#endif /* TEST_TIME_CP */
     90
     91#ifndef TEST_TIME_PROC
     92#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     93#endif /* TEST_TIME_PROC */
     94
    8695/*
    8796 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_raster2.c

    r305 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2014-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2014-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_raster2.c 603 2016-02-07 12:42:10Z ertl-hiro $
     52 *  $Id: test_raster2.c 740 2016-04-05 15:44:39Z ertl-hiro $
    5353 */
    5454
     
    123123‹ã‹ã‚‰ä¼‘止状æ
    124124‹ã«ï¼»NGKI1178ï¼½
    125  *      ASPカーネルに適用されない要求:
     125 *      ASP3カーネルに適用されない要求:
    126126 *              ï¼»NGKI3764][NGKI3765][NGKI3497ï¼½
    127127 *
     
    140140 *
    141141 *      == TASK1 ==
    142  *      1:      sta_alm(ALM1, 10000U)
     142 *      1:      sta_alm(ALM1, TEST_TIME_PROC) ... ALM1-1が実行開始するまで
    143143 *              slp_tsk()
    144144 *      == ALM1-1(1回目)==
     
    173173 *      == TASK1(続き)==
    174174 *      8:      ras_ter(TASK2)
    175  *              tslp_tsk(10000U) -> E_TMOUT
     175 *              tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    176176 *      == TASK2-1(続き)==
    177177 *      9:      ena_ter()                                                                       ... (E-1)
     
    223223 *      == TASK1(続き)==
    224224 *      24:     ras_ter(TASK2)
    225  *              tslp_tsk(10000U) -> E_TMOUT
     225 *              tslp_tsk(2 * TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    226226 *      == TASK2-4(続き)==
    227227 *      25:     ena_ter()                                                                       ... (F-3)
     
    230230 *              DO(while(true))
    231231 *      == TASK1(続き)==
    232  *      27:     sta_alm(ALM1, 10000U)
     232 *      27:     sta_alm(ALM1, TEST_TIME_PROC) ... ALM1-2が実行開始するまで
    233233 *              slp_tsk()
    234234 *      == ALM1-2(2回目)==
     
    239239 *      29:     ter_tsk(TASK2)
    240240 *              act_tsk(TASK2)
    241  *              tslp_tsk(10000U) -> E_TMOUT
     241 *              tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    242242 *      == TASK2-6(6回目)==
    243243 *      30:     ena_ter()
    244244 *              DO(while(true))
    245245 *      == TASK1(続き)==
    246  *      31:     sta_alm(ALM1, 10000U)
     246 *      31:     sta_alm(ALM1, TEST_TIME_PROC) ... ALM1-3が実行開始するまで
    247247 *              slp_tsk()
    248248 *      == ALM1-3(3回目)==
     
    259259 *      == TASK1(続き)==
    260260 *      35:     ras_ter(TASK2)
    261  *              tslp_tsk(10000U) -> E_TMOUT
     261 *              tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    262262 *      == TASK2-7(続き)==
    263263 *      36:     dis_dsp()
     
    274274 *      == TASK1(続き)==
    275275 *      40:     ras_ter(TASK2)
    276  *              tslp_tsk(10000U) -> E_TMOUT
     276 *              tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    277277 *      == TASK2-8(続き)==
    278278 *      41:     chg_ipm(TMAX_INTPRI)
     
    355355
    356356        check_point(1);
    357         ercd = sta_alm(ALM1, 10000U);
     357        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    358358        check_ercd(ercd, E_OK);
    359359
     
    417417        check_ercd(ercd, E_OK);
    418418
    419         ercd = tslp_tsk(10000U);
     419        ercd = tslp_tsk(TEST_TIME_CP);
    420420        check_ercd(ercd, E_TMOUT);
    421421
     
    486486        check_ercd(ercd, E_OK);
    487487
    488         ercd = tslp_tsk(10000U);
     488        ercd = tslp_tsk(2 * TEST_TIME_CP);
    489489        check_ercd(ercd, E_TMOUT);
    490490
    491491        check_point(27);
    492         ercd = sta_alm(ALM1, 10000U);
     492        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    493493        check_ercd(ercd, E_OK);
    494494
     
    503503        check_ercd(ercd, E_OK);
    504504
    505         ercd = tslp_tsk(10000U);
     505        ercd = tslp_tsk(TEST_TIME_CP);
    506506        check_ercd(ercd, E_TMOUT);
    507507
    508508        check_point(31);
    509         ercd = sta_alm(ALM1, 10000U);
     509        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    510510        check_ercd(ercd, E_OK);
    511511
     
    527527        check_ercd(ercd, E_OK);
    528528
    529         ercd = tslp_tsk(10000U);
     529        ercd = tslp_tsk(TEST_TIME_CP);
    530530        check_ercd(ercd, E_TMOUT);
    531531
     
    547547        check_ercd(ercd, E_OK);
    548548
    549         ercd = tslp_tsk(10000U);
     549        ercd = tslp_tsk(TEST_TIME_CP);
    550550        check_ercd(ercd, E_TMOUT);
    551551
  • asp3_wo_tecs/trunk/test/test_raster2.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2014-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_raster2.h 286 2014-11-29 07:51:11Z ertl-hiro $
     52 *  $Id: test_raster2.h 737 2016-04-05 13:11:23Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
     92
    8493/*
    8594 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_sem1.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2008-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2008-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_sem1.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_sem1.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    187187 *              assert(rsem.wtskid == TSK_NONE)
    188188 *              assert(rsem.semcnt == 0)
    189  *      7:      sta_alm(ALM1, 10000U)
     189 *      7:      sta_alm(ALM1, TEST_TIME_CP) ... ALM1が実行開始するまで
    190190 *      8:      wai_sem(SEM1)                                           ... (G-1)
    191191 *      == ALM1 ==
     
    242242 *              assert(rsem.wtskid == TSK_NONE)
    243243 *              assert(rsem.semcnt == 2)
    244  *      39:     tslp_tsk(10000U) -> E_TMOUT
     244 *      39:     tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    245245 *      == TASK3(続き)==
    246246 *      40:     wai_sem(SEM3)                                           ... (G-4)
     
    262262 *      == TASK1(続き)==
    263263 *      48:     sig_sem(SEM3)                                           ... (B-4)
    264  *      49:     tslp_tsk(10000U) -> E_TMOUT
     264 *      49:     tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    265265 *      == TASK4(続き)==
    266266 *      50:     ext_tsk() -> noreturn
    267267 *      == TASK1(続き)==
    268268 *      51:     sig_sem(SEM3)                                           ... (B-4)
    269  *      52:     tslp_tsk(10000U) -> E_TMOUT
     269 *      52:     tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    270270 *      == TASK5(続き)==
    271271 *      53:     ext_tsk() -> noreturn
    272272 *      == TASK1(続き)==
    273273 *      54:     sig_sem(SEM3)                                           ... (B-4)
    274  *      55:     tslp_tsk(10000U) -> E_TMOUT
     274 *      55:     tslp_tsk(TEST_TIME_CP) -> E_TMOUT ... TASK1が実行再開するまで
    275275 *      == TASK3(続き)==
    276276 *      56:     ext_tsk() -> noreturn
     
    488488
    489489        check_point(39);
    490         ercd = tslp_tsk(10000U);
     490        ercd = tslp_tsk(TEST_TIME_CP);
    491491        check_ercd(ercd, E_TMOUT);
    492492
     
    512512
    513513        check_point(49);
    514         ercd = tslp_tsk(10000U);
     514        ercd = tslp_tsk(TEST_TIME_CP);
    515515        check_ercd(ercd, E_TMOUT);
    516516
     
    520520
    521521        check_point(52);
    522         ercd = tslp_tsk(10000U);
     522        ercd = tslp_tsk(TEST_TIME_CP);
    523523        check_ercd(ercd, E_TMOUT);
    524524
     
    528528
    529529        check_point(55);
    530         ercd = tslp_tsk(10000U);
     530        ercd = tslp_tsk(TEST_TIME_CP);
    531531        check_ercd(ercd, E_TMOUT);
    532532
     
    621621
    622622        check_point(7);
    623         ercd = sta_alm(ALM1, 10000U);
     623        ercd = sta_alm(ALM1, TEST_TIME_CP);
    624624        check_ercd(ercd, E_OK);
    625625
  • asp3_wo_tecs/trunk/test/test_sem1.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2008-2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2008-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_sem1.h 286 2014-11-29 07:51:11Z ertl-hiro $
     52 *  $Id: test_sem1.h 737 2016-04-05 13:11:23Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
     92
    8493/*
    8594 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_sem2.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2008-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2008-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_sem2.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_sem2.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    153153 *      4:      twai_sem(SEM1, TMO_NBLK) -> E_PAR       ... (E-5)
    154154 *              twai_sem(SEM1, TMO_POL) -> E_TMOUT      ... (F)
    155  *      5:      sta_alm(ALM1, 10000U)
     155 *      5:      sta_alm(ALM1, TEST_TIME_CP) ... ALM1-1が実行開始するまで
    156156 *      6:      twai_sem(SEM1, TMO_FEVR)                        ... (G)
    157157 *      == ALM1-1 ==
     
    168168 *      == TASK3(優å
    169169ˆåº¦ï¼šä½Žï¼‰==
    170  *      12:     sta_alm(ALM1, 10000U)
     170 *      12:     sta_alm(ALM1, TEST_TIME_PROC) ... ALM1-2が実行開始するまで
    171171 *              call(wait_var())
    172172 *      == ALM1-2 ==
     
    177177 *      14:     wai_sem(SEM1)
    178178 *      == TASK3(続き)==
    179  *      15:     sta_alm(ALM1, 10000U)
     179 *      15:     sta_alm(ALM1, TEST_TIME_PROC) ... ALM1-3が実行開始するまで
    180180 *              dis_dsp()
    181181 *              call(wait_var())
     
    189189 *      18:     wai_sem(SEM1)
    190190 *      == TASK3(続き)==
    191  *      19:     sta_alm(ALM1, 10000U)
     191 *      19:     sta_alm(ALM1, TEST_TIME_PROC) ... ALM1-4が実行開始するまで
    192192 *              sus_tsk(TASK1)
    193193 *              call(wait_var())
     
    202202 *      == TASK2(優å
    203203ˆåº¦ï¼šé«˜ï¼‰==
    204  *      23:     tslp_tsk(10000U) -> E_TMOUT
     204 *      23:     tslp_tsk(2 * TEST_TIME_CP) -> E_TMOUT ... TASK2が実行再開するまで
    205205 *      == TASK1(続き)==
    206206 *      24:     wai_sem(SEM1)
     
    208208 *      25:     ext_tsk() -> noreturn
    209209 *      == TASK2(続き)==
    210  *      26:     sta_alm(ALM1, 10000U)
     210 *      26:     sta_alm(ALM1, TEST_TIME_PROC) ... ALM1-5が実行開始するまで
    211211 *              call(wait_var())
    212212 *      == ALM1-5 ==
     
    217217 *      28:     ext_tsk() -> noreturn
    218218 *      == TASK1(続き)==
    219  *      29:     sta_alm(ALM1, 10000U)
    220  *      30:     twai_sem(SEM1, 100000U) -> E_RLWAI
     219 *      29:     sta_alm(ALM1, TEST_TIME_CP) ... ALM1-6が実行開始するまで
     220 *      30:     twai_sem(SEM1, 2 * TEST_TIME_CP) -> E_RLWAI ... rel_waiされるまで
    221221 *      == ALM1-6 ==
    222222 *      31:     rel_wai(TASK1)
    223223 *              RETURN
    224224 *      == TASK1(続き)==
    225  *      32:     sta_alm(ALM1, 100000U)
    226  *      33:     twai_sem(SEM1, 10000U) -> E_TMOUT               ... (H)
     225 *      32:     sta_alm(ALM1, 3 * TEST_TIME_CP) ... stp_almされるまで
     226 *      33:     twai_sem(SEM1, TEST_TIME_CP) -> E_TMOUT         ... (H)
    227227 *      34:     stp_alm(ALM1)
    228228 *      35:     END
     
    399399
    400400        check_point(5);
    401         ercd = sta_alm(ALM1, 10000U);
     401        ercd = sta_alm(ALM1, TEST_TIME_CP);
    402402        check_ercd(ercd, E_OK);
    403403
     
    431431
    432432        check_point(29);
    433         ercd = sta_alm(ALM1, 10000U);
     433        ercd = sta_alm(ALM1, TEST_TIME_CP);
    434434        check_ercd(ercd, E_OK);
    435435
    436436        check_point(30);
    437         ercd = twai_sem(SEM1, 100000U);
     437        ercd = twai_sem(SEM1, 2 * TEST_TIME_CP);
    438438        check_ercd(ercd, E_RLWAI);
    439439
    440440        check_point(32);
    441         ercd = sta_alm(ALM1, 100000U);
     441        ercd = sta_alm(ALM1, 3 * TEST_TIME_CP);
    442442        check_ercd(ercd, E_OK);
    443443
    444444        check_point(33);
    445         ercd = twai_sem(SEM1, 10000U);
     445        ercd = twai_sem(SEM1, TEST_TIME_CP);
    446446        check_ercd(ercd, E_TMOUT);
    447447
     
    460460
    461461        check_point(23);
    462         ercd = tslp_tsk(10000U);
     462        ercd = tslp_tsk(2 * TEST_TIME_CP);
    463463        check_ercd(ercd, E_TMOUT);
    464464
    465465        check_point(26);
    466         ercd = sta_alm(ALM1, 10000U);
     466        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    467467        check_ercd(ercd, E_OK);
    468468
     
    481481
    482482        check_point(12);
    483         ercd = sta_alm(ALM1, 10000U);
     483        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    484484        check_ercd(ercd, E_OK);
    485485
     
    487487
    488488        check_point(15);
    489         ercd = sta_alm(ALM1, 10000U);
     489        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    490490        check_ercd(ercd, E_OK);
    491491
     
    500500
    501501        check_point(19);
    502         ercd = sta_alm(ALM1, 10000U);
     502        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    503503        check_ercd(ercd, E_OK);
    504504
  • asp3_wo_tecs/trunk/test/test_sem2.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2008-2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2008-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_sem2.h 286 2014-11-29 07:51:11Z ertl-hiro $
     52 *  $Id: test_sem2.h 737 2016-04-05 13:11:23Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
     92
    8493/*
    8594 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_task1.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_task1.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_task1.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    221221 *      32:     slp_tsk()                                               ... (H-3)
    222222 *      == TASK5(続き)==
    223  *      33:     sta_alm(ALM1, 10000U)
     223 *      33:     sta_alm(ALM1, TEST_TIME_CP) ... ALM1が実行開始するまで
    224224 *      34:     slp_tsk()                                               ... (H-1)
    225225 *      == ALM1 ==
     
    245245alarm1_handler(intptr_t exinf)
    246246{
     247        ER_UINT ercd;
    247248        ID              tskid;
    248         ER_UINT ercd;
    249249
    250250        check_point(35);
     
    383383
    384384        check_point(33);
    385         ercd = sta_alm(ALM1, 10000U);
     385        ercd = sta_alm(ALM1, TEST_TIME_CP);
    386386        check_ercd(ercd, E_OK);
    387387
  • asp3_wo_tecs/trunk/test/test_task1.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2007-2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_task1.h 286 2014-11-29 07:51:11Z ertl-hiro $
     52 *  $Id: test_task1.h 737 2016-04-05 13:11:23Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
     92
    8493/*
    8594 *  関数のプロトタイプ宣言
  • asp3_wo_tecs/trunk/test/test_tmevt1.c

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2014-2015 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2014-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_tmevt1.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_tmevt1.c 738 2016-04-05 14:19:24Z ertl-hiro $
    5353 */
    5454
     
    8181 *      == TASK1(優å
    8282ˆåº¦ï¼šä¸­ï¼‰==
    83  *      1:      sta_alm(ALM1, ALM1_RELTIM)
     83 *      1:      sta_alm(ALM1, TEST_TIME_PROC) ... ALM1-1が実行開始するまで
    8484 *              DO(prev_lefttim = UINT32_MAX)
    8585 *              DO(wait_alarm1(&alarm1_flag1))
     
    8888 *              RETURN
    8989 *      == TASK1(続き)==
    90  *      3:      sta_alm(ALM1, ALM1_RELTIM)
     90 *      3:      sta_alm(ALM1, TEST_TIME_PROC) ... ALM1-2が実行開始するまで
    9191 *              DO(prev_lefttim = UINT32_MAX)
    9292 *              DO(wait_alarm1(&alarm1_flag2))
    9393 *      == ALM1-2(2回目)==
    9494 *      4:      DO(alarm1_flag2 = true)
    95  *      5:      sta_alm(ALM1, ALM1_RELTIM)
     95 *      5:      sta_alm(ALM1, TEST_TIME_CP) ... ALM1-3が実行開始するまで
    9696 *              DO(prev_lefttim = UINT32_MAX)
    9797 *              DO(skip_check = true)
     
    103103 *              RETURN
    104104 *      == TASK1(続き)==
    105  *      8:      sta_alm(ALM1, ALM1_RELTIM * 4)
    106  *              DO(prev_lefttim = UINT32_MAX)
    107  *              DO(refer_alarm1())
    108  *  9:  dly_tsk(ALM1_RELTIM)
    109  *              DO(prev_lefttim -= ALM1_RELTIM)
    110  *              DO(refer_alarm1())
    111  *  10: adj_tim(ALM1_RELTIM)
     105 *      8:      sta_alm(ALM1, 3 * TEST_TIME_CP) ... ALM1-4が実行開始するまで
     106 *              DO(prev_lefttim = UINT32_MAX)
     107 *              DO(refer_alarm1())
     108 *  9:  dly_tsk(TEST_TIME_CP) ... どのような時間でも良い
     109 *              DO(prev_lefttim -= TEST_TIME_CP)
     110 *              DO(refer_alarm1())
     111 *  10: adj_tim(TEST_TIME_CP)
    112112 *              DO(wait_alarm1(&alarm1_flag4))
    113113 *      == ALM1-4(4回目)==
     
    115115 *              RETURN
    116116 *      == TASK1(続き)==
    117  *      12:     sta_alm(ALM1, ALM1_RELTIM * 4)
    118  *              DO(prev_lefttim = UINT32_MAX)
    119  *              DO(refer_alarm1())
    120  *  13: dly_tsk(ALM1_RELTIM)
    121  *              DO(prev_lefttim -= ALM1_RELTIM)
    122  *              DO(refer_alarm1())
    123  *  14: adj_tim(-ALM1_RELTIM)
    124  *              DO(prev_lefttim += ALM1_RELTIM)
     117 *      12:     sta_alm(ALM1, 4 * TEST_TIME_CP) ... ALM1-5が実行開始するまで
     118 *              DO(prev_lefttim = UINT32_MAX)
     119 *              DO(refer_alarm1())
     120 *  13: dly_tsk(TEST_TIME_CP) ... どのような時間でも良い
     121 *              DO(prev_lefttim -= TEST_TIME_CP)
     122 *              DO(refer_alarm1())
     123 *  14: adj_tim(-TEST_TIME_CP)
     124 *              DO(prev_lefttim += TEST_TIME_CP)
    125125 *      15:     DO(wait_alarm1(&alarm1_flag5))
    126126 *      == ALM1-5(5回目)==
     
    128128 *              RETURN
    129129 *      == TASK1(続き)==
    130  *      17:     sta_alm(ALM1, ALM1_RELTIM * 6)
    131  *              sta_alm(ALM2, ALM1_RELTIM * 4)
    132  *              DO(prev_lefttim = UINT32_MAX)
    133  *              DO(refer_alarm1())
    134  *  18: dly_tsk(ALM1_RELTIM)
    135  *              DO(prev_lefttim -= ALM1_RELTIM)
     130 *      17:     sta_alm(ALM1, 4 * TEST_TIME_CP) ... ALM1-6が実行開始するまで
     131 *              sta_alm(ALM2, 3 * TEST_TIME_CP) ... stp_almで停止するまで
     132 *              DO(prev_lefttim = UINT32_MAX)
     133 *              DO(refer_alarm1())
     134 *  18: dly_tsk(TEST_TIME_CP) ... どのような時間でも良い
     135 *              DO(prev_lefttim -= TEST_TIME_CP)
    136136 *              DO(refer_alarm1())
    137137 *      19:     stp_alm(ALM2)
     
    144144 *              RETURN
    145145 *      == TASK1(続き)==
    146  *      22:     sta_alm(ALM1, ALM1_RELTIM * 6)
    147  *              sta_alm(ALM2, ALM1_RELTIM * 4)
    148  *              sta_alm(ALM3, ALM1_RELTIM)
     146 *      22:     sta_alm(ALM1, 3 * TEST_TIME_CP) ... ALM1-7が実行開始するまで
     147 *              sta_alm(ALM2, 2 * TEST_TIME_CP) ... stp_almで停止するまで
     148 *              sta_alm(ALM3, TEST_TIME_CP) ... ALM3-1が実行開始するまで
    149149 *              DO(prev_lefttim = UINT32_MAX)
    150150 *      23:     DO(wait_alarm1(&alarm1_flag7))
     
    261261
    262262                check_point(5);
    263                 ercd = sta_alm(ALM1, ALM1_RELTIM);
     263                ercd = sta_alm(ALM1, TEST_TIME_CP);
    264264                check_ercd(ercd, E_OK);
    265265
     
    350350
    351351        check_point(1);
    352         ercd = sta_alm(ALM1, ALM1_RELTIM);
     352        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    353353        check_ercd(ercd, E_OK);
    354354
     
    358358
    359359        check_point(3);
    360         ercd = sta_alm(ALM1, ALM1_RELTIM);
     360        ercd = sta_alm(ALM1, TEST_TIME_PROC);
    361361        check_ercd(ercd, E_OK);
    362362
     
    369369
    370370        check_point(8);
    371         ercd = sta_alm(ALM1, ALM1_RELTIM * 4);
     371        ercd = sta_alm(ALM1, 3 * TEST_TIME_CP);
    372372        check_ercd(ercd, E_OK);
    373373
     
    377377
    378378        check_point(9);
    379         ercd = dly_tsk(ALM1_RELTIM);
    380         check_ercd(ercd, E_OK);
    381 
    382         prev_lefttim -= ALM1_RELTIM;
     379        ercd = dly_tsk(TEST_TIME_CP);
     380        check_ercd(ercd, E_OK);
     381
     382        prev_lefttim -= TEST_TIME_CP;
    383383
    384384        refer_alarm1();
    385385
    386386        check_point(10);
    387         ercd = adj_tim(ALM1_RELTIM);
     387        ercd = adj_tim(TEST_TIME_CP);
    388388        check_ercd(ercd, E_OK);
    389389
     
    391391
    392392        check_point(12);
    393         ercd = sta_alm(ALM1, ALM1_RELTIM * 4);
     393        ercd = sta_alm(ALM1, 4 * TEST_TIME_CP);
    394394        check_ercd(ercd, E_OK);
    395395
     
    399399
    400400        check_point(13);
    401         ercd = dly_tsk(ALM1_RELTIM);
    402         check_ercd(ercd, E_OK);
    403 
    404         prev_lefttim -= ALM1_RELTIM;
     401        ercd = dly_tsk(TEST_TIME_CP);
     402        check_ercd(ercd, E_OK);
     403
     404        prev_lefttim -= TEST_TIME_CP;
    405405
    406406        refer_alarm1();
    407407
    408408        check_point(14);
    409         ercd = adj_tim(-ALM1_RELTIM);
    410         check_ercd(ercd, E_OK);
    411 
    412         prev_lefttim += ALM1_RELTIM;
     409        ercd = adj_tim(-TEST_TIME_CP);
     410        check_ercd(ercd, E_OK);
     411
     412        prev_lefttim += TEST_TIME_CP;
    413413
    414414        check_point(15);
     
    416416
    417417        check_point(17);
    418         ercd = sta_alm(ALM1, ALM1_RELTIM * 6);
    419         check_ercd(ercd, E_OK);
    420 
    421         ercd = sta_alm(ALM2, ALM1_RELTIM * 4);
     418        ercd = sta_alm(ALM1, 4 * TEST_TIME_CP);
     419        check_ercd(ercd, E_OK);
     420
     421        ercd = sta_alm(ALM2, 3 * TEST_TIME_CP);
    422422        check_ercd(ercd, E_OK);
    423423
     
    427427
    428428        check_point(18);
    429         ercd = dly_tsk(ALM1_RELTIM);
    430         check_ercd(ercd, E_OK);
    431 
    432         prev_lefttim -= ALM1_RELTIM;
     429        ercd = dly_tsk(TEST_TIME_CP);
     430        check_ercd(ercd, E_OK);
     431
     432        prev_lefttim -= TEST_TIME_CP;
    433433
    434434        refer_alarm1();
     
    449449
    450450        check_point(22);
    451         ercd = sta_alm(ALM1, ALM1_RELTIM * 6);
    452         check_ercd(ercd, E_OK);
    453 
    454         ercd = sta_alm(ALM2, ALM1_RELTIM * 4);
    455         check_ercd(ercd, E_OK);
    456 
    457         ercd = sta_alm(ALM3, ALM1_RELTIM);
     451        ercd = sta_alm(ALM1, 3 * TEST_TIME_CP);
     452        check_ercd(ercd, E_OK);
     453
     454        ercd = sta_alm(ALM2, 2 * TEST_TIME_CP);
     455        check_ercd(ercd, E_OK);
     456
     457        ercd = sta_alm(ALM3, TEST_TIME_CP);
    458458        check_ercd(ercd, E_OK);
    459459
  • asp3_wo_tecs/trunk/test/test_tmevt1.h

    r302 r306  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2014 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_tmevt1.h 286 2014-11-29 07:51:11Z ertl-hiro $
     52 *  $Id: test_tmevt1.h 737 2016-04-05 13:11:23Z ertl-hiro $
    5353 */
    5454
     
    8282#endif /* STACK_SIZE */
    8383
    84 #ifndef ALM1_RELTIM
    85 #define ALM1_RELTIM             200U            /* アラームハンドラ1に仕掛ける相対時間 */
    86 #endif /* ALM1_RELTIM */
     84#ifndef TEST_TIME_CP
     85#define TEST_TIME_CP    50000U          /* チェックポイント到達æƒ
     86報の出力時間 */
     87#endif /* TEST_TIME_CP */
     88
     89#ifndef TEST_TIME_PROC
     90#define TEST_TIME_PROC  1000U           /* チェックポイントを通らない場合の時間 */
     91#endif /* TEST_TIME_PROC */
    8792
    8893/*
  • asp3_wo_tecs/trunk/test/testexec.rb

    r305 r306  
    5252#  の責任を負わない.
    5353#
    54 #  $Id: testexec.rb 600 2016-02-07 11:46:22Z ertl-hiro $
     54#  $Id: testexec.rb 675 2016-03-06 01:30:21Z ertl-hiro $
    5555#
    5656
     
    6363TEST_SPEC = {
    6464  # 機能テストプログラム
    65   "cpuexc1"  => { :SRC=>"test_cpuexc1", :CFG=>"test_cpuexc" },
    66   "cpuexc2"  => { :SRC=>"test_cpuexc2", :CFG=>"test_cpuexc" },
    67   "cpuexc3"  => { :SRC=>"test_cpuexc3", :CFG=>"test_cpuexc" },
    68   "cpuexc4"  => { :SRC=>"test_cpuexc4", :CFG=>"test_cpuexc" },
    69   "cpuexc5"  => { :SRC=>"test_cpuexc5", :CFG=>"test_cpuexc" },
    70   "cpuexc6"  => { :SRC=>"test_cpuexc6", :CFG=>"test_cpuexc" },
    71   "cpuexc7"  => { :SRC=>"test_cpuexc7", :CFG=>"test_cpuexc" },
    72   "cpuexc8"  => { :SRC=>"test_cpuexc8", :CFG=>"test_cpuexc" },
    73   "cpuexc9"  => { :SRC=>"test_cpuexc9", :CFG=>"test_cpuexc" },
    74   "cpuexc10" => { :SRC=>"test_cpuexc10", :CFG=>"test_cpuexc" },
    75   "dlynse"   => { :SRC=>"test_dlynse" },
    76   "dtq1"     => { :SRC=>"test_dtq1" },
    77   "flg1"     => { :SRC=>"test_flg1" },
    78   "hrt1"     => { :SRC=>"test_hrt1" },
    79   "mutex1"   => { :SRC=>"test_mutex1", :BIT=>"mutex" },
    80   "mutex2"   => { :SRC=>"test_mutex2", :BIT=>"mutex" },
    81   "mutex3"   => { :SRC=>"test_mutex3", :BIT=>"mutex" },
    82   "mutex4"   => { :SRC=>"test_mutex4", :BIT=>"mutex" },
    83   "mutex5"   => { :SRC=>"test_mutex5", :BIT=>"mutex" },
    84   "mutex6"   => { :SRC=>"test_mutex6", :BIT=>"mutex" },
    85   "mutex7"   => { :SRC=>"test_mutex7", :BIT=>"mutex" },
    86   "mutex8"   => { :SRC=>"test_mutex8", :BIT=>"mutex" },
    87   "notify1"  => { :SRC=>"test_notify1" },
    88   "raster1"  => { :SRC=>"test_raster1", :BIT=>"kernel" },
    89   "raster2"  => { :SRC=>"test_raster2" },
    90   "sem1"     => { :SRC=>"test_sem1" },
    91   "sem2"     => { :SRC=>"test_sem2" },
    92   "sysman1"  => { :SRC=>"test_sysman1" },
    93   "sysstat1" => { :SRC=>"test_sysstat1" },
    94   "task1"    => { :SRC=>"test_task1", :BIT=>"kernel" },
    95   "tmevt1"   => { :SRC=>"test_hrt1" },
     65  "cpuexc1"  => { SRC: "test_cpuexc1", CFG: "test_cpuexc" },
     66  "cpuexc2"  => { SRC: "test_cpuexc2", CFG: "test_cpuexc" },
     67  "cpuexc3"  => { SRC: "test_cpuexc3", CFG: "test_cpuexc" },
     68  "cpuexc4"  => { SRC: "test_cpuexc4", CFG: "test_cpuexc" },
     69  "cpuexc5"  => { SRC: "test_cpuexc5", CFG: "test_cpuexc" },
     70  "cpuexc6"  => { SRC: "test_cpuexc6", CFG: "test_cpuexc" },
     71  "cpuexc7"  => { SRC: "test_cpuexc7", CFG: "test_cpuexc" },
     72  "cpuexc8"  => { SRC: "test_cpuexc8", CFG: "test_cpuexc" },
     73  "cpuexc9"  => { SRC: "test_cpuexc9", CFG: "test_cpuexc" },
     74  "cpuexc10" => { SRC: "test_cpuexc10", CFG: "test_cpuexc" },
     75  "dlynse"   => { SRC: "test_dlynse" },
     76  "dtq1"     => { SRC: "test_dtq1" },
     77  "flg1"     => { SRC: "test_flg1" },
     78  "hrt1"     => { SRC: "test_hrt1" },
     79  "mutex1"   => { SRC: "test_mutex1", BIT: "mutex" },
     80  "mutex2"   => { SRC: "test_mutex2", BIT: "mutex" },
     81  "mutex3"   => { SRC: "test_mutex3", BIT: "mutex" },
     82  "mutex4"   => { SRC: "test_mutex4", BIT: "mutex" },
     83  "mutex5"   => { SRC: "test_mutex5", BIT: "mutex" },
     84  "mutex6"   => { SRC: "test_mutex6", BIT: "mutex" },
     85  "mutex7"   => { SRC: "test_mutex7", BIT: "mutex" },
     86  "mutex8"   => { SRC: "test_mutex8", BIT: "mutex" },
     87  "notify1"  => { SRC: "test_notify1" },
     88  "raster1"  => { SRC: "test_raster1", BIT: "kernel" },
     89  "raster2"  => { SRC: "test_raster2" },
     90  "sem1"     => { SRC: "test_sem1" },
     91  "sem2"     => { SRC: "test_sem2" },
     92  "sysman1"  => { SRC: "test_sysman1" },
     93  "sysstat1" => { SRC: "test_sysstat1" },
     94  "task1"    => { SRC: "test_task1", BIT: "kernel" },
     95  "tmevt1"   => { SRC: "test_tmevt1" },
    9696
    9797  # メッセージバッファ機能拡張パッケージの機能テストプログラム
    98   "messagebuf1" => { :SRC=>"test_messagebuf1", :BIT=>"kernel" },
    99   "messagebuf2" => { :SRC=>"test_messagebuf2", :BIT=>"kernel" },
     98  "messagebuf1" => { SRC: "test_messagebuf1", BIT: "kernel" },
     99  "messagebuf2" => { SRC: "test_messagebuf2", BIT: "kernel" },
    100100
    101101  # オーバランハンドラ機能拡張パッケージの機能テストプログラム
    102   "ovrhdr1"  => { :SRC=>"test_ovrhdr1" },
     102  "ovrhdr1"  => { SRC: "test_ovrhdr1" },
    103103
    104104  # 制約タスク拡張パッケージの機能テストプログラム
    105   "rstr1"    => { :SRC=>"test_rstr1" },
    106   "rstr2"    => { :SRC=>"test_rstr2" },
     105  "rstr1"    => { SRC: "test_rstr1" },
     106  "rstr2"    => { SRC: "test_rstr2" },
    107107
    108108  # サブ優å
    109109ˆåº¦æ©Ÿèƒ½æ‹¡å¼µãƒ‘ッケージの機能テストプログラム
    110   "subprio1" => { :SRC=>"test_subprio1" },
    111   "subprio2" => { :SRC=>"test_subprio2" },
     110  "subprio1" => { SRC: "test_subprio1" },
     111  "subprio2" => { SRC: "test_subprio2" },
    112112
    113113  # システム時刻管理機能テストプログラム
    114   "systim1" => { :TARGET=>1, :SRC=>"hrt_systim1", :DEFS=>"-DHRT_CONFIG1" },
    115   "systim2" => { :TARGET=>1, :SRC=>"hrt_systim2", :DEFS=>"-DHRT_CONFIG1" },
    116   "systim3" => { :TARGET=>1, :SRC=>"hrt_systim3", :DEFS=>"-DHRT_CONFIG1" },
    117   "systim4" => { :TARGET=>1, :SRC=>"hrt_systim4", :DEFS=>"-DHRT_CONFIG2" },
     114  "systim1" => { TARGET: 1, SRC: "hrt_systim1", DEFS: "-DHRT_CONFIG1" },
     115  "systim2" => { TARGET: 1, SRC: "hrt_systim2", DEFS: "-DHRT_CONFIG1" },
     116  "systim3" => { TARGET: 1, SRC: "hrt_systim3", DEFS: "-DHRT_CONFIG1" },
     117  "systim4" => { TARGET: 1, SRC: "hrt_systim4", DEFS: "-DHRT_CONFIG2" },
    118118
    119119  # ドリフト調整機能拡張パッケージのシステム時刻管理機能テストプログラム
    120   "drift1"   => { :TARGET=>1, :SRC=>"hrt_drift1", :DEFS=>"-DHRT_CONFIG1" },
    121   "drift1-64ops"  => { :TARGET=>1, :SRC=>"hrt_drift1",
    122                                                                 :DEFS=>"-DHRT_CONFIG1 -DUSE_64BIT_OPS" },
    123   "systim1-64ops" => { :TARGET=>1, :SRC=>"hrt_systim1",
    124                                                                 :DEFS=>"-DHRT_CONFIG1 -DUSE_64BIT_OPS" },
     120  "drift1"   => { TARGET: 1, SRC: "hrt_drift1", DEFS: "-DHRT_CONFIG1" },
     121  "drift1-64ops"  => { TARGET: 1, SRC: "hrt_drift1",
     122                                                                DEFS: "-DHRT_CONFIG1 -DUSE_64BIT_OPS" },
     123  "systim1-64ops" => { TARGET: 1, SRC: "hrt_systim1",
     124                                                                DEFS: "-DHRT_CONFIG1 -DUSE_64BIT_OPS" },
    125125
    126126  # 性能評価プログラム
    127   "perf0" => { :CDL=>"perf_pf" },
    128   "perf1" => { :CDL=>"perf_pf" },
    129   "perf2" => { :CDL=>"perf_pf" },
    130   "perf3" => { :CDL=>"perf_pf" },
    131   "perf4" => { :CDL=>"perf_pf" },
    132   "perf5" => { :CDL=>"perf_pf" },
     127  "perf0" => { CDL: "perf_pf" },
     128  "perf1" => { CDL: "perf_pf" },
     129  "perf2" => { CDL: "perf_pf" },
     130  "perf3" => { CDL: "perf_pf" },
     131  "perf4" => { CDL: "perf_pf" },
     132  "perf5" => { CDL: "perf_pf" },
    133133}
    134134
  • asp3_wo_tecs/trunk/utils/gentest.rb

    r304 r306  
    5252#  の責任を負わない.
    5353#
    54 #  $Id: gentest.rb 578 2016-02-03 07:23:53Z ertl-hiro $
     54#  $Id: gentest.rb 743 2016-04-10 16:00:40Z ertl-hiro $
    5555#
    5656
     
    6262#  生成動作を決めるための設定
    6363#
    64 $parameterPosition = {
    65   "get_tst" => 2,
    66   "get_pri" => 2,
    67   "get_inf" => 1,
    68   "ref_tsk" => 2,
    69   "ref_sem" => 2,
    70   "ref_flg" => 2,
    71   "ref_dtq" => 2,
    72   "ref_pdq" => 2,
    73   "ref_mtx" => 2,
    74   "ref_mbf" => 2,
    75   "ref_mpf" => 2,
    76   "get_tim" => 1,
    77   "ref_cyc" => 2,
    78   "ref_alm" => 2,
    79   "ref_ovr" => 2,
    80   "get_tid" => 1,
    81   "iget_tid" => 1,
    82   "get_lod" => 2,
    83   "get_nth" => 3,
    84   "get_ipm" => 1,
    85   "wai_flg" => 4,
    86   "pol_flg" => 4,
    87   "twai_flg" => 4,
    88   "rcv_dtq" => 2,
    89   "prcv_dtq" => 2,
    90   "trcv_dtq" => 2,
     64$parameterDefinition = {
     65  "get_tst" => { 2 => "STAT" },
     66  "get_pri" => { 2 => "PRI" },
     67  "get_inf" => { 1 => "intptr_t" },
     68  "ref_tsk" => { 2 => "T_RTSK" },
     69  "ref_sem" => { 2 => "T_RSEM" },
     70  "wai_flg" => { 4 => "FLGPTN" },
     71  "pol_flg" => { 4 => "FLGPTN" },
     72  "twai_flg" => { 4 => "FLGPTN" },
     73  "ref_flg" => { 2 => "T_RFLG" },
     74  "rcv_dtq" => { 2 => "intptr_t" },
     75  "prcv_dtq" => { 2 => "intptr_t" },
     76  "trcv_dtq" => { 2 => "intptr_t" },
     77  "ref_dtq" => { 2 => "T_RDTQ" },
     78  "rcv_pdq" => { 2 => "intptr_t" , 3 => "PRI" },
     79  "prcv_pdq" => { 2 => "intptr_t" , 3 => "PRI" },
     80  "trcv_pdq" => { 2 => "intptr_t" , 3 => "PRI" },
     81  "ref_pdq" => { 2 => "T_RPDQ" },
     82  "ref_mtx" => { 2 => "T_RMTX" },
     83  "ref_mbf" => { 2 => "T_RMBF" },
     84  "get_mpf" => { 2 => "void *" },
     85  "pget_mpf" => { 2 => "void *" },
     86  "tget_mpf" => { 2 => "void *" },
     87  "ref_mpf" => { 2 => "T_RMPF" },
     88  "get_tim" => { 1 => "SYSTIM" },
     89  "ref_cyc" => { 2 => "T_RCYC" },
     90  "ref_alm" => { 2 => "T_RALM" },
     91  "ref_ovr" => { 2 => "T_ROVR" },
     92  "get_tid" => { 1 => "ID" },
     93  "get_did" => { 1 => "ID" },
     94  "get_lod" => { 2 => "uint_t" },
     95  "mget_lod" => { 3 => "uint_t" },
     96  "get_nth" => { 3 => "ID" },
     97  "mget_nth" => { 4 => "ID" },
     98  "get_ipm" => { 1 => "PRI" },
     99  "get_som" => { 1 => "ID" }
    91100}
    92101
    93 $parameterType = {
    94   "get_tst" => "STAT",
    95   "get_pri" => "PRI",
    96   "get_inf" => "intptr_t",
    97   "ref_tsk" => "T_RTSK",
    98   "ref_sem" => "T_RSEM",
    99   "ref_flg" => "T_RFLG",
    100   "ref_dtq" => "T_RDTQ",
    101   "ref_pdq" => "T_RPDQ",
    102   "ref_mtx" => "T_RMTX",
    103   "ref_mbf" => "T_RMBF",
    104   "ref_mpf" => "T_RMPF",
    105   "get_tim" => "SYSTIM",
    106   "ref_cyc" => "T_RCYC",
    107   "ref_alm" => "T_RALM",
    108   "ref_ovr" => "T_ROVR",
    109   "get_tid" => "ID",
    110   "iget_tid" => "ID",
    111   "get_lod" => "uint_t",
    112   "get_nth" => "ID",
    113   "get_ipm" => "PRI",
    114   "wai_flg" => "FLGPTN",
    115   "pol_flg" => "FLGPTN",
    116   "twai_flg" => "FLGPTN",
    117   "rcv_dtq" => "intptr_t",
    118   "prcv_dtq" => "intptr_t",
    119   "trcv_dtq" => "intptr_t",
    120 }
    121  
    122102$functionParameters = {
    123   "target_hrt_set_event" => "HRTCNT hrtcnt",
     103  "target_hrt_set_event" => "HRTCNT hrtcnt"
    124104}
    125105 
    126106$functionValue = {
    127   "target_hrt_get_current" => "HRTCNT",
     107  "target_hrt_get_current" => "HRTCNT"
    128108}
    129109 
    130110$functionReturn = {
    131   "target_hrt_get_current" => "0U",
     111  "target_hrt_get_current" => "0U"
    132112}
    133113 
    134114$functionCheckParameter = {
    135   "target_hrt_set_event" => "hrtcnt",
     115  "target_hrt_set_event" => "hrtcnt"
    136116}
    137117
     
    246226    print("{\n")
    247227
    248     @variableList.keys.each do |varName|
    249       print("\t#{@variableList[varName]}")
    250       print(@variableList[varName].length < 4 ? "\t\t" : "\t")
     228    @variableList.each do |varName, varType|
     229      if /^(.+)\w*\*$/ =~ varType
     230        varBaseType = $1
     231        print("\t#{varBaseType}")
     232        print(varBaseType.length < 4 ? "\t\t*" : "\t*")
     233      else
     234        print("\t#{varType}")
     235        print(varType.length < 4 ? "\t\t" : "\t")
     236      end
    251237      print("#{varName};\n")
    252238    end
     
    296282    params = $2.split(/\s*,\s*/)
    297283
    298     if !$parameterPosition[svcName].nil? \
    299                                         && params.size >= $parameterPosition[svcName]
    300       varName = params[$parameterPosition[svcName] - 1].sub(/^\&/, "")
    301       typeName = $parameterType[svcName]
    302       pu.addVariable(varName, typeName)
     284    if $parameterDefinition.has_key?(svcName)
     285      $parameterDefinition[svcName].each do |pos, type|
     286        if params.size >= pos
     287          varName = params[pos - 1].sub(/^\&/, "")
     288          pu.addVariable(varName, type)
     289        end
     290      end
    303291    end
    304292  end
Note: See TracChangeset for help on using the changeset viewer.