Changeset 305


Ignore:
Timestamp:
Jun 26, 2017, 6:45:41 PM (7 years ago)
Author:
ertl-honda
Message:

3.0.0のリリース版に追従

Location:
asp3_wo_tecs/trunk
Files:
5 added
47 edited

Legend:

Unmodified
Added
Removed
  • asp3_wo_tecs/trunk/README.txt

    r304 r305  
    66TOPPERS/ASP3カーネル(TOPPERS/ASPカーネル Release 3.X.以下,ASP3カーネ
    77ル)は,TOPPERS/ASPカーネルを拡張・改良したもので,TOPPERS第3世代カーネ
    8 ãƒ«ï¼ˆITRON系)の基盤となるものとして開発を進めているリアルタイムカーネル
    9 ã§ã™ï¼Ž
     8ル(ITRON系)の基盤となるものとして開発したリアルタイムカーネルです.
    109
    1110TOPPERS/ASPカーネルは,μITRON4.0仕様のスタンダードプロファイル準拠のリ
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/arm.h

    r302 r305  
    55 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    66 *                              Toyohashi Univ. of Technology, JAPAN
    7  *  Copyright (C) 2006-2015 by Embedded and Real-Time Systems Laboratory
     7 *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
     
    5252 *  の責任を負わない.
    5353 *
    54  *  $Id: arm.h 430 2015-08-08 11:38:46Z ertl-hiro $
     54 *  $Id: arm.h 523 2016-01-14 11:01:04Z ertl-hiro $
    5555 */
    5656
     
    282282
    283283/*
    284  *  High exception vectorを使うかの設定
    285  */
    286 Inline void
    287 arm_set_high_vector(bool_t enable)
     284 *  High exception vectorsを使うように設定
     285 */
     286Inline void
     287arm_set_high_vectors(void)
    288288{
    289289        uint32_t        reg;
    290290
    291291        CP15_READ_SCTLR(reg);
    292         if (enable) {
    293                 reg |= CP15_SCTLR_VECTOR;
    294         }
    295         else {
    296                 reg &= ~CP15_SCTLR_VECTOR;
    297         }
     292        reg |= CP15_SCTLR_VECTOR;
     293        CP15_WRITE_SCTLR(reg);
     294}
     295
     296/*
     297 *  Low exception vectorsを使うように設定
     298 */
     299Inline void
     300arm_set_low_vectors(void)
     301{
     302        uint32_t        reg;
     303
     304        CP15_READ_SCTLR(reg);
     305        reg &= ~CP15_SCTLR_VECTOR;
    298306        CP15_WRITE_SCTLR(reg);
    299307}
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_check.trb

    r304 r305  
    33#               ãƒ‘ス3の生成スクリプトのコア依存部(ARM用)
    44#
    5 #  $Id: core_check.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     5#  $Id: core_check.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    66#
    77
     
    1919#
    2020inhTable = SYMBOL("_kernel_inh_table")
    21 $cfgData[:DEF_INH].each do |id, params|
     21$cfgData[:DEF_INH].each do |key, params|
    2222  inthdr = PEEK(inhTable + params[:inhno] * $sizeof_FP, $sizeof_FP)
    2323
     
    3939#
    4040excTable = SYMBOL("_kernel_exc_table")
    41 $cfgData[:DEF_EXC].each do |id, params|
     41$cfgData[:DEF_EXC].each do |key, params|
    4242  exchdr = PEEK(excTable + params[:excno] * $sizeof_FP, $sizeof_FP)
    4343
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_kernel_impl.c

    r302 r305  
    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.c 430 2015-08-08 11:38:46Z ertl-hiro $
     55 *  $Id: core_kernel_impl.c 541 2016-01-16 03:09:21Z ertl-hiro $
    5656 */
    5757
     
    7676#ifdef USE_ARM_MMU
    7777
    78 #define D0_CLIENT       0x01U           /* 変換テーブルに従ってドメイン0にアクセス */
    79 #define USE_ASID        1                       /* 使用するASID */
     78#define CP15_DACR_D0_CLIENT     0x01U   /* 変換テーブルに従いドメイン0にアクセス */
     79#define DEFAULT_ASID            1               /* 使用するASID */
    8080
    8181/*
     
    155155         * ドメインアクセス制御の設定
    156156         */
    157         CP15_WRITE_DACR(D0_CLIENT);
     157        CP15_WRITE_DACR(CP15_DACR_D0_CLIENT);
    158158
    159159        /*
     
    161161         */
    162162#if __TARGET_ARCH_ARM >= 6
    163         CP15_WRITE_CONTEXTIDR(USE_ASID);
     163        CP15_WRITE_CONTEXTIDR(DEFAULT_ASID);
    164164#endif /* __TARGET_ARCH_ARM >= 6 */
    165165
     
    197197         */
    198198        excpt_nest_count = 1U;
     199
     200        /*
     201         *  MMUを有効に
     202         */
     203#ifdef USE_ARM_MMU
     204        arm_mmu_initialize();
     205#endif /* USE_ARM_MMU */
    199206
    200207        /*
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/core_test.h

    r302 r305  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2006-2015 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: core_test.h 460 2015-08-29 13:04:06Z ertl-hiro $
     53 *  $Id: core_test.h 524 2016-01-14 11:01:56Z ertl-hiro $
    5454 */
    5555
     
    146146
    147147#endif
    148 
    149 /*
    150  *  パフォーマンスモニタによる性能評価
    151  */
    152 #if defined(USE_ARM_PM_HIST) && __TARGET_ARCH_ARM == 7
    153 
    154 /*
    155  *  パフォーマンスモニタのカウンタのデータ型
    156  */
    157 typedef uint32_t        PMCNT;
    158 
    159 /*
    160  *  パフォーマンスモニタの初期化
    161  */
    162 Inline void
    163 arm_init_pmcnt(void)
    164 {
    165         uint32_t        reg;
    166 
    167         /*
    168          *  パフォーマンスモニタの有効化
    169          *
    170          *  TOPPERS_ARM_PMCNT_DIV64が定義されている場合は,64クロック毎にカ
    171          *  ウントアップする.
    172          */
    173         CP15_READ_PMCR(reg);
    174         reg |= CP15_PMCR_ALLCNTR_ENABLE;
    175 
    176 #ifdef TOPPERS_ARM_PMCNT_DIV64
    177         reg |= CP15_PMCR_PMCCNTR_DIVIDER;
    178 #else /* !TOPPERS_ARM_PMCNT_DIV64 */
    179         reg &= ~CP15_PMCR_PMCCNTR_DIVIDER;
    180 #endif /* TOPPERS_ARM_PMCNT_DIV64 */
    181 
    182         CP15_WRITE_PMCR(reg);
    183 
    184         /*
    185          *  パフォーマンスモニタのカウンタの有効化
    186          */
    187         CP15_READ_PMCNTENSET(reg);
    188         reg |= CP15_PMCNTENSET_CCNTR_ENABLE;
    189         CP15_WRITE_PMCNTENSET(reg);
    190 }
    191 
    192 /*
    193  *  パフォーマンスモニタのカウンタの読み込み
    194  */
    195 Inline void
    196 arm_get_pmcnt(PMCNT *p_count)
    197 {
    198         CP15_READ_PMCCNTR(*p_count);
    199 }
    200 
    201 /*
    202  *  カウンタ値の時間計測単位への変換
    203  *
    204  *  時間計測の単位は,現状はナノ秒になっている(マイクロ秒単位にする設
    205  *  定も欲しいと思われる).
    206  */
    207 Inline uint_t
    208 arm_conv_time(PMCNT count) {
    209 #ifdef TOPPERS_ARM_PMCNT_DIV64
    210         return(((uint_t) count) * (1000 * 64) / CORE_CLK_MHZ);
    211 #else /* !TOPPERS_ARM_PMCNT_DIV64 */
    212         return(((uint_t) count) * 1000 / CORE_CLK_MHZ);
    213 #endif /* TOPPERS_ARM_PMCNT_DIV64 */
    214 }
    215 
    216 #define HISTTIM                                 PMCNT
    217 #define HIST_GET_TIM(p_time)    (arm_get_pmcnt(p_time))
    218 #define HIST_CONV_TIM(time)             (arm_conv_tim(time))
    219 #define HIST_BM_HOOK()                  ((void) 0)
    220 
    221 #endif /* defined(USE_ARM_PM_HIST) && __TARGET_ARCH_ARM == 7 */
    222148#endif /* TOPPERS_CORE_TEST_H */
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/gic_kernel_impl.c

    r302 r305  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2006-2015 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: gic_kernel_impl.c 355 2015-07-25 10:26:02Z ertl-hiro $
     53 *  $Id: gic_kernel_impl.c 522 2016-01-14 06:56:53Z ertl-hiro $
    5454 */
    5555
     
    177177         */
    178178        for (i = GIC_INTNO_PPI0 / 16; i < GIC_TNUM_INTNO / 16; i++) {
    179 #ifdef GIC_ARM11MOCORE
     179#ifdef GIC_ARM11MPCORE
    180180                sil_wrw_mem(GICD_ICFGR(i), 0x55555555U);
    181 #else /* GIC_ARM11MOCORE */
     181#else /* GIC_ARM11MPCORE */
    182182                sil_wrw_mem(GICD_ICFGR(i), 0x00000000U);
    183 #endif /* GIC_ARM11MOCORE */
     183#endif /* GIC_ARM11MPCORE */
    184184        }
    185185
     
    229229
    230230        if ((intatr & TA_EDGE) != 0U) {
    231 #ifdef GIC_ARM11MOCORE
     231#ifdef GIC_ARM11MPCORE
    232232                gicd_config(intno, GICD_ICFGRn_EDGE|GICD_ICFGRn_1_N);
    233 #else /* GIC_ARM11MOCORE */
     233#else /* GIC_ARM11MPCORE */
    234234                gicd_config(intno, GICD_ICFGRn_EDGE);
    235 #endif /* GIC_ARM11MOCORE */
     235#endif /* GIC_ARM11MPCORE */
    236236                clear_int(intno);
    237237        }
    238238        else {
    239 #ifdef GIC_ARM11MOCORE
     239#ifdef GIC_ARM11MPCORE
    240240                gicd_config(intno, GICD_ICFGRn_LEVEL|GICD_ICFGRn_1_N);
    241 #else /* GIC_ARM11MOCORE */
     241#else /* GIC_ARM11MPCORE */
    242242                gicd_config(intno, GICD_ICFGRn_LEVEL);
    243 #endif /* GIC_ARM11MOCORE */
     243#endif /* GIC_ARM11MPCORE */
    244244        }
    245245
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/gic_kernel_impl.h

    r302 r305  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2006-2015 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: gic_kernel_impl.h 377 2015-07-31 00:48:14Z ertl-hiro $
     53 *  $Id: gic_kernel_impl.h 535 2016-01-16 00:42:29Z ertl-hiro $
    5454 */
    5555
     
    100100ˆåº¦ã®æ®µæ•°ãŒ256段階の時にあわせて表す.
    101101 */
     102#define GIC_PRI_LEVEL           (TMAX_INTPRI - TMIN_INTPRI + 2)
     103
    102104#if GIC_PRI_LEVEL == 16
    103105#define GIC_PRI_SHIFT           4
     
    128130                        (((uint_t)((ipm) + (GIC_PRI_LEVEL - 1))) << GIC_PRI_SHIFT)
    129131
    130 /* TMIN_INTPRI,TMAX_INTPRIとの整合性のチェック */
    131 #if TMAX_INTPRI - TMIN_INTPRI + 2 != GIC_PRI_LEVEL
    132 #error GIC_PRI_LEVEL does not match TMIN_INTPRI.
    133 #endif
    134 
    135132/*
    136133 *  GICレジスタのアドレスを定義するためのマクロ
     
    209206#define GICD_ICFGRn_LEVEL       UINT_C(0x00)
    210207#define GICD_ICFGRn_EDGE        UINT_C(0x02)
    211 #ifdef GIC_ARM11MOCORE
     208#ifdef GIC_ARM11MPCORE
    212209#define GICD_ICFGRn_N_N         UINT_C(0x00)
    213210#define GICD_ICFGRn_1_N         UINT_C(0x01)
    214 #endif /* GIC_ARM11MOCORE */
     211#endif /* GIC_ARM11MPCORE */
    215212
    216213#ifndef TOPPERS_MACRO_ONLY
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/gic_support.S

    r302 r305  
    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: gic_support.S 454 2015-08-16 03:18:46Z ertl-hiro $
     55 *  $Id: gic_support.S 522 2016-01-14 06:56:53Z ertl-hiro $
    5656 */
    5757
     
    176176 *
    177177 *  irc_end_excで用いるæƒ
    178 å ±ï¼ˆå‰²è¾¼ã¿ç™ºç”Ÿå‰ã®å‰²è¾¼ã¿å„ªå
     178報(CPU例外発生前の割込み優å
    179179ˆåº¦ãƒžã‚¹ã‚¯ï¼‰ã‚’,スタッ
    180180 *      クに保存する.
     
    207207ƒã«æˆ»ã™ï¼Ž
    208208         */
    209         pop             {r2}                            /* irc_begin_intで保存したæƒ
     209        pop             {r2}                            /* irc_begin_excで保存したæƒ
    210210報を復帰 */
    211211        ldr             r1, =GICC_PMR           /* 割込み優å
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/sp804.h

    r302 r305  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: sp804.h 440 2015-08-09 02:02:08Z ertl-hiro $
     52 *  $Id: sp804.h 530 2016-01-14 15:17:30Z ertl-hiro $
    5353 */
    5454
    5555/*
    56  *              ARM Dual-Timer Module(SP804)サポートモジュール
     56 *              ARM Dual-Timer Module(SP804)に関する定義
    5757 */
    5858
  • asp3_wo_tecs/trunk/arch/arm_gcc/common/start.S

    r302 r305  
    55 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    66 *                              Toyohashi Univ. of Technology, JAPAN
    7  *  Copyright (C) 2005-2014 by Embedded and Real-Time Systems Laboratory
     7 *  Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
     
    5252 *  の責任を負わない.
    5353 *
    54  *  $Id: start.S 349 2015-07-25 05:25:27Z ertl-hiro $
     54 *  $Id: start.S 540 2016-01-16 02:15:41Z ertl-hiro $
    5555 */
    5656
     
    106106         *  BSS_STARTからBSS_ENDまでをゼロクリアする.
    107107         */
    108         ldr             r1, =BSS_START
     108        ldr             r0, =BSS_START
    109109        ldr             r2, =BSS_END
    110         cmp             r1, r2
     110        cmp             r0, r2
    111111        bhs             start_3
    112         mov             r0, #0
     112        mov             r1, #0
     113#ifdef TOPPERS_USE_STDLIB
     114        sub             r2, r2, r0
     115        bl              memset
     116#else /* TOPPERS_USE_STDLIB */
    113117ALABEL(start_2)
    114         str             r0, [r1], #4
    115         cmp             r1, r2
     118        str             r1, [r0], #4
     119        cmp             r0, r2
    116120        blo             start_2
     121#endif /* TOPPERS_USE_STDLIB */
    117122ALABEL(start_3)
    118123#endif /* TOPPERS_OMIT_BSS_INIT */
     
    125130         *  IDATA_STARTからIDATA_ENDまでを,DATA_START以降にコピーする.
    126131         */
    127         ldr             r1, =DATA_START
    128         ldr             r3, =DATA_END
    129         cmp             r1, r3
     132        ldr             r0, =DATA_START
     133        ldr             r2, =DATA_END
     134        cmp             r0, r2
    130135        bhs             start_5
    131         ldr             r2, =IDATA_START
     136        ldr             r1, =IDATA_START
     137#ifdef TOPPERS_USE_STDLIB
     138        sub             r2, r2, r0
     139        bl              memcpy
     140#else /* TOPPERS_USE_STDLIB */
    132141ALABEL(start_4)
    133         ldr             r0, [r2], #4
    134         str             r0, [r1], #4
    135         cmp             r1, r3
     142        ldr             r3, [r1], #4
     143        str             r3, [r0], #4
     144        cmp             r0, r2
    136145        blo             start_4
     146#endif /* TOPPERS_USE_STDLIB */
    137147ALABEL(start_5)
    138148#endif /* TOPPERS_OMIT_DATA_INIT */
  • asp3_wo_tecs/trunk/arch/arm_gcc/mpcore/chip_kernel.h

    r302 r305  
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: chip_kernel.h 390 2015-08-01 02:03:34Z ertl-hiro $
     53 *  $Id: chip_kernel.h 531 2016-01-14 15:19:13Z ertl-hiro $
    5454 */
    5555
     
    6767/*
    6868 *  サポートできる機能の定義
     69 *
     70 *  GICでは,ena_int/dis_intをサポートすることができる.
    6971 */
    7072#define TOPPERS_TARGET_SUPPORT_ENA_INT          /* ena_int */
  • asp3_wo_tecs/trunk/arch/arm_gcc/mpcore/chip_kernel_impl.c

    r302 r305  
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: chip_kernel_impl.c 357 2015-07-25 12:05:26Z ertl-hiro $
     55 *  $Id: chip_kernel_impl.c 538 2016-01-16 01:27:50Z ertl-hiro $
    5656 */
    5757
     
    7171{
    7272        /*
    73          *  コア依存の初期化
    74          */
    75         core_initialize();
    76 
    77         /*
    7873         *  キャッシュをディスエーブル
    7974         */
     
    8176
    8277        /*
    83          *  MMUを有効に
     78         *  コア依存の初期化
    8479         */
    85         arm_mmu_initialize();
     80        core_initialize();
    8681
    8782        /*
  • asp3_wo_tecs/trunk/arch/arm_gcc/mpcore/chip_timer.h

    r302 r305  
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: chip_timer.h 358 2015-07-26 10:26:23Z ertl-hiro $
     55 *  $Id: chip_timer.h 537 2016-01-16 01:26:38Z ertl-hiro $
    5656 */
    5757
     
    6060蔵タイマ用)
    6161 *
    62  *  ARM11 MPCoreには,コア毎にタイマとウォッチドッグがある.ウォッチドッ
    63  *  グは,タイマとして使用することもできるため,この2つのタイマを使って
    64  *  高分解能タイマを実現する.å
    65 ·ä½“的には,ウォッチドッグをタイマモード
    66  *  に設定して現在時刻の管理のために用い,タイマを相対時間割込みの発生
    67  *  のために用いる.
     62 *  MPCoreには,コア毎にプライベートタイマとプライベートウォッチドッグ
     63 *  を持つ.ウォッチドッグは,タイマとして使用することもできるため,こ
     64 *  の2つのタイマを使って高分解能タイマを実現する.å
     65·ä½“的には,ウォッチ
     66 *  ドッグをタイマモードに設定して現在時刻の管理のために用い,タイマを
     67 *  相対時間割込みの発生のために用いる.
    6868 */
    6969
  • asp3_wo_tecs/trunk/configure.rb

    r304 r305  
    5454#  の責任を負わない.
    5555#
    56 #  $Id: configure.rb 575 2016-02-02 23:16:20Z ertl-hiro $
     56#  $Id: configure.rb 585 2016-02-05 10:58:56Z ertl-hiro $
    5757#
    5858
     
    8888#                                               ã®æŒ‡å®š
    8989#  -V <devtooldir>              開発ツール(コンパイラ等)の置かれているディレクトリ
    90 #  -p <perl>                    perlのパス名(明示的に指定する場合)
    9190#  -R <ruby>                    rubyのパス名(明示的に指定する場合)
    9291#  -g <cfg>                             ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚¿ï¼ˆcfg)のパス名
    9392#  -G <tecsgen>                 TECSジェネレータ(tecsgen)のパス名
    94 #  -P <prcnum>                  プロセッサ数(マルチプロセッサ対応カーネルの場合)
    9593#  -o <options>                 ã‚³ãƒ³ãƒ‘イルオプション(COPTSに追加)
    9694#  -O <options>                 ã‚·ãƒ³ãƒœãƒ«å®šç¾©ã‚ªãƒ—ション(CDEFSに追加)
     
    111109#  % ../configure.rb -T ct11mpcore_gcc -O "-DTOPPERS_USE_QEMU" -A tSample2 -t
    112110#       ã‚¢ãƒ—リケーションプログラムは,TECS版のサンプルプログラムになる.
     111#
     112#  使用例(4)
     113#
     114#  % ../configure.rb -T ct11mpcore_gcc PRC_NUM=4
     115#       PRC_NUMを4に定義する.
    113116
    114117#
     
    126129$enable_trace = ""
    127130$devtooldir = ""
    128 $perl = "perl"
    129131$ruby = "ruby"
    130 $prc_num = ""
    131132$copts = []
    132133$cdefs = []
     
    136137#  オプションの処理
    137138#
    138 option = {}
    139139OptionParser.new(nil, 22) do |opt|
    140140  opt.on("-T target",           "taget name (mandatory)") do |val|
     
    189189    $devtooldir = val
    190190  end
    191   opt.on("-p perl",                     "path of perl command") do |val|
    192     $perl = val
    193   end
    194191  opt.on("-R ruby",                     "path of ruby command") do |val|
    195192    $ruby = val
     
    200197  opt.on("-G tecsgen",          "path of TECS generator") do |val|
    201198    $tecsgen = val
    202   end
    203   opt.on("-P prcnum",           "number of processors") do |val|
    204     $prc_num = val
    205199  end
    206200  opt.on("-o options",          "compiler options") do |val|
     
    307301$vartable["ENABLE_TRACE"] = $enable_trace
    308302$vartable["DEVTOOLDIR"] = $devtooldir
    309 $vartable["PERL"] = $perl
    310303$vartable["RUBY"] = $ruby
    311304$vartable["CFG"] = $cfg
    312305$vartable["TECSGEN"] = $tecsgen
    313 $vartable["PRC_NUM"] = $prc_num
    314306$vartable["COPTS"] = $copts.join(" ")
    315307$vartable["CDEFS"] = $cdefs.join(" ")
    316308$vartable["LDFLAGS"] = $ldflags.join(" ")
    317309$vartable["OBJEXT"] = GetObjectExtension()
     310ARGV.each do |arg|
     311  if /^([A-Za-z0-9_]+)\s*\=\s*(.*)$/ =~ arg
     312    $vartable[$1] = $2
     313  else
     314    $vartable[arg] = true
     315  end
     316end
    318317
    319318#
  • asp3_wo_tecs/trunk/include/kernel.h

    r302 r305  
    5353 *  の責任を負わない.
    5454 *
    55  *  $Id: kernel.h 463 2015-10-18 14:25:55Z ertl-hiro $
     55 *  $Id: kernel.h 520 2016-01-14 05:06:26Z ertl-hiro $
    5656 */
    5757
     
    548548#define TKERNEL_PRID    UINT_C(0x0007)  /* カーネルの識別番号 */
    549549#define TKERNEL_SPVER   UINT_C(0xf630)  /* カーネル仕様のバージョン番号 */
    550 #define TKERNEL_PRVER   UINT_C(0x30b0)  /* カーネルのバージョン番号 */
     550#define TKERNEL_PRVER   UINT_C(0x3000)  /* カーネルのバージョン番号 */
    551551
    552552/*
  • asp3_wo_tecs/trunk/kernel/alarm.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: alarm.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: alarm.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656#
    5757
     
    6565  end
    6666
    67   def prepare(id, params)
     67  def prepare(key, params)
    6868    # almatrが無効の場合(E_RSATR)[NGKI2491ï¼½
    6969    #(TA_STA以外のビットがセットされている場合)
     
    7474    # 通知æƒ
    7575報の処理
    76     params[:nfyhdr] = generateNotifyHandler(id, params, :almid)
     76    params[:nfyhdr] = generateNotifyHandler(key, params, :almid)
    7777  end
    7878
    79   def generateInib(id, params)
     79  def generateInib(key, params)
    8080    return("(#{params[:almatr]}), (intptr_t)(#{params[:par1]}), " \
    8181                                                                                                "#{params[:nfyhdr]}")
  • asp3_wo_tecs/trunk/kernel/cyclic.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: cyclic.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: cyclic.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656#
    5757
     
    6565  end
    6666
    67   def prepare(id, params)
     67  def prepare(key, params)
    6868    # cycatrが無効の場合(E_RSATR)[NGKI2383ï¼½
    6969    #(TA_STA以外のビットがセットされている場合)
     
    8484    # 通知æƒ
    8585報の処理
    86     params[:nfyhdr] = generateNotifyHandler(id, params, :cycid)
     86    params[:nfyhdr] = generateNotifyHandler(key, params, :cycid)
    8787  end
    8888
    89   def generateInib(id, params)
     89  def generateInib(key, params)
    9090    return("(#{params[:cycatr]}), (intptr_t)(#{params[:par1]}), " \
    9191                        "#{params[:nfyhdr]}, (#{params[:cyctim]}), (#{params[:cycphs]})")
  • asp3_wo_tecs/trunk/kernel/dataqueue.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: dataqueue.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: dataqueue.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656#
    5757
     
    6565  end
    6666
    67   def prepare(id, params)
     67  def prepare(key, params)
    6868    # dtqatrが無効の場合(E_RSATR)[NGKI1669ï¼½
    6969    #(TA_TPRI以外のビットがセットされている場合)
     
    8484  end
    8585
    86   def generateInib(id, params)
     86  def generateInib(key, params)
    8787    if params[:dtqcnt] > 0
    8888      dtqmb = "_kernel_dtqmb_#{params[:dtqid]}"
  • asp3_wo_tecs/trunk/kernel/eventflag.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: eventflag.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: eventflag.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656#
    5757
     
    6565  end
    6666
    67   def prepare(id, params)
     67  def prepare(key, params)
    6868    # flgatrが無効の場合(E_RSATR)[NGKI1562ï¼½
    6969    #(TA_TPRI,TA_WMUL,TA_CLR以外のビットがセットされている場合)
     
    7878  end
    7979
    80   def generateInib(id, params)
     80  def generateInib(key, params)
    8181    return("(#{params[:flgatr]}), (#{params[:iflgptn]})")
    8282  end
  • asp3_wo_tecs/trunk/kernel/exception.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: exception.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: exception.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656#
    5757
     
    6868#  CPU例外ハンドラに関するエラーチェック
    6969#
    70 $cfgData[:DEF_EXC].each do |id, params|
     70$cfgData[:DEF_EXC].each do |key, params|
    7171  # excnoがCPU例外ハンドラ番号として正しくない場合(E_PAR)[NGKI3134ï¼½
    7272  if $EXCNO_VALID.index(params[:excno]).nil?
     
    9999    #  CPU例外ハンドラのエントリ
    100100    #
    101     $cfgData[:DEF_EXC].each do |id, params|
     101    $cfgData[:DEF_EXC].each do |key, params|
    102102      $kernelCfgC.add("EXCHDR_ENTRY(#{params[:excno]}, " \
    103103                                                "#{params[:excno].val}, #{params[:exchdr]})")
     
    109109    #
    110110    $kernelCfgC.add("const EXCINIB _kernel_excinib_table[TNUM_DEF_EXCNO] = {")
    111     $cfgData[:DEF_EXC].each_with_index do |(id, params), index|
     111    $cfgData[:DEF_EXC].each_with_index do |(key, params), index|
    112112      $kernelCfgC.add(",") if index > 0
    113113      $kernelCfgC.append("\t{ (#{params[:excno]}), (#{params[:excatr]}), " \
  • asp3_wo_tecs/trunk/kernel/interrupt.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: interrupt.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: interrupt.trb 612 2016-02-08 04:27:57Z ertl-hiro $
    5656#
    5757
     
    6565$kernelCfgH.add("#define TNUM_ISRID\t#{$cfgData[:CRE_ISR].size}")
    6666
    67 $cfgData[:CRE_ISR].sort.each do |id, params|
     67$cfgData[:CRE_ISR].sort.each do |key, params|
    6868  $kernelCfgH.add("#define #{params[:isrid]}\t#{params[:isrid].val}")
    6969end
     
    127127#  割込み要求ラインに関するエラーチェック
    128128#
    129 $cfgData[:CFG_INT].each do |id, params|
     129$cfgData[:CFG_INT].each do |key, params|
    130130  #     intnoが割込み番号として正しくない場合(E_PAR)[NGKI2972ï¼½
    131131  if $INTNO_VALID.index(params[:intno]).nil?
     
    172172#  割込みハンドラに関するエラーチェック
    173173#
    174 $cfgData[:DEF_INH].each do |id, params|
     174$cfgData[:DEF_INH].each do |key, params|
    175175  # inhnoが割込みハンドラ番号として正しくない場合(E_PAR)[NGKI3055ï¼½
    176176  if $INHNO_VALID.index(params[:inhno]).nil?
     
    243243#  割込みサービスルーチン(ISR)に関するエラーチェックと割込みハンドラの生成
    244244#
    245 $cfgData[:CRE_ISR].sort.each do |id, params|
     245$cfgData[:CRE_ISR].sort.each do |key, params|
    246246  #     isratrが無効の場合(E_RSATR)[NGKI2998ï¼½
    247247  #(TARGET_ISRATR以外のビットがセットされている場合)
     
    264264
    265265$INTNO_CREISR_VALID.each do |intnoVal|
    266   inhnoVal = $toInhnoVal[intnoVal]
    267 
    268266  # 割込み番号intnoに対して登録されたISRのリストの作成
    269267  isrParamsList = []
    270   $cfgData[:CRE_ISR].sort.each do |id, params|
    271     if params[:intno] == intnoVal
     268  $cfgData[:CRE_ISR].sort.each do |key, params|
     269    if params[:intno].val == intnoVal
    272270      isrParamsList.push(params)
    273271    end
     
    276274  #     å‰²è¾¼ã¿ç•ªå·intnoに対して登録されたISRが存在する場合
    277275  if isrParamsList.size > 0
     276    inhnoVal = $toInhnoVal[intnoVal]
     277
    278278    # intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ)[NGKI3013ï¼½
    279279    if $cfgData[:DEF_INH].has_key?(inhnoVal)
     
    312312    $cfgData[:DEF_INH][inhnoVal] = params
    313313
    314     # ISR用の割込みハンドラ
     314    # 割込みサービスルーチン用の割込みハンドラ
    315315    $kernelCfgC.add("void")
    316316    $kernelCfgC.add("_kernel_inthdr_#{intnoVal}(void)")
    317317    $kernelCfgC.add("{")
    318     # ISRを優å
     318    # 割込みサービスルーチンを優å
    319319ˆåº¦é †ã«å‘¼ã³å‡ºã™
    320     isrParamsList.sort_by {|params| params[:isrpri]}.each_with_index \
    321                                                                                                                 do |params, index|
     320    i = 0               # stable sortを行うための変数
     321    isrParamsList.sort_by {|params| [ params[:isrpri].val, i += 1 ]} \
     322                                                                                .each_with_index do |params, index|
    322323      if index > 0
    323324        $kernelCfgC.add
     
    353354    #  割込みハンドラのエントリ
    354355    #
    355     $cfgData[:DEF_INH].each do |id, params|
     356    $cfgData[:DEF_INH].each do |key, params|
    356357      if (params[:inhatr] & $TA_NONKERNEL) == 0
    357358        $kernelCfgC.add("INTHDR_ENTRY(#{params[:inhno]}, " \
     
    365366    #
    366367    $kernelCfgC.add("const INHINIB _kernel_inhinib_table[TNUM_DEF_INHNO] = {")
    367     $cfgData[:DEF_INH].each_with_index do |(id, params), index|
     368    $cfgData[:DEF_INH].each_with_index do |(key, params), index|
    368369      $kernelCfgC.add(",") if index > 0
    369370      if (params[:inhatr] & $TA_NONKERNEL) == 0
     
    402403  if $cfgData[:CFG_INT].size != 0
    403404    $kernelCfgC.add("const INTINIB _kernel_intinib_table[TNUM_CFG_INTNO] = {")
    404     $cfgData[:CFG_INT].each_with_index do |(id, params), index|
     405    $cfgData[:CFG_INT].each_with_index do |(key, params), index|
    405406      $kernelCfgC.add(",") if index > 0
    406407      $kernelCfgC.append("\t{ (#{params[:intno]}), (#{params[:intatr]}), " \
  • asp3_wo_tecs/trunk/kernel/kernel.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: kernel.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: kernel.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656#
    5757
     
    136136
    137137    # オブジェクトのID番号のマクロ定義の生成
    138     $cfgData[@api].sort.each do |id, params|
     138    $cfgData[@api].sort.each do |key, params|
    139139      $kernelCfgH.add("#define #{params[@objid]}\t#{params[@objid].val}")
    140140    end
     
    142142
    143143    # オブジェクトのID番号を保持する変数
    144     if $USE_EXTERNAL_ID
    145       $cfgData[@api].sort.each do |id, params|
     144    if !$USE_EXTERNAL_ID.nil?
     145      $cfgData[@api].sort.each do |key, params|
    146146        $kernelCfgC.add("const ID #{params[@objid]}_id" \
    147147                                                                                " = #{params[@objid].val};")
     
    157157    if $cfgData[@api].size > 0
    158158      # 事前準備(エラーチェック,メモリ領域の生成)
    159       $cfgData[@api].sort.each do |id, params|
    160         prepare(id, params)
     159      $cfgData[@api].sort.each do |key, params|
     160        prepare(key, params)
    161161      end
    162162
     
    171171      $kernelCfgC.add("const #{@OBJ_S}INIB _kernel_#{@obj_s}inib_table" \
    172172                                                                                                        "[TNUM_#{@OBJ}ID] = {")
    173       $cfgData[@api].sort.each_with_index do |(id, params), index|
     173      $cfgData[@api].sort.each_with_index do |(key, params), index|
    174174        $kernelCfgC.add(",") if index > 0
    175         $kernelCfgC.append("\t{ " + generateInib(id, params) + " }")
     175        $kernelCfgC.append("\t{ " + generateInib(key, params) + " }")
    176176      end
    177177      $kernelCfgC.add
     
    197197#  通知ハンドラの生成関数
    198198#
    199 def generateNotifyHandler(id, params, objid)
     199def generateNotifyHandler(key, params, objid)
    200200  # パラメータを変数に格納
    201201  nfymode = params[:nfymode]
     
    376376
    377377  # DEF_ICSがある場合の処理
    378   params = $cfgData[:DEF_ICS].values[0]
     378  params = $cfgData[:DEF_ICS][1]
    379379
    380380  # istkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ,未定義の場合は1)
     
    439439
    440440# エラーチェック
    441 $cfgData[:ATT_INI].each do |id, params|
     441$cfgData[:ATT_INI].each do |key, params|
    442442  # iniatrが無効の場合(E_RSATR)[NGKI3241ï¼½
    443443  #(TA_NULLでない場合)
     
    453453{
    454454EOS
    455 $cfgData[:ATT_INI].each do |id, params|
     455$cfgData[:ATT_INI].each do |key, params|
    456456  $kernelCfgC.add("\t((INIRTN)(#{params[:inirtn]}))" \
    457457                                                                "((intptr_t)(#{params[:exinf]}));")
     
    465465
    466466# エラーチェック
    467 $cfgData[:ATT_TER].each do |id, params|
     467$cfgData[:ATT_TER].each do |key, params|
    468468  # teratrが無効の場合(E_RSATR)[NGKI3248ï¼½
    469469  #(TA_NULLでない場合)
     
    479479{
    480480EOS
    481 $cfgData[:ATT_TER].reverse_each do |id, params|
     481$cfgData[:ATT_TER].reverse_each do |key, params|
    482482  $kernelCfgC.add("\t((TERRTN)(#{params[:terrtn]}))" \
    483483                                                                "((intptr_t)(#{params[:exinf]}));")
     
    489489#
    490490$kernelCfgH.append(<<EOS)
    491 
    492491#endif /* TOPPERS_KERNEL_CFG_H */
    493492EOS
  • asp3_wo_tecs/trunk/kernel/kernel_check.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: kernel_check.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: kernel_check.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656
    5757
     
    9292$tmax_dtqid = PEEK(SYMBOL("_kernel_tmax_dtqid"), $sizeof_ID)
    9393
    94 def checkNotifyHandler(id, params, objid, exinf, nfyhdr)
     94def checkNotifyHandler(key, params, objid, exinf, nfyhdr)
    9595  # パラメータを変数に格納
    9696  nfymode = params[:nfymode]
     
    244244#
    245245tinib = SYMBOL("_kernel_tinib_table")
    246 $cfgData[:CRE_TSK].each do |id, params|
     246$cfgData[:CRE_TSK].each do |key, params|
    247247  # タスクのå
    248248ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI1033ï¼½
     
    258258ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI1056ï¼½
    259259  if $USE_TSKINICTXB == 1
    260     stk = GetStackTskinictxb(id, params)
     260    stk = GetStackTskinictxb(key, params)
    261261  else
    262262    stk = PEEK(tinib + $offsetof_TINIB_stk, $sizeof_void_ptr)
     
    273273
    274274#
    275 #  周期通知に関するチェック
    276 #
    277 cycinib = SYMBOL("_kernel_cycinib_table")
    278 $cfgData[:CRE_CYC].each do |id, params|
    279   exinf = PEEK(cycinib + $offsetof_CYCINIB_exinf, $sizeof_intptr_t)
    280   nfyhdr = PEEK(cycinib + $offsetof_CYCINIB_nfyhdr, $sizeof_FP)
    281 
    282   #     é€šçŸ¥æƒ
    283 å ±ã®ãƒã‚§ãƒƒã‚¯
    284   checkNotifyHandler(id, params, :cycid, exinf, nfyhdr)
    285 
    286   cycinib += $sizeof_CYCINIB
    287 end
    288 
    289 #
    290 #  アラーム通知に関するチェック
    291 #
    292 alminib = SYMBOL("_kernel_alminib_table")
    293 $cfgData[:CRE_ALM].each do |id, params|
    294   exinf = PEEK(alminib + $offsetof_ALMINIB_exinf, $sizeof_intptr_t)
    295   nfyhdr = PEEK(alminib + $offsetof_ALMINIB_nfyhdr, $sizeof_FP)
    296 
    297   #     é€šçŸ¥æƒ
    298 å ±ã®ãƒã‚§ãƒƒã‚¯
    299   checkNotifyHandler(id, params, :almid, exinf, nfyhdr)
    300 
    301   alminib += $sizeof_ALMINIB
    302 end
    303 
    304 #
    305275#  固定長メモリプールに関するチェック
    306276#
    307277mpfinib = SYMBOL("_kernel_mpfinib_table")
    308 $cfgData[:CRE_MPF].each do |id, params|
    309   mpf = PEEK(alminib + $offsetof_MPFINIB_mpf, $sizeof_void_ptr)
     278$cfgData[:CRE_MPF].each do |key, params|
     279  mpf = PEEK(mpfinib + $offsetof_MPFINIB_mpf, $sizeof_void_ptr)
    310280
    311281  # 固定長メモリプール領域のå
     
    322292
    323293#
     294#  周期通知に関するチェック
     295#
     296cycinib = SYMBOL("_kernel_cycinib_table")
     297$cfgData[:CRE_CYC].each do |key, params|
     298  exinf = PEEK(cycinib + $offsetof_CYCINIB_exinf, $sizeof_intptr_t)
     299  nfyhdr = PEEK(cycinib + $offsetof_CYCINIB_nfyhdr, $sizeof_FP)
     300
     301  #     é€šçŸ¥æƒ
     302報のチェック
     303  checkNotifyHandler(key, params, :cycid, exinf, nfyhdr)
     304
     305  cycinib += $sizeof_CYCINIB
     306end
     307
     308#
     309#  アラーム通知に関するチェック
     310#
     311alminib = SYMBOL("_kernel_alminib_table")
     312$cfgData[:CRE_ALM].each do |key, params|
     313  exinf = PEEK(alminib + $offsetof_ALMINIB_exinf, $sizeof_intptr_t)
     314  nfyhdr = PEEK(alminib + $offsetof_ALMINIB_nfyhdr, $sizeof_FP)
     315
     316  #     é€šçŸ¥æƒ
     317報のチェック
     318  checkNotifyHandler(key, params, :almid, exinf, nfyhdr)
     319
     320  alminib += $sizeof_ALMINIB
     321end
     322
     323#
    324324#  非タスクコンテキスト用のスタック領域に関するチェック
    325325#
     
    329329ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3222ï¼½
    330330if (istk & ($CHECK_STACK_ALIGN - 1)) != 0
    331   error_wrong("E_PAR", $cfgData[:DEF_ICS][0], :istk, "not aligned")
     331  error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "not aligned")
    332332end
    333333if $CHECK_STACK_NONNULL == 1 && istk == 0
    334   error_wrong("E_PAR", $cfgData[:DEF_ICS][0], :istk, "null")
    335 end
     334  error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "null")
     335end
  • asp3_wo_tecs/trunk/kernel/kernel_sym.def

    r304 r305  
     1USE_EXTERNAL_ID,1,,defined(USE_EXTERNAL_ID)
    12SIL_ENDIAN_BIG,1,,defined(SIL_ENDIAN_BIG)
    23SIL_ENDIAN_LITTLE,1,,defined(SIL_ENDIAN_LITTLE)
  • asp3_wo_tecs/trunk/kernel/mempfix.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: mempfix.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: mempfix.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656#
    5757
     
    6565  end
    6666
    67   def prepare(id, params)
     67  def prepare(key, params)
    6868    # mpfatrが無効の場合(E_RSATR)[NGKI2225ï¼½
    6969    #(TA_TPRI以外のビットがセットされている場合)
     
    9898  end
    9999
    100   def generateInib(id, params)
     100  def generateInib(key, params)
    101101    if params[:mpf] == "NULL"
    102102      mpf = "_kernel_mpf_#{params[:mpfid]}"
  • asp3_wo_tecs/trunk/kernel/mutex.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: mutex.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: mutex.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656#
    5757
     
    6565  end
    6666
    67   def prepare(id, params)
     67  def prepare(key, params)
    6868    # mtxatrが無効の場合(E_RSATR)[NGKI2025ï¼½
    6969    # (TA_NULL,TA_TPRI,TA_CEILINGのいずれでもない場合)
     
    9898  end
    9999
    100   def generateInib(id, params)
     100  def generateInib(key, params)
    101101    return("(#{params[:mtxatr]}), INT_PRIORITY(#{params[:ceilpri]})")
    102102  end
  • asp3_wo_tecs/trunk/kernel/pridataq.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: pridataq.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: pridataq.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656#
    5757
     
    6666  end
    6767
    68   def prepare(id, params)
     68  def prepare(key, params)
    6969    # pdqatrが無効の場合(E_RSATR)[NGKI1804ï¼½
    7070    #(TA_TPRI以外のビットがセットされている場合)
     
    9292  end
    9393
    94   def generateInib(id, params)
     94  def generateInib(key, params)
    9595    if params[:pdqcnt] > 0
    9696      pdqmb = "_kernel_pdqmb_#{params[:pdqid]}"
  • asp3_wo_tecs/trunk/kernel/semaphore.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: semaphore.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: semaphore.trb 588 2016-02-05 12:54:58Z ertl-hiro $
    5656#
    5757
     
    6565  end
    6666
    67   def prepare(id, params)
     67  def prepare(key, params)
    6868    # sematrが無効の場合(E_RSATR)[NGKI1456ï¼½
    6969    #(TA_TPRI以外のビットがセットされている場合)
     
    8383  end
    8484
    85   def generateInib(id, params)
     85  def generateInib(key, params)
    8686    return("(#{params[:sematr]}), (#{params[:isemcnt]}), (#{params[:maxsem]})")
    8787  end
  • asp3_wo_tecs/trunk/kernel/task.trb

    r304 r305  
    5353#   ã®è²¬ä»»ã‚’負わない.
    5454#
    55 #   $Id: task.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     55#   $Id: task.trb 596 2016-02-06 17:08:56Z ertl-hiro $
    5656#
    5757
     
    6565  end
    6666
    67   def prepare(id, params)
     67  def prepare(key, params)
    6868    # tskatrが無効の場合(E_RSATR)[NGKI1028ï¼½
    6969    #(TA_ACT,TA_NOACTQUE,TARGET_TSKATR以外のビットがセットされている場合)
     
    8383    end
    8484
    85     # stkszがスタック領域のサイズとして正しくない場合[NGKI1056ï¼½
    86     if (params[:stksz] & ($CHECK_STKSZ_ALIGN - 1)) != 0
    87       error_wrong_id("E_PAR", params, :stksz, :tskid, "not aligned")
    88     end
    89 
    9085    # スタック領域の設定[NGKI1041ï¼½
    9186    if params[:stk] == "NULL"
     
    9489      params[:tinib_stk] = "_kernel_stack_#{params[:tskid]}"
    9590    else
     91      # stkszがスタック領域のサイズとして正しくない場合[NGKI1056ï¼½
     92      if (params[:stksz] & ($CHECK_STKSZ_ALIGN - 1)) != 0
     93        error_wrong_id("E_PAR", params, :stksz, :tskid, "not aligned")
     94      end
     95
    9696      params[:tinib_stksz] = params[:stksz]
    9797      params[:tinib_stk] = "(void *)(#{params[:stk]})"
     
    9999  end
    100100
    101   def generateInib(id, params)
     101  def generateInib(key, params)
    102102    if $USE_TSKINICTXB == 1
    103       tskinictxb = GenerateTskinictxb(id, params)
     103      tskinictxb = GenerateTskinictxb(key, params)
    104104    else
    105105      tskinictxb = "#{params[:tinib_stksz]}, #{params[:tinib_stk]}"
     
    124124$kernelCfgC.add("const ID _kernel_torder_table[TNUM_TSKID] = { ")
    125125$kernelCfgC.append("\t")
    126 $cfgData[:CRE_TSK].each_with_index do |(id, params), index|
     126$cfgData[:CRE_TSK].each_with_index do |(key, params), index|
    127127  $kernelCfgC.append(", ") if index > 0
    128128  $kernelCfgC.append("#{params[:tskid]}")
  • asp3_wo_tecs/trunk/kernel/time_event.c

    r302 r305  
    8585/*
    8686 *  タイムイベントヒープ操作マクロ
    87  *
    88  *  PARENTとCHILDの素直な定義は次の通りであるが,より実行効率の良いマク
    89  *  ロ定義としている.
    90  *  #define PARENT(p_tmevtn) (tmevt_heap + (((p_tmevtn) - tmevt_heap) >> 1))
    91  *  #define LCHILD(p_tmevtn) (tmevt_heap + (((p_tmevtn) - tmevt_heap) << 1))
    92  *
    93  *  下のPARENTの定義は,TMEVTNのé
    94 åˆ—が,sizeof(TMEVTN)の単位でアライン
    95  *  されていることを想定している.この前提が成立しない場合は,上の定義
    96  *  を使用するå¿
    97 è¦ãŒã‚る.
    98  */
    99 #define PARENT(p_tmevtn)                                /* 親ノードを求める */          \
    100                 ((TMEVTN *)(((((uintptr_t) tmevt_heap)                                          \
    101                                 + ((uintptr_t)(p_tmevtn))) >> 1) & ~(sizeof(TMEVTN) - 1)))
    102 #define LCHILD(p_tmevtn)                                /* 左の子ノードを求める */    \
    103                 ((TMEVTN *)((((uintptr_t)(p_tmevtn)) << 1) - ((uintptr_t) tmevt_heap)))
    104 
     87 */
     88#define PARENT(p_tmevtn)        (tmevt_heap + (((p_tmevtn) - tmevt_heap) >> 1))
     89                                                                                                        /* 親ノードを求める */
     90#define LCHILD(p_tmevtn)        (tmevt_heap + (((p_tmevtn) - tmevt_heap) << 1))
     91                                                                                                        /* 左の子ノードを求める */
    10592/*
    10693 *  タイムイベントヒープ中のå
  • asp3_wo_tecs/trunk/sample/Makefile

    r304 r305  
    362362        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
    363363
     364#
     365#  エラーチェック処理
     366#
    364367.PHONY: check
    365368check: check.timestamp ;
    366369check.timestamp: cfg2_out.db $(OBJNAME).syms $(OBJNAME).srec
    367         $(CFG) --pass 3 --kernel asp $(INCLUDES) -T $(TARGET_CHECK_TRB) \
     370        $(CFG) --pass 3 --kernel asp -O $(INCLUDES) -T $(TARGET_CHECK_TRB) \
    368371                                --rom-symbol $(OBJNAME).syms --rom-image $(OBJNAME).srec
    369372        @echo "configuration check passed"
  • asp3_wo_tecs/trunk/syssvc/histogram.h

    r302 r305  
    6969 *  実行時間分布計測の初期化
    7070 */
    71 extern void     init_hist(ID histid, uint_t maxval, uint_t histarea[]);
     71extern void     init_hist(ID histid);
    7272
    7373/*
  • asp3_wo_tecs/trunk/target/ct11mpcore_gcc/target_kernel_impl.h

    r302 r305  
    7878 *  GIC依存部を使用するための定義
    7979 */
     80#define GIC_ARM11MPCORE
    8081#define GIC_TNUM_INTNO  DIC_TNUM_INTNO
    81 #define GIC_PRI_LEVEL   16
    8282
    8383/*
  • asp3_wo_tecs/trunk/target/dummy_gcc/dummy.h

    r302 r305  
    6666#define TINTNO_HRT              0               /* 高分解能タイマ */
    6767#define TINTNO_OVRTIMER 1               /* オーバランタイマ */
    68 #define TINTNO_SIO              2               /* シリアルI/Oポート */
     68#define TINTNO_SIO              2               /* SIOポート */
    6969
    7070#endif /* TOPPERS_DUMMY_H */
  • asp3_wo_tecs/trunk/target/dummy_gcc/target_kernel_impl.c

    r302 r305  
    6060#include "kernel_impl.h"
    6161#include "task.h"
     62#ifdef TOPPERS_SUPPORT_OVRHDR
     63#include "overrun.h"
     64#endif /* TOPPERS_SUPPORT_OVRHDR */
    6265
    6366/*
  • asp3_wo_tecs/trunk/target/dummy_gcc/target_kernel_impl.h

    r302 r305  
    6565
    6666#include <kernel.h>
    67 #ifndef TOPPERS_MACRO_ONLY
    68 #ifdef TOPPERS_SUPPORT_OVRHDR
    69 #include "overrun.h"
    70 #endif /* TOPPERS_SUPPORT_OVRHDR */
    71 #endif /* TOPPERS_MACRO_ONLY */
    7267
    7368/*
  • asp3_wo_tecs/trunk/target/nucleo_f401re_gcc/Makefile.target

    r303 r305  
    5555
    5656#
    57 #  コンフィギュレータ関係の変数の定義
    58 #
    59 #CFG_TABS := $(CFG_TABS) --cfg1-def-table $(TARGETDIR)/target_def.csv
    60 #CFG1_OUT_LDFLAGS := $(LDFLAGS) -T $(TARGETDIR)/blueninja_ram_cfg1_out.ld
    61 
    62 
    63 #
    6457#  使用するタイマ
    6558#
     
    9184#
    9285cfg1_out.timestamp: $(TARGETDIR)/target_timer.cfg
    93 
    94 #offset.timestamp:
    95 #kernel_cfg.timestamp: $(TARGETDIR)/target_kernel.trb
    96 #check.timestamp: $(TARGETDIR)/target_check.trb
     86offset.timestamp:
     87kernel_cfg.timestamp: $(TARGETDIR)/target_kernel.trb
     88check.timestamp: $(TARGETDIR)/target_check.trb
    9789
    9890#
  • asp3_wo_tecs/trunk/test/bit_kernel.c

    r302 r305  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2005-2015 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    5151 *  の責任を負わない.
    5252 *
    53  *  $Id: bit_kernel.c 456 2015-08-16 06:11:51Z ertl-hiro $
     53 *  $Id: bit_kernel.c 554 2016-01-17 13:21:59Z ertl-hiro $
    5454 */
    5555
     
    167167#endif /* PRIMAP_BIT */
    168168
     169Inline bool_t
     170primap_empty(void)
     171{
     172#ifndef PRIMAP_LEVEL_2
     173        return(ready_primap == 0U);
     174#else /* PRIMAP_LEVEL_2 */
     175        return(ready_primap1 == 0U);
     176#endif /* PRIMAP_LEVEL_2 */
     177}
     178
     179Inline uint16_t
     180primap_extract_bit(uint_t pri)
     181{
     182#ifndef PRIMAP_LEVEL_2
     183        return(ready_primap & PRIMAP_BIT(pri));
     184#else /* PRIMAP_LEVEL_2 */
     185        return(ready_primap2[pri / TBIT_PRIMAP] & PRIMAP_BIT(pri % TBIT_PRIMAP));
     186#endif /* PRIMAP_LEVEL_2 */
     187}
     188
    169189static ER
    170190bit_schedcb(void)
     
    178198         */
    179199        if (enadsp) {
    180                 if (ready_primap == 0U) {
     200                if (primap_empty()) {
    181201                        if (p_schedtsk != NULL) {
    182202                                return(E_SYS_LINENO);
     
    189209                }
    190210        }
     211
     212#ifdef PRIMAP_LEVEL_2
     213        /*
     214         *  ready_primap1とready_primap2の整合性の検査
     215         */
     216        for (pri = 0; pri < TNUM_TPRI; pri += TBIT_PRIMAP) {
     217                if (ready_primap2[pri / TBIT_PRIMAP] == 0U) {
     218                        if ((ready_primap1 & PRIMAP_BIT(pri / TBIT_PRIMAP)) != 0U) {
     219                                return(E_SYS_LINENO);
     220                        }
     221                }
     222                else {
     223                        if ((ready_primap1 & PRIMAP_BIT(pri / TBIT_PRIMAP)) == 0U) {
     224                                return(E_SYS_LINENO);
     225                        }
     226                }
     227        }
     228#endif /* PRIMAP_LEVEL_2 */
    191229
    192230        /*
     
    196234                p_queue = ready_queue[pri].p_next;
    197235                if (p_queue == &ready_queue[pri]) {
    198                         if ((ready_primap & PRIMAP_BIT(pri)) != 0U) {
     236                        if (primap_extract_bit(pri) != 0U) {
    199237                                return(E_SYS_LINENO);
    200238                        }
    201239                }
    202240                else {
    203                         if ((ready_primap & PRIMAP_BIT(pri)) == 0U) {
     241                        if (primap_extract_bit(pri) == 0U) {
    204242                                return(E_SYS_LINENO);
    205243                        }
  • asp3_wo_tecs/trunk/test/perf0.c

    r302 r305  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: perf0.c 506 2016-01-12 01:46:49Z ertl-hiro $
     52 *  $Id: perf0.c 509 2016-01-12 06:06:14Z ertl-hiro $
    5353 */
    5454
     
    7171 */
    7272#define NO_MEASURE      10000U                  /* 計測回数 */
    73 #define MAX_TIME        1000U                   /* 実行時間分布を記録する最大時間 */
    74 
    75 /*
    76  *  実行時間分布を記録するメモリ領域
    77  */
    78 static uint_t   histarea1[MAX_TIME + 1];
    7973
    8074/*
     
    8680
    8781        syslog_0(LOG_NOTICE, "Performance evaluation program (0)");
    88         init_hist(1, MAX_TIME, histarea1);
     82        init_hist(1);
    8983
    9084        for (i = 0; i < NO_MEASURE; i++) {
  • asp3_wo_tecs/trunk/test/perf1.c

    r302 r305  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: perf1.c 506 2016-01-12 01:46:49Z ertl-hiro $
     52 *  $Id: perf1.c 509 2016-01-12 06:06:14Z ertl-hiro $
    5353 */
    5454
     
    7171 */
    7272#define NO_MEASURE      10000U                  /* 計測回数 */
    73 #define MAX_TIME        1000U                   /* 実行時間分布を記録する最大時間 */
    74 
    75 /*
    76  *  実行時間分布を記録するメモリ領域
    77  */
    78 static uint_t   histarea1[MAX_TIME + 1];
    79 static uint_t   histarea2[MAX_TIME + 1];
    8073
    8174/*
     
    121114{
    122115        syslog_0(LOG_NOTICE, "Performance evaluation program (1)");
    123         init_hist(1, MAX_TIME, histarea1);
    124         init_hist(2, MAX_TIME, histarea2);
     116        init_hist(1);
     117        init_hist(2);
    125118
    126119        act_tsk(TASK1);
  • asp3_wo_tecs/trunk/test/perf2.c

    r302 r305  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: perf2.c 506 2016-01-12 01:46:49Z ertl-hiro $
     52 *  $Id: perf2.c 509 2016-01-12 06:06:14Z ertl-hiro $
    5353 */
    5454
     
    7373 */
    7474#define NO_MEASURE      10000U                  /* 計測回数 */
    75 #define MAX_TIME        1000U                   /* 実行時間分布を記録する最大時間 */
    76 
    77 /*
    78  *  実行時間分布を記録するメモリ領域
    79  */
    80 static uint_t   histarea1[MAX_TIME + 1];
    81 
    8275/*
    8376 *  計測ルーチン
     
    9184
    9285        ini_pdq(PDQ1);
    93         init_hist(1, MAX_TIME, histarea1);
     86        init_hist(1);
    9487
    9588        for (i = 0; i < n; i++) {
  • asp3_wo_tecs/trunk/test/perf3.c

    r302 r305  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: perf3.c 506 2016-01-12 01:46:49Z ertl-hiro $
     52 *  $Id: perf3.c 509 2016-01-12 06:06:14Z ertl-hiro $
    5353 */
    5454
     
    7373 */
    7474#define NO_MEASURE      10000U                  /* 計測回数 */
    75 #define MAX_TIME        1000U                   /* 実行時間分布を記録する最大時間 */
    76 
    77 /*
    78  *  実行時間分布を記録するメモリ領域
    79  */
    80 static uint_t   histarea1[MAX_TIME + 1];
    8175
    8276/*
     
    109103        uint_t          i, j;
    110104
    111         init_hist(1, MAX_TIME, histarea1);
     105        init_hist(1);
    112106
    113107        for (i = 0; i < NO_MEASURE; i++) {
  • asp3_wo_tecs/trunk/test/perf4.c

    r302 r305  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: perf4.c 506 2016-01-12 01:46:49Z ertl-hiro $
     52 *  $Id: perf4.c 509 2016-01-12 06:06:14Z ertl-hiro $
    5353 */
    5454
     
    100100 */
    101101#define NO_MEASURE      10000U                  /* 計測回数 */
    102 #define MAX_TIME        1000U                   /* 実行時間分布を記録する最大時間 */
    103 
    104 /*
    105  *  実行時間分布を記録するメモリ領域
    106  */
    107 static uint_t   histarea1[MAX_TIME + 1];
    108 static uint_t   histarea2[MAX_TIME + 1];
    109 static uint_t   histarea3[MAX_TIME + 1];
    110102
    111103/*
     
    174166
    175167        syslog_0(LOG_NOTICE, "Performance evaluation program (4)");
    176         init_hist(1, MAX_TIME, histarea1);
    177         init_hist(2, MAX_TIME, histarea2);
    178         init_hist(3, MAX_TIME, histarea3);
     168        init_hist(1);
     169        init_hist(2);
     170        init_hist(3);
    179171
    180172        /*
  • asp3_wo_tecs/trunk/test/perf5.c

    r302 r305  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    44 *
    5  *  Copyright (C) 2016 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: perf5.c 506 2016-01-12 01:46:49Z ertl-hiro $
     52 *  $Id: perf5.c 544 2016-01-16 05:34:11Z ertl-hiro $
    5353 */
    5454
     
    7171 */
    7272#define NO_MEASURE      10000U                  /* 計測回数 */
    73 #define MAX_TIME        1000U                   /* 実行時間分布を記録する最大時間 */
    74 
    75 /*
    76  *  実行時間分布を記録するメモリ領域
    77  */
    78 static uint_t   histarea1[MAX_TIME + 1];
    79 static uint_t   histarea2[MAX_TIME + 1];
    80 static uint_t   histarea3[MAX_TIME + 1];
    81 static uint_t   histarea4[MAX_TIME + 1];
    82 static uint_t   histarea5[MAX_TIME + 1];
    83 static uint_t   histarea6[MAX_TIME + 1];
    8473
    8574/*
     
    123112
    124113        syslog_0(LOG_NOTICE, "Performance evaluation program (5)");
    125         init_hist(1, MAX_TIME, histarea1);
    126         init_hist(2, MAX_TIME, histarea2);
    127         init_hist(3, MAX_TIME, histarea3);
    128         init_hist(4, MAX_TIME, histarea4);
    129         init_hist(5, MAX_TIME, histarea5);
    130         init_hist(6, MAX_TIME, histarea6);
     114        init_hist(1);
     115        init_hist(2);
     116        init_hist(3);
     117        init_hist(4);
     118        init_hist(5);
     119        init_hist(6);
    131120
    132121        /*
  • asp3_wo_tecs/trunk/test/test_flg1.c

    r304 r305  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_flg1.c 579 2016-02-03 07:29:11Z ertl-hiro $
     52 *  $Id: test_flg1.c 599 2016-02-07 03:33:35Z ertl-hiro $
    5353 */
    5454
     
    169169 *      TASK3: 低優å
    170170ˆåº¦ã‚¿ã‚¹ã‚¯
    171  *      TASK4: 中優å
    172 ˆåº¦ã‚¿ã‚¹ã‚¯
    173  *      TASK5: 中優å
    174 ˆåº¦ã‚¿ã‚¹ã‚¯
    175171 *      ALM1:  アラームハンドラ
    176172 *  FLG1:  TA_NULL属性,初期ビットパターン0x00
     
    191187 *      2:      loc_cpu()
    192188 *              set_flg(FLG1, 0x01) -> E_CTX                                                            ... (A-1)
    193  *              wai_flg(FLG1)
    194189 *              wai_flg(FLG1, 0x01, TWF_ORW, &flgptn) -> E_CTX                          ... (D-2)
    195190 *              unl_cpu()
     
    343338#include "syssvc/test_svc.h"
    344339#include "kernel_cfg.h"
    345 #include "test_sem1.h"
     340#include "test_flg1.h"
    346341
    347342/* DO NOT DELETE THIS LINE -- gentest depends on it. */
  • asp3_wo_tecs/trunk/test/test_flg1.h

    r304 r305  
    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) 2015-2016 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
     
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_flg1.h 579 2016-02-03 07:29:11Z ertl-hiro $
     52 *  $Id: test_flg1.h 599 2016-02-07 03:33:35Z ertl-hiro $
    5353 */
    5454
    5555/*
    56  *              セマフォ機能のテスト(1)
     56 *              イベントフラグ機能のテスト(1)
    5757 */
    5858
  • asp3_wo_tecs/trunk/test/test_raster2.c

    r302 r305  
    5050 *  の責任を負わない.
    5151 *
    52  *  $Id: test_raster2.c 310 2015-02-08 13:46:46Z ertl-hiro $
     52 *  $Id: test_raster2.c 603 2016-02-07 12:42:10Z ertl-hiro $
    5353 */
    5454
     
    124124‹ã«ï¼»NGKI1178ï¼½
    125125 *      ASPカーネルに適用されない要求:
    126  *              ï¼»NGKI3485][NGKI3490][NGKI3497ï¼½
     126 *              ï¼»NGKI3764][NGKI3765][NGKI3497ï¼½
    127127 *
    128128 * 【使用リソース】
Note: See TracChangeset for help on using the changeset viewer.