Changeset 303


Ignore:
Timestamp:
Jun 26, 2017, 2:55:03 PM (7 years ago)
Author:
ertl-honda
Message:

nucleo_f401re依存部の追加

Location:
asp3_wo_tecs/trunk
Files:
213 added
11 edited

Legend:

Unmodified
Added
Removed
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/Makefile.core

    r302 r303  
    1 # 
     1#
    22#   TOPPERS/ASP Kernel
    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
    88#   Copyright (C) 2005-2014 by Embedded and Real-Time Systems Laboratory
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    10 # 
     10#
    1111#   ä¸Šè¨˜è‘—作権è€
    1212は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     
    4545#       å
    4646è²¬ã™ã‚‹ã“と.
    47 # 
     47#
    4848#   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    4949お
     
    5252#   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    5353#   ã®è²¬ä»»ã‚’負わない.
    54 # 
     54#
    5555#  @(#) $Id: Makefile.core 301 2015-01-07 04:57:01Z ertl-ishikawa $
    56 # 
     56#
    5757
    5858#
     
    6060#
    6161
    62 # 
    63 #  コア依存部ディレクトリ名の定義 
    64 # 
     62#
     63#  コア依存部ディレクトリ名の定義
     64#
    6565COREDIR = $(SRCDIR)/arch/$(PRC)_$(TOOL)/common
     66
     67#
     68#  ツール依存部ディレクトリ名の定義
     69#
     70TOOLDIR = $(SRCDIR)/arch/$(TOOL)
    6671
    6772#
    6873#  コンパイルオプション
    6974#
    70 COPTS := $(COPTS) -mthumb
    71 INCLUDES := $(INCLUDES) -I$(COREDIR)
    72 LDFLAGS := -nostdlib -nostartfiles $(LDFLAGS)
    73 CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS) $(LDFLAGS)
     75COPTS := $(COPTS) -mthumb
     76INCLUDES := $(INCLUDES) -I$(COREDIR) -I$(TOOLDIR)
     77LDFLAGS := $(LDFLAGS)
    7478CDEFS := $(CDEFS)
    75 LIBS := $(LIBS)  -lgcc
     79LIBS := $(LIBS) -lgcc
    7680
    7781vpath %.c $(COREDIR)
     
    8286#
    8387KERNEL_DIR := $(KERNEL_DIR) $(COREDIR)
    84 KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) core_support.o
     88KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
    8589KERNEL_COBJS := $(KERNEL_COBJS) core_kernel_impl.o
    8690
    8791#
    88 ä¾å­˜é–¢ä¿‚の定義
     92コンフィギュレータ関係の変数の定義
    8993#
    9094cfg1_out.c: $(COREDIR)/core_def.csv
    9195kernel_cfg.timestamp: $(COREDIR)/core.tf
     96#CFG_TABS := $(CFG_TABS) --symval-table $(COREDIR)/core_sym.def
     97
     98#
     99#  オフセットファイル生成のための定義(ToDo)
     100#
     101OFFSET_TF = $(COREDIR)/core_offset.tf
     102#TARGET_OFFSET_TRB = $(COREDIR)/core_offset.trb
     103
     104#
     105#  コアのタイプによる違い
     106#
     107ifeq ($(CORE_TYPE),CORTEX_M4)
     108        ARM_ARCH = ARMV7M
     109        COPTS := $(COPTS) -mcpu=cortex-m4
     110        CDEFS := $(CDEFS) -DTOPPERS_CORTEX_M4
     111        FPU_ARCH_MACRO = __TARGET_FPU_FPV4_SP
     112        FPU_ARCH_OPT   = fpv4-sp-d16
     113else ifeq ($(CORE_TYPE),CORTEX_M0PLUS)
     114        ARM_ARCH = ARMV6M
     115        COPTS := $(COPTS) -mcpu=cortex-m0plus
     116        CDEFS := $(CDEFS) -DTOPPERS_CORTEX_M0PLUS
     117else ifeq ($(CORE_TYPE),CORTEX_M0)
     118        ARM_ARCH = ARMV6M
     119        COPTS := $(COPTS) -mcpu=cortex-m0
     120        CDEFS := $(CDEFS) -DTOPPERS_CORTEX_M0
     121else ifeq ($(CORE_TYPE),CORTEX_M3)
     122        ARM_ARCH = ARMV7M
     123        COPTS := $(COPTS) -mcpu=cortex-m3
     124        CDEFS := $(CDEFS) -DTOPPERS_CORTEX_M3
     125endif
     126
     127#
     128#  アーキテクチャ毎に異なる設定
     129#
     130ifeq ($(ARM_ARCH),ARMV7M)
     131        KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) core_support.o
     132        CDEFS := $(CDEFS) -D__TARGET_ARCH_THUMB=4
     133else ifeq ($(ARM_ARCH),ARMV6M)
     134        KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) core_support_v6m.o
     135        CDEFS := $(CDEFS) -D__TARGET_ARCH_THUMB=3
     136endif
     137
     138#
     139#  FPUの設定
     140#
     141ifeq ($(FPU_ABI),)
     142        FPU_ABI = softfp
     143endif
     144
     145ifeq ($(FPU_USAGE),FPU_NO_PRESERV)
     146        COPTS := $(COPTS) -mfloat-abi=$(FPU_ABI) -mfpu=$(FPU_ARCH_OPT)
     147        CDEFS := $(CDEFS) -D$(FPU_ARCH_MACRO) -DTOPPERS_FPU_ENABLE
     148else ifeq ($(FPU_USAGE),FPU_NO_LAZYSTACKING)
     149        COPTS := $(COPTS) -mfloat-abi=$(FPU_ABI) -mfpu=$(FPU_ARCH_OPT)
     150        CDEFS := $(CDEFS) -D$(FPU_ARCH_MACRO) -DTOPPERS_FPU_ENABLE -DTOPPERS_FPU_NO_LAZYSTACKING -DTOPPERS_FPU_CONTEXT
     151else ifeq ($(FPU_USAGE),FPU_LAZYSTACKING)
     152        COPTS := $(COPTS) -mfloat-abi=$(FPU_ABI) -mfpu=$(FPU_ARCH_OPT)
     153        CDEFS := $(CDEFS) -D$(FPU_ARCH_MACRO) -DTOPPERS_FPU_ENABLE -DTOPPERS_FPU_LAZYSTACKING -DTOPPERS_FPU_CONTEXT
     154endif
    92155
    93156#
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/arm_m.h

    r302 r303  
    7474
    7575/*
    76  *  例外・割込み発生時にスタック上に積まれる保存領域のサイズ
    77  *  本カーネルでは例外フレームと呼ぶ
    78  */
    79 #ifdef TOPPERS_SUPPORT_FPV4
    80 #define EXC_FRAME_SIZE         (26*4)
    81 #else /* TOPPERS_SUPPORT_FPV4 */
    82 #define EXC_FRAME_SIZE         (8*4)
    83 #endif /* TOPPERS_SUPPORT_FPV4 */
    84 
    85 /*
    8676 *  例外・割込み発生時にLRに設定されるEXC_RETURNの値
    8777 */
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core.tf

    r302 r303  
    130130$
    131131$NL$
     132$NL$
     133extern void start(void);$NL$
     134$NL$
    132135__attribute__ ((section(".vector"))) $NL$
    133136const FP _kernel_vector_table[] =      $NL$
    134137{                                    $NL$
    135138        $TAB$(FP)(TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ)),   // 0 The initial stack pointer $NL$
    136         $TAB$(FP)_start,                 // 1 The reset handler         $NL$
     139        $TAB$(FP)start,                 // 1 The reset handler         $NL$
    137140
    138141$FOREACH excno {2,3,...,14}$
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core_insn.h

    r302 r303  
    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
    88 *  Copyright (C) 2005-2014 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    10  * 
     10 *
    1111 *  上記著作権è€
    1212は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     
    4545 *      å
    4646è²¬ã™ã‚‹ã“と.
    47  * 
     47 *
    4848 *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    4949お
     
    5252 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    5353 *  の責任を負わない.
    54  * 
     54 *
    5555 *  @(#) $Id: core_insn.h 301 2015-01-07 04:57:01Z ertl-ishikawa $
    5656 */
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core_kernel.h

    r302 r303  
    7676ˆåº¦ã®æœ€å¤§å€¤ï¼ˆæœ€ä½Žå€¤ï¼‰*/
    7777
     78#ifdef USE_SYSTICK_AS_TIMETICK
     79
     80/*
     81 *  Systickをタイムティックとして使用する場合
     82 */
     83
     84/*
     85 *  高分解能タイマのタイマ周期
     86 *
     87 *  タイマ周期が2^32の場合には,このマクロを定義しない.
     88 */
     89#undef TCYC_HRTCNT
     90
     91/*
     92 *  高分解能タイマのカウント値の進みå¹
     93
     94 */
     95#define TSTEP_HRTCNT    1000U
     96
     97#endif /* USE_SYSTICK_AS_TIMETICK */
     98
    7899#endif /* TOPPERS_CORE_KERNEL_H */
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core_kernel_impl.h

    r302 r303  
    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
    88 *  Copyright (C) 2005-2015 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    10  * 
     10 *
    1111 *  上記著作権è€
    1212は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     
    4545 *      å
    4646è²¬ã™ã‚‹ã“と.
    47  * 
     47 *
    4848 *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    4949お
     
    5252 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    5353 *  の責任を負わない.
    54  * 
     54 *
    5555 *  @(#) $Id: core_kernel_impl.h 322 2015-04-30 13:23:48Z ertl-ishikawa $
    5656 */
     
    6666#ifndef TOPPERS_CORE_KERNEL_IMPL_H
    6767#define TOPPERS_CORE_KERNEL_IMPL_H
     68
     69/*
     70 *  型キャストを行うマクロの定義
     71 */
     72#ifndef CAST
     73#define CAST(type, val)     ((type)(val))
     74#endif /* CAST */
    6875
    6976#ifndef TOPPERS_MACRO_ONLY
     
    133140        /*
    134141         *  PSPが有効ならタスクコンテキスト,MSPが有効なら非タスクコンテキスト
    135          *  とする. 
     142         *  とする.
    136143         */
    137144        if ((get_control() & CONTROL_PSP) == CONTROL_PSP){
     
    163170ˆåº¦ãƒžã‚¹
    164171 *  クは,BASEPRIを用いる.
    165  * 
     172 *
    166173 *  それに対してCPUロックフラグがセットされいる間は,BASEPRIを,カーネ
    167174 *  ル管理外のものを除くすべての割込み要求をマスクする値(TIPM_LOCK)と,
     
    209216 *  TIPM_LOCKは,CPUロック状æ
    210217‹ã§ã®BASEPRIの値.カーネル管理外のものを
    211  *  除くすべての割込みをマスクする値に定義する. 
     218 *  除くすべての割込みをマスクする値に定義する.
    212219 */
    213220#define IIPM_LOCK    INT_IPM(TIPM_LOCK)
     
    229236/*
    230237 *  CPUロックフラグ実現のための変数
    231  * 
     238 *
    232239 *  これらの変数は,CPUロック状æ
    233240‹ã®æ™‚のみ書き換えてもよいとする.
    234  *  インライン関数中で,アクセスの順序が変化しないよう,volatile を指定. 
     241 *  インライン関数中で,アクセスの順序が変化しないよう,volatile を指定.
    235242 */
    236243extern volatile bool_t  lock_flag;    /* CPUロックフラグの値を保持する変数 */
     
    309316}
    310317
     318
     319/*
     320 * タスクディスパッチできる状æ
     321‹ã«ãŠã„て,CPUロック解除状æ
     322‹ã‹ã‚‰ï¼ŒCPUロック
     323 * 状æ
     324‹ã¸é·ç§»ã•ã›ã‚‹é–¢æ•°ï¼Ž
     325 *
     326 * この関数は,ディスパッチできる状æ
     327‹ã§ã®ã¿å‘¼ã³å‡ºã•ã‚Œã‚‹ï¼Žãƒ‡ã‚£ã‚¹ãƒ‘ッチでき
     328 * る状æ
     329‹ã«ãŠã„ては,割込み優å
     330ˆåº¦ãƒžã‚¹ã‚¯å
     331¨è§£é™¤çŠ¶æ
     332‹ã§ã‚ã‚‹
     333 */
     334Inline void
     335lock_cpu_dsp(void)
     336{
     337    /*
     338     * この時点ではå¿
     339ず割込み優å
     340ˆåº¦å
     341¨è§£é™¤çŠ¶æ
     342‹ã§ã‚るため,
     343     * ・割込み優å
     344ˆåº¦ãƒžã‚¹ã‚¯ã‚’CPUロック状æ
     345‹
     346     * ・割込み優å
     347ˆåº¦ãƒžã‚¹ã‚¯ã®ä¿å­˜å€¤ã‚’IIPM_ENAALL
     348     * をå¿
     349ず実行する
     350     */
     351    set_basepri(IIPM_LOCK);
     352    SCS_SYNC;
     353        saved_iipm = IIPM_ENAALL;
     354        lock_flag = true;
     355        /* クリティカルセクションの前後でメモリが書き換わる可能性がある */
     356        ARM_MEMORY_CHANGED;
     357}
     358
     359/*
     360 * タスクディスパッチできる状æ
     361‹ã«æˆ»ã‚‹çŠ¶æ³ã«ãŠã„て,CPUロック状æ
     362‹ã‹ã‚‰ï¼ŒCPU
     363 * ロック解除状æ
     364‹ã¸é·ç§»ã•ã›ã‚‹é–¢æ•°ï¼Ž
     365 *
     366 * この関数は,CPUロック解除後は,ディスパッチできる状æ
     367‹ã«æˆ»ã‚‹çŠ¶æ³ã§ã®ã¿å‘¼
     368 * び出される.ディスパッチできる状æ
     369‹ã«ãŠã„ては,割込み優å
     370ˆåº¦ãƒžã‚¹ã‚¯å
     371¨è§£é™¤
     372 * 状æ
     373‹ã§ã‚ã‚‹
     374 */
     375Inline void
     376unlock_cpu_dsp(void)
     377{
     378        /* クリティカルセクションの前後でメモリが書き換わる可能性がある */
     379        ARM_MEMORY_CHANGED;
     380        lock_flag = false;
     381        set_basepri(IIPM_ENAALL);
     382}
     383
    311384/*
    312385 *  CPUロック状æ
     
    329402ˆåº¦ã®ãƒ“ットå¹
    330403(TBITW_IPRI)が 8 の場合は,-256 〜 0 が指定可能である.
    331  *   
     404 *
    332405 */
    333406#define VALID_INTPRI_CHGIPM(intpri) \
     
    406479}
    407480
    408 #define lock_cpu_dsp lock_cpu
    409 #define unlock_cpu_dsp unlock_cpu
    410 
    411481/*
    412482 *  スタートアップルーチン(start.S)
    413483 */
    414 extern void _start(void);
     484extern void _kernel_start(void);
    415485
    416486/*
     
    438508     */
    439509    sil_orw((void *)0xE000ED04, (uint32_t)(0x10000000U));
    440     unlock_cpu();
     510    unlock_cpu_dsp();
    441511    /* ここで _dispatchへジャンプ */
    442512    SCS_SYNC;
    443     lock_cpu();
     513    lock_cpu_dsp();
    444514}
    445515
     
    520590 *
    521591 *  割込みハンドラ番号(inhno)と割込み番号(intno)は,割り込み発生時に
    522  *  EPSRに設定される例外番号とする. 
     592 *  EPSRに設定される例外番号とする.
    523593 */
    524594
     
    563633 *
    564634 *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
    565  *  フラグをクリアしようとした場合には,falseを返す. 
     635 *  フラグをクリアしようとした場合には,falseを返す.
    566636 */
    567637Inline bool_t
     
    618688                                        (1 << (tmp & 0x1f)));
    619689        }
    620    
     690
    621691        return(true);
    622692}
     
    648718/*
    649719 *  CPU例外ハンドラ関係
    650  */ 
     720 */
    651721
    652722/*
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core_offset.tf

    r302 r303  
    6363
    6464$
     65$  標準テンプレートファイルのインクルード
     66$
     67$INCLUDE "kernel/genoffset.tf"$
     68
     69$
    6570$  オフセット値のマクロ定義の生成
    6671$
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core_sil.h

    r302 r303  
    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
    88 *  Copyright (C) 2005-2014 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    10  * 
     10 *
    1111 *  上記著作権è€
    1212は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     
    4545 *      å
    4646è²¬ã™ã‚‹ã“と.
    47  * 
     47 *
    4848 *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    4949お
     
    6363
    6464#ifndef TOPPERS_MACRO_ONLY
     65
     66#ifndef TECSGEN
    6567
    6668/*
     
    9193}
    9294
     95#endif
     96
    9397/*
    9498 *  å
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core_support.S

    r302 r303  
    9393         */
    9494    cpsid   f                   /* FAULTMASK = 1 */
     95    /*
     96     *  PendSV要求をクリア
     97     *  _dispatch - cpsid f の間でISRがå
     98¥ã‚Šï¼Œã•ã‚‰ã«PendSV要求が
     99     *  å
     100¥ã£ãŸå ´åˆã«ï¼Œdispatcherが無駄に走ることを防ぐため,
     101     *  ここでPendSV要求をクリアする
     102     */
     103        ldr     r1, =0x08000000           /* r1 = ICSR.PENDSVCLR */
     104        ldr     r2, =0xE000ED04           /* r2 = *ICSR */
     105    str     r1, [r2]                  /* *ICSR = PENDSVCLR */
     106
    95107    mrs     r3, psp
    96108        stmfd   r3!, {r4-r11}         /* レジスタの保存 */
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core_user.txt

    r302 r303  
    215215(5) ディレクトリ構成・ファイル構成
    216216  ./arch/arm_m_gcc/common
     217    ./Makefile.core
    217218    ./arm_m.h
    218     ./core.tf
    219219    ./core_asm.inc
    220220    ./core_cfg1_out.h
    221     ./core_check.tf
     221    ./core_def.csv
     222    ./core_insn.h
     223    ./core_kernel.h
    222224    ./core_kernel_impl.c
    223225    ./core_kernel_impl.h
    224     ./core_def.csv
    225     ./core_design.txt
    226     ./core_insn.h
    227     ./core_kernel.h
    228     ./core_offset.tf
    229226    ./core_rename.def
    230227    ./core_rename.h
     
    235232    ./core_unrename.h
    236233    ./core_user.txt
    237     ./Makefile.core
    238234    ./start.S
     235    ./core_kernel.trb
     236    ./core_check.trb
     237    ./core_offset.trb
     238
     239(5-1) 不要なファイル
     240
     241以下のファイルは,ASP3.0.0では不要なファイルであるが,参考の
     242ために残している.
     243不要であれば削除しても構わない.
     244
     245  ./arch/arm_m_gcc/common
     246    ./core.tf
     247    ./core_check.tf
     248    ./core_offset.tf
    239249
    240250(6)ARMCCå
  • asp3_wo_tecs/trunk/arch/arm_m_gcc/common/start.S

    r302 r303  
    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
    88 *  Copyright (C) 2005-2014 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    10  * 
     10 *
    1111 *  上記著作権è€
    1212は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     
    4545 *      å
    4646è²¬ã™ã‚‹ã“と.
    47  * 
     47 *
    4848 *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    4949お
     
    5252 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    5353 *  の責任を負わない.
    54  * 
     54 *
    5555 *  @(#) $Id: start.S 301 2015-01-07 04:57:01Z ertl-ishikawa $
    5656 */
    57                
     57
    5858/*
    5959 *   ã‚«ãƒ¼ãƒãƒ«ç”¨ã®ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—モジュール(ARM-M用)
     
    7575        ATEXT
    7676        AALIGN(2)
    77         ATHUMB(_start)
    78         AGLOBAL(_start)
    79 ALABEL(_start)
     77        ATHUMB(start)
     78        AGLOBAL(start)
     79ALABEL(start)
    8080        cpsid f                 /* 割込みロック状æ
    8181‹ã¸ */
     
    117117ALABEL(start_2)
    118118        str  r0, [r1]
    119         add  r1,r1, #4   
     119        add  r1,r1, #4
    120120        cmp  r1, r2
    121121        blo  start_2
Note: See TracChangeset for help on using the changeset viewer.