Ignore:
Timestamp:
Jul 3, 2020, 7:19:17 PM (4 years ago)
Author:
coas-nagasima
Message:

ASP3, TINET, mbed を更新

Location:
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/Makefile.chip

    r321 r429  
    22#               Makefile のチップ依存部(RZ/A1用)
    33#
    4 #  $Id$
     4#  $Id: Makefile.chip 720 2016-04-01 22:16:17Z ertl-hiro $
    55#
    66
     
    2222#
    2323KERNEL_DIRS := $(KERNEL_DIRS) $(CHIPDIR)
     24KERNEL_COBJS := $(KERNEL_COBJS) chip_kernel_impl.o mpcore_kernel_impl.o \
     25                                                                        gic_kernel_impl.o pl310.o chip_timer.o
    2426KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) gic_support.o
    25 KERNEL_COBJS := $(KERNEL_COBJS) chip_kernel_impl.o gic_kernel_impl.o \
    26                                                                                                                         chip_timer.o
     27
     28#
     29#  システムサービスに関する定義
     30#
     31SYSSVC_DIRS := $(SYSSVC_DIRS) $(CHIPDIR)
    2732
    2833#
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_kernel.h

    r321 r429  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems/
    44 *      Advanced Standard Profile Kernel
    5  *
    6  *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
     5 * 
     6 *  Copyright (C) 2006-2018 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    8  *
     8 * 
    99 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    1010 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2929 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    3030 *      免責すること.
    31  *
     31 * 
    3232 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3333 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3535 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3636 *  の責任を負わない.
    37  *
     37 * 
    3838 *  $Id$
    3939 */
     
    4242 *              kernel.hのターゲット依存部(RZ/A1用)
    4343 *
    44  *  このヘッダファイルは,kernel.hからインクルードされる.他のファイル
    45  *  から直接インクルードすることはない.このファイルをインクルードする
    46  *  前に,t_stddef.hがインクルードされるので,それに依存してもよい.
     44 *  このヘッダファイルは,target_kernel.h(または,そこからインクルー
     45 *  ドされるファイル)のみからインクルードされる.他のファイルから直接
     46 *  インクルードしてはならない.
    4747 */
    4848
     
    6666 *  サポートできる機能の定義
    6767 *
    68  *  ena_int/dis_intとオーバランハンドラをサポートすることができる.
     68 *  ena_int/dis_int/clr_int/ras_int/prb_intとオーバランハンドラを
     69 *  サポートすることができる.
    6970 */
    7071#define TOPPERS_TARGET_SUPPORT_ENA_INT          /* ena_int */
    7172#define TOPPERS_TARGET_SUPPORT_DIS_INT          /* dis_int */
     73#define TOPPERS_TARGET_SUPPORT_CLR_INT          /* clr_int */
     74#define TOPPERS_TARGET_SUPPORT_RAS_INT          /* ras_int */
     75#define TOPPERS_TARGET_SUPPORT_PRB_INT          /* prb_int */
    7276#define TOPPERS_TARGET_SUPPORT_OVRHDR
    73 
    74 /*
    75  *  高分解能タイマのタイマ周期
    76  *
    77  *  2^32 / 33.33…を丸めた値とする.
    78  */
    79 #define TCYC_HRTCNT             128849019U
    80 
    81 /*
    82  *  高分解能タイマのカウント値の進み幅
    83  */
    84 #define TSTEP_HRTCNT    1U
    85 
    86 /*
    87  *  オーバランハンドラの残りプロセッサ時間に指定できる最大値
    88  *
    89  *  この値をOSタイマへの設定値に変換してタイマに設定した後,タイマの現
    90  *  在値を読み出してμ秒単位に変換できる値としている.タイマの現在値を
    91  *  μ秒単位に変換する時に34を加えるため,以下の条件を満たす最大の値と
    92  *  する.
    93  *              (TMAX_OVRTIM * 33 + TMAX_OVRTIM / 3 + 1) + 34 < 2^32
    94  */
    95 #define TMAX_OVRTIM             128849017U
    9677
    9778/*
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_kernel.trb

    r321 r429  
    2727#  割込み要求ライン属性に関するターゲット依存のエラーチェック
    2828#
    29 $cfgData[:CFG_INT].each do |key, params|
    30   if $INTNO_IRQ0 <= key && key <= $INTNO_IRQ7
     29$cfgData[:CFG_INT].each do |_, params|
     30  if $INTNO_IRQ0 <= params[:intno] && params[:intno] <= $INTNO_IRQ7
    3131    # IRQ割込みの場合
    3232    #(TA_EDGEがセットされている場合)
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_kernel_impl.c

    r321 r429  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems/
    44 *      Advanced Standard Profile Kernel
    5  *
     5 * 
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2006-2018 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    10  *
     10 * 
    1111 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    1212 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    3131 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    3232 *      免責すること.
    33  *
     33 * 
    3434 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3535 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3737 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3838 *  の責任を負わない.
    39  *
     39 * 
    4040 *  $Id$
    4141 */
     
    4646
    4747#include "kernel_impl.h"
     48#include <sil.h>
    4849#include "interrupt.h"
     50#include "pl310.h"
    4951
    5052/*
     
    5557{
    5658        /*
    57          *  キャッシュをディスエーブル
     59         *  MPCore依存の初期化
    5860         */
    59         arm_disable_cache();
     61        mpcore_initialize();
    6062
    6163        /*
    62          *  コア依存の初期化
     64         *  L2キャッシュコントローラ(PL310)の初期化
    6365         */
    64         core_initialize();
    65 
    66         /*
    67          *  キャッシュをイネーブル
    68          */
    69         arm_enable_cache();
    70 
    71         /*
    72          *  GICのディストリビュータの初期化
    73          */
    74         gicd_initialize();
    75 
    76         /*
    77          *  GICのCPUインタフェースの初期化
    78          */
    79         gicc_initialize();
    80 
    81         /*
    82          *  分岐予測の無効化とイネーブル
    83          */
    84         arm_invalidate_bp();
    85         arm_enable_bp();
     66        pl310_initialize(0x0U, ~0x0U);
    8667}
    8768
    8869/*
    89  *  チップ依存の終了処理
     70 *  チップ依存の終了処理
    9071 */
    9172void
    9273chip_terminate(void)
    9374{
    94         extern void    software_term_hook(void);
    95         void (*volatile fp)(void) = software_term_hook;
    96 
    9775        /*
    98          *  software_term_hookへのポインタを,一旦volatile指定のあるfpに代
    99          *  入してから使うのは,0との比較が最適化で削除されないようにするた
    100          *  めである.
     76         *  MPCore依存の終了処理
    10177         */
    102         if (fp != 0) {
    103                 (*fp)();
    104         }
    105 
    106         /*
    107          *  GICのCPUインタフェースの終了処理
    108          */
    109         gicc_terminate();
    110 
    111         /*
    112          *  GICのディストリビュータの終了処理
    113          */
    114         gicd_terminate();
    115 
    116         /*
    117          *  コア依存の終了処理
    118          */
    119         core_terminate();
     78        mpcore_terminate();
    12079}
    12180
     
    177136         */
    178137        gicd_set_priority(intno, INT_IPM(intpri));
    179         gicd_set_target(intno, 1U << arm_prc_index());
     138        gicd_set_target(intno, 1U << get_my_prcidx());
    180139
    181140        /*
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_kernel_impl.h

    r321 r429  
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems/
    44 *      Advanced Standard Profile Kernel
    5  *
     5 * 
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2006-2018 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    10  *
     10 * 
    1111 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    1212 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    3131 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    3232 *      免責すること.
    33  *
     33 * 
    3434 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3535 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3737 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3838 *  の責任を負わない.
    39  *
     39 * 
    4040 *  $Id$
    4141 */
     
    5858
    5959/*
    60  *  MMUの使用に関する設定
     60 *  デフォルトの非タスクコンテキスト用のスタック領域の定義
    6161 */
    62 #define USE_ARM_MMU
    63 #define USE_ARM_SSECTION
     62#ifndef DEFAULT_ISTKSZ
     63#define DEFAULT_ISTKSZ  0x2000U                 /* 8KB */
     64#endif /* DEFAULT_ISTKSZ */
    6465
    6566/*
     
    7071
    7172/*
    72  *  GIC依存部の割込み管理機能の初期化は使用しない.
     73 *  GIC 390 Errataへの対策を実施
     74 */
     75#define GIC_PL390_ERRATA
     76
     77/*
     78 *  GIC依存部の割込み管理機能の初期化は使用しない
    7379 */
    7480#define OMIT_GIC_INITIALIZE_INTERRUPT
    7581
    7682/*
    77  *  GICに関する定義,コアで共通な定義
    78  *
    79  *  core_kernel_impl.hは,gic_kernel_impl.hからインクルードされる.
     83 *  MPCoreで共通な定義
    8084 */
    81 #include "gic_kernel_impl.h"
     85#include "mpcore_kernel_impl.h"
    8286
    8387#ifndef TOPPERS_MACRO_ONLY
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_rename.def

    r331 r429  
    66target_hrt_initialize
    77target_hrt_terminate
    8 target_hrt_set_event
    9 target_hrt_raise_event
    108target_hrt_handler
    119target_ovrtimer_initialize
    1210target_ovrtimer_terminate
    13 target_ovrtimer_stop
    14 target_ovrtimer_get_current
    1511target_ovrtimer_handler
    1612
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_rename.h

    r321 r429  
    1515#define target_hrt_initialize           _kernel_target_hrt_initialize
    1616#define target_hrt_terminate            _kernel_target_hrt_terminate
    17 #define target_hrt_set_event            _kernel_target_hrt_set_event
    18 #define target_hrt_raise_event          _kernel_target_hrt_raise_event
    1917#define target_hrt_handler                      _kernel_target_hrt_handler
    2018#define target_ovrtimer_initialize      _kernel_target_ovrtimer_initialize
    2119#define target_ovrtimer_terminate       _kernel_target_ovrtimer_terminate
    22 #define target_ovrtimer_stop            _kernel_target_ovrtimer_stop
    23 #define target_ovrtimer_get_current     _kernel_target_ovrtimer_get_current
    2420#define target_ovrtimer_handler         _kernel_target_ovrtimer_handler
    2521
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_stddef.h

    r321 r429  
    1 /*
    2  *  TOPPERS Software
    3  *      Toyohashi Open Platform for Embedded Real-Time Systems
    4  *
    5  *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
    6  *              Graduate School of Information Science, Nagoya Univ., JAPAN
    7  *  Copyright (C) 2011-2016 by Embedded and Real-Time Systems Laboratory
    8  *              Graduate School of Information Science, Nagoya Univ., JAPAN
    9  *
    10  *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
    13  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    15  *      スコード中に含まれていること.
    16  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
    18  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
    19  *      の無保証規定を掲載すること.
    20  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    21  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
    22  *      と.
    23  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
    24  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    25  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
    26  *        報告すること.
    27  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    28  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    29  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    30  *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    31  *      免責すること.
    32  *
    33  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    34  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    35  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    36  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    37  *  の責任を負わない.
    38  *
    39  *  $Id$
    40  */
    41 
    421/*
    432 *              t_stddef.hのチップ依存部(RZ/A1用)
     
    465 *  されるファイル)のみからインクルードされる.他のファイルから直接イ
    476 *  ンクルードしてはならない.
     7 *
     8 *  $Id$
    489 */
    4910
     
    6425
    6526/*
     27 *  開発環境で共通な定義
     28 */
     29#ifndef TOPPERS_MACRO_ONLY
     30#include <stdint.h>
     31#endif /* TOPPERS_MACRO_ONLY */
     32
     33#define TOPPERS_STDFLOAT_TYPE1
     34#include "tool_stddef.h"
     35
     36/*
    6637 *  コアで共通な定義
    6738 */
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_sym.def

    r331 r429  
    1 TARGET_RZA1H,true,bool,defined(TARGET_RZA1H)
    2 TARGET_RZA1L,true,bool,defined(TARGET_RZA1L)
     1TARGET_RZA1H,true,bool,defined(TARGET_RZA1H),false
     2TARGET_RZA1L,true,bool,defined(TARGET_RZA1L),false
    33TA_NEGEDGE
    44TA_POSEDGE
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_timer.c

    r321 r429  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2006-2017 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2006-2018 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    100100
    101101/*
    102  *  高分解能タイマへの割込みタイミングの設定
    103  */
    104 void
    105 target_hrt_set_event(HRTCNT hrtcnt)
    106 {
    107         uint32_t        cnt = hrtcnt * 33 + hrtcnt / 3 + 1;
    108         uint32_t        current;
    109 
    110         /*
    111          *  現在のカウント値を読み,hrtcnt後に割込みが発生するように設定する.
    112          */
    113         current = sil_rew_mem(OSTM_CNT(OSTM0_BASE));
    114         sil_wrw_mem(OSTM_CMP(OSTM0_BASE), current + cnt);
    115 
    116         /*
    117          *  上で現在のカウント値を読んで以降に,cnt以上カウントアップしてい
    118          *  た場合には,割込みを発生させる.
    119          */
    120         if (sil_rew_mem(OSTM_CNT(OSTM0_BASE)) - current >= cnt) {
    121                 raise_int(INTNO_OSTM0);
    122         }
    123 }
    124 
    125 /*
    126  *  高分解能タイマ割込みの要求
    127  */
    128 void
    129 target_hrt_raise_event(void)
    130 {
    131         raise_int(INTNO_OSTM0);
    132 }
    133 
    134 /*
    135102 *  タイマ割込みハンドラ
    136103 */
     
    143110        signal_time();
    144111}
     112
    145113/*
    146114 *  オーバランタイマドライバ
     
    183151
    184152/*
    185  *  オーバランタイマの停止
    186  */
    187 PRCTIM
    188 target_ovrtimer_stop(void)
    189 {
    190         uint32_t        cnt;
    191 
    192         /*
    193          *  OSタイマを停止する.
    194          */
    195         sil_wrb_mem(OSTM_TT(OSTM1_BASE), OSTM_TT_STOP);
    196 
    197         if (probe_int(INTNO_OSTM1)) {
    198                 /*
    199                  *  割込み要求が発生している場合
    200                  */
    201                 clear_int(INTNO_OSTM1);
    202                 return(0U);
    203         }
    204         else {
    205                 cnt = sil_rew_mem(OSTM_CNT(OSTM1_BASE));
    206                 return((PRCTIM)((cnt + 34) / 5 * 3 / 20));
    207         }
    208 }
    209 
    210 /*
    211  *  オーバランタイマの現在値の読出し
    212  */
    213 PRCTIM
    214 target_ovrtimer_get_current(void)
    215 {
    216         uint32_t        cnt;
    217 
    218         if (probe_int(INTNO_OSTM1)) {
    219                 /*
    220                  *  割込み要求が発生している場合
    221                  */
    222                 return(0U);
    223         }
    224         else {
    225                 cnt = sil_rew_mem(OSTM_CNT(OSTM1_BASE));
    226                 return((PRCTIM)((cnt + 34) / 5 * 3 / 20));
    227         }
    228 }
    229 
    230 /*
    231153 *  オーバランタイマ割込みハンドラ
    232154 *
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_timer.cfg

    r321 r429  
    11/*
    2  *              タイマドライバのコンフィギュレーションファイル
     2 *              タイマドライバのコンフィギュレーションファイル(RZ/A1 OSタイマ用)
    33 *
    44 *  $Id$
     
    1010ATT_INI({ TA_NULL, 0, _kernel_target_hrt_initialize });
    1111ATT_TER({ TA_NULL, 0, _kernel_target_hrt_terminate });
     12
    1213CFG_INT(INTNO_TIMER, { TA_ENAINT|INTATR_TIMER, INTPRI_TIMER });
    1314DEF_INH(INHNO_TIMER, { TA_NULL, _kernel_target_hrt_handler });
     
    1718 */
    1819#ifdef TOPPERS_SUPPORT_OVRHDR
     20
    1921ATT_INI({ TA_NULL, 0, _kernel_target_ovrtimer_initialize });
    2022ATT_TER({ TA_NULL, 0, _kernel_target_ovrtimer_terminate });
     23
    2124CFG_INT(INTNO_OVRTIMER, { TA_ENAINT|INTATR_OVRTIMER, INTPRI_OVRTIMER });
    2225DEF_INH(INHNO_OVRTIMER, { TA_NULL, _kernel_target_ovrtimer_handler });
     26
    2327#endif /* TOPPERS_SUPPORT_OVRHDR */
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_timer.h

    r321 r429  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2005-2018 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    5151#define TOPPERS_CHIP_TIMER_H
    5252
     53#include "kernel/kernel_impl.h"
    5354#include <sil.h>
    5455#include "rza1.h"
     
    140141 *  生させるように設定する.
    141142 */
    142 extern void target_hrt_set_event(HRTCNT hrtcnt);
     143Inline void
     144target_hrt_set_event(HRTCNT hrtcnt)
     145{
     146        uint32_t        cnt = hrtcnt * 33 + hrtcnt / 3 + 1;
     147        uint32_t        current;
     148
     149        /*
     150         *  現在のカウント値を読み,hrtcnt後に割込みが発生するように設定する.
     151         */
     152        current = sil_rew_mem(OSTM_CNT(OSTM0_BASE));
     153        sil_wrw_mem(OSTM_CMP(OSTM0_BASE), current + cnt);
     154
     155        /*
     156         *  上で現在のカウント値を読んで以降に,cnt以上カウントアップしてい
     157         *  た場合には,割込みを発生させる.
     158         */
     159        if (sil_rew_mem(OSTM_CNT(OSTM0_BASE)) - current >= cnt) {
     160                raise_int(INTNO_OSTM0);
     161        }
     162}
    143163
    144164/*
    145165 *  高分解能タイマ割込みの要求
    146166 */
    147 extern  void target_hrt_raise_event(void);
     167Inline void
     168target_hrt_raise_event(void)
     169{
     170        raise_int(INTNO_OSTM0);
     171}
    148172
    149173/*
     
    184208 *  オーバランタイマの停止
    185209 */
    186 extern PRCTIM target_ovrtimer_stop(void);
     210Inline PRCTIM
     211target_ovrtimer_stop(void)
     212{
     213        uint32_t        cnt;
     214
     215        /*
     216         *  OSタイマを停止する.
     217         */
     218        sil_wrb_mem(OSTM_TT(OSTM1_BASE), OSTM_TT_STOP);
     219
     220        if (probe_int(INTNO_OSTM1)) {
     221                /*
     222                 *  割込み要求が発生している場合
     223                 */
     224                clear_int(INTNO_OSTM1);
     225                return(0U);
     226        }
     227        else {
     228                cnt = sil_rew_mem(OSTM_CNT(OSTM1_BASE));
     229                return((PRCTIM)((cnt + 34) / 5 * 3 / 20));
     230        }
     231}
    187232
    188233/*
    189234 *  オーバランタイマの現在値の読出し
    190235 */
    191 extern PRCTIM target_ovrtimer_get_current(void);
     236Inline PRCTIM
     237target_ovrtimer_get_current(void)
     238{
     239        uint32_t        cnt;
     240
     241        if (probe_int(INTNO_OSTM1)) {
     242                /*
     243                 *  割込み要求が発生している場合
     244                 */
     245                return(0U);
     246        }
     247        else {
     248                cnt = sil_rew_mem(OSTM_CNT(OSTM1_BASE));
     249                return((PRCTIM)((cnt + 34) / 5 * 3 / 20));
     250        }
     251}
    192252
    193253/*
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_unrename.h

    r321 r429  
    1616#undef target_hrt_initialize
    1717#undef target_hrt_terminate
    18 #undef target_hrt_set_event
    19 #undef target_hrt_raise_event
    2018#undef target_hrt_handler
    2119#undef target_ovrtimer_initialize
    2220#undef target_ovrtimer_terminate
    23 #undef target_ovrtimer_stop
    24 #undef target_ovrtimer_get_current
    2521#undef target_ovrtimer_handler
    2622
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/rza1.h

    r321 r429  
    22 *  TOPPERS Software
    33 *      Toyohashi Open Platform for Embedded Real-Time Systems
    4  *
    5  *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
     4 * 
     5 *  Copyright (C) 2006-2018 by Embedded and Real-Time Systems Laboratory
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    7  *
     7 * 
    88 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    99 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2828 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    2929 *      免責すること.
    30  *
     30 * 
    3131 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3232 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3434 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3535 *  の責任を負わない.
    36  *
     36 * 
    3737 *  $Id$
    3838 */
     
    4545#define TOPPERS_RZA1_H
    4646
     47#include <kernel.h>
    4748#include <sil.h>
     49#include "arm.h"
    4850
    4951/*
     
    8486
    8587/*
     88 *  CP15の補助制御レジスタ(ACTLR)の設定値
     89 */
     90#define CP15_ACTLR_SMP          UINT_C(0x00000040)
     91
     92/*
    8693 *  GIC依存部を使用するための定義
    8794 */
     
    9299#define GIC_TNUM_INTNO          UINT_C(538)
    93100#endif /* TOPPERS_RZA1H */
    94 #endif /* GIC_TNUM_INT */
     101#endif /* GIC_TNUM_INTNO */
    95102
    96103/*
     
    256263        reg = sil_reh_mem(RZA1_IRQRR);
    257264        reg &= ~(0x01U << (intno - INTNO_IRQ0));
    258         sil_wrh_mem(RZA1_IRQRR, reg);
     265        sil_swrh_mem(RZA1_IRQRR, reg);
    259266}
    260267
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/scif.h

    r321 r429  
    11/*
    2  *  TOPPERS/ASP Kernel
    3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
    4  *      Advanced Standard Profile Kernel
    5  *
     2 *  TOPPERS Software
     3 *      Toyohashi Open Platform for Embedded Real-Time Systems
     4 *
    65 *  Copyright (C) 2001-2011 by Industrial Technology Institute,
    76 *                              Miyagi Prefectural Government, JAPAN
    87 *  Copyright (C) 2007-2016 by Embedded and Real-Time Systems Laboratory
    98 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    10  *
     9 * 
    1110 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    1211 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    3130 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    3231 *      免責すること.
    33  *
     32 * 
    3433 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3534 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3736 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3837 *  の責任を負わない.
    39  *
     38 * 
    4039 *  $Id$
    4140 */
     
    6665 *  シリアルモードレジスタ(SCIF_SCSMR)の設定値
    6766 */
     67#define SCIF_SCSMR_ASYNC        0x0000U         /* 調歩同期式モード */
    6868#define SCIF_SCSMR_SYNC         0x0080U         /* クロック同期式モード */
     69#define SCIF_SCSMR_8BIT         0x0000U         /* 8ビットデータ */
    6970#define SCIF_SCSMR_7BIT         0x0040U         /* 7ビットデータ */
    70 #define SCIF_SCSMR_PARITY       0x0020U         /* パリティビットの付加 */
     71#define SCIF_SCSMR_NOPARITY     0x0000U         /* パリティビットなし */
     72#define SCIF_SCSMR_PARITY       0x0020U         /* パリティビット付加 */
     73#define SCIF_SCSMR_EVEN         0x0000U         /* 偶数パリティ */
    7174#define SCIF_SCSMR_ODD          0x0010U         /* 奇数パリティ */
     75#define SCIF_SCSMR_1STOP        0x0000U         /* 1ストッピビット */
    7276#define SCIF_SCSMR_2STOP        0x0008U         /* 2ストッピビット */
    7377#define SCIF_SCSMR_CKS1         0x0000U         /* P1φクロック1 */
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/tSCIF.c

    r321 r429  
    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 *
    6  *  Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
     5 *  Copyright (C) 2006-2019 by Embedded and Real-Time Systems Laboratory
    76 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    87 *
     
    133132        uint_t  brr;
    134133
    135         if (VAR_initialized) {
    136                 /*
    137                  *  既に初期化している場合は、二重に初期化しない.
    138                  */
    139                 return;
    140         }
    141 
    142         brr = SCIF_CLK / (32 * ATTR_baudRate) - 1;
    143         assert(brr <= 255);
    144 
    145         sil_wrh_mem(SCIF_SCSCR(ATTR_baseAddress), 0U);
    146         sil_wrh_mem(SCIF_SCFCR(ATTR_baseAddress),
     134        if (!VAR_opened) {
     135                /*
     136                 *  既にオープンしている場合は、二重にオープンしない.
     137                 */
     138                brr = SCIF_CLK / (32 * ATTR_baudRate) - 1;
     139                assert(brr <= 255);
     140
     141                sil_wrh_mem(SCIF_SCSCR(ATTR_baseAddress), 0U);
     142                sil_wrh_mem(SCIF_SCFCR(ATTR_baseAddress),
    147143                                                        SCIF_SCFCR_TFRST|SCIF_SCFCR_RFRST);
    148         (void) sil_reh_mem(SCIF_SCFSR(ATTR_baseAddress));
    149         (void) sil_reh_mem(SCIF_SCLSR(ATTR_baseAddress));
    150         sil_wrh_mem(SCIF_SCFSR(ATTR_baseAddress), 0U);
    151         sil_wrh_mem(SCIF_SCLSR(ATTR_baseAddress), 0U);
    152         sil_wrh_mem(SCIF_SCSCR(ATTR_baseAddress), SCIF_SCSCR_INTCLK);
    153         sil_wrh_mem(SCIF_SCSMR(ATTR_baseAddress), SCIF_SCSMR_CKS1);
    154         sil_wrh_mem(SCIF_SCEMR(ATTR_baseAddress), 0U);
    155         sil_wrb_mem(SCIF_SCBRR(ATTR_baseAddress), (uint8_t) brr);
    156         sil_wrh_mem(SCIF_SCFCR(ATTR_baseAddress),
     144                (void) sil_reh_mem(SCIF_SCFSR(ATTR_baseAddress));
     145                (void) sil_reh_mem(SCIF_SCLSR(ATTR_baseAddress));
     146                sil_wrh_mem(SCIF_SCFSR(ATTR_baseAddress), 0U);
     147                sil_wrh_mem(SCIF_SCLSR(ATTR_baseAddress), 0U);
     148                sil_wrh_mem(SCIF_SCSCR(ATTR_baseAddress), SCIF_SCSCR_INTCLK);
     149                sil_wrh_mem(SCIF_SCSMR(ATTR_baseAddress),
     150                                                        SCIF_SCSMR_ASYNC|ATTR_mode|SCIF_SCSMR_CKS1);
     151                sil_wrh_mem(SCIF_SCEMR(ATTR_baseAddress), 0U);
     152                sil_wrb_mem(SCIF_SCBRR(ATTR_baseAddress), (uint8_t) brr);
     153                sil_wrh_mem(SCIF_SCFCR(ATTR_baseAddress),
    157154                                        SCIF_SCFCR_RSTRG_15|SCIF_SCFCR_RTRG_1|SCIF_SCFCR_TTRG_8);
    158         sil_wrh_mem(SCIF_SCSCR(ATTR_baseAddress),
     155                sil_wrh_mem(SCIF_SCSCR(ATTR_baseAddress),
    159156                                        SCIF_SCSCR_TE|SCIF_SCSCR_RE|SCIF_SCSCR_INTCLK);
    160157
    161         while ((sil_reh_mem(SCIF_SCFSR(ATTR_baseAddress)) & SCIF_SCFSR_RDF) != 0U) {
    162                 (void) sil_reb_mem(SCIF_SCFRDR(ATTR_baseAddress));
    163                 sil_wrh_mem(SCIF_SCFSR(ATTR_baseAddress), (uint16_t) ~(SCIF_SCFSR_RDF));
    164         }
    165         sil_wrh_mem(SCIF_SCFSR(ATTR_baseAddress), 0U);
    166 
    167         VAR_initialized = true;
     158                while ((sil_reh_mem(SCIF_SCFSR(ATTR_baseAddress)) & SCIF_SCFSR_RDF)
     159                                                                                                                                        != 0U) {
     160                        (void) sil_reb_mem(SCIF_SCFRDR(ATTR_baseAddress));
     161                        sil_wrh_mem(SCIF_SCFSR(ATTR_baseAddress),
     162                                                        (uint16_t) ~(SCIF_SCFSR_RDF));
     163                }
     164                sil_wrh_mem(SCIF_SCFSR(ATTR_baseAddress), 0U);
     165
     166                VAR_opened = true;
     167        }
    168168}
    169169
     
    176176        CELLCB  *p_cellcb = GET_CELLCB(idx);
    177177
    178         sil_wrh_mem(SCIF_SCSCR(ATTR_baseAddress), 0U);
     178        if (VAR_opened) {
     179                sil_wrh_mem(SCIF_SCSCR(ATTR_baseAddress), 0U);
     180
     181                VAR_opened = false;
     182        }
    179183}
    180184
     
    284288        }
    285289}
     290
     291/*
     292 *  SIOドライバの終了処理
     293 */
     294void
     295eTerminate_main(CELLIDX idx)
     296{
     297        CELLCB  *p_cellcb = GET_CELLCB(idx);
     298
     299        if (VAR_opened) {
     300                /*
     301                 *  送信FIFOが空になるまで待つ
     302                 */
     303                while ((sil_reh_mem(SCIF_SCFSR(ATTR_baseAddress))
     304                                                                                        & SCIF_SCFSR_TEND) == 0U) ;
     305                /*
     306                 *  ポートのクローズ
     307                 */
     308                eSIOPort_close(idx);
     309        }
     310}
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/tSCIF.cdl

    r321 r429  
    55 *  Copyright (C) 2015 by Ushio Laboratory
    66 *              Graduate School of Engineering Science, Osaka Univ., JAPAN
    7  *  Copyright (C) 2015,2016 by Embedded and Real-Time Systems Laboratory
     7 *  Copyright (C) 2015-2018 by Embedded and Real-Time Systems Laboratory
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
     
    6161        entry   siHandlerBody   eiRxISR;
    6262        entry   siHandlerBody   eiTxISR;
     63        entry   sRoutineBody    eTerminate;
    6364
    6465        attr {
    6566                uintptr_t       baseAddress;    /* SCIFレジスタのベースアドレス */
    66                 uint32_t        baudRate;               /* ボーレートの設定値 */
     67                uint16_t        mode;                   /* モードレジスタの設定値 */
     68                uint32_t        baudRate;               /* ボーレート */
    6769        };
    6870        var {
    69                 bool_t          initialized = false;    /* 初期化済み */
     71                bool_t          opened = false; /* オープン済み */
    7072        };
    7173};
Note: See TracChangeset for help on using the changeset viewer.