source: rubycfg_ssp/trunk/kernel_check.trb@ 363

Last change on this file since 363 was 285, checked in by nmir-saito, 7 years ago

Tracのソース閲覧時に文字化けするためmimetypewo

  • Property svn:mime-type set to text/plain; charset=utf-8
File size: 4.9 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# TOPPERS/SSP Kernel
4# Toyohashi Open Platform for Embedded Real-Time Systems/
5# Advanced Standard Profile Kernel
6#
7# Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN
8# Copyright (C) 2015,2016 by Embedded and Real-Time Systems Laboratory
9# Graduate School of Information Science, Nagoya Univ., JAPAN
10# Copyright (C) 2017 by Naoki Saito
11# Nagoya Municipal Industrial Research Institute, JAPAN
12#
13# 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
14# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
15# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
16# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18# スコード中に含まれていること.
19# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
22# の無保証規定を掲載すること.
23# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
25# と.
26# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27# 作権表示,この利用条件および下記の無保証規定を掲載すること.
28# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
29# 報告すること.
30# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
32# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
33# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
34# 免責すること.
35#
36# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
38# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
39# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
40# の責任を負わない.
41#
42# $Id: kernel_check.trb 662 2016-02-27 02:33:51Z ertl-hiro $
43#
44
45#
46# コンフィギュレータのパス3の生成スクリプト
47#
48
49#
50# タイムスタンプファイルの指定
51#
52$timeStampFileName = "check.timestamp"
53
54#
55# タスクに関するチェック
56#
57tinib_task = SYMBOL("_kernel_tinib_task")
58$cfgData[:CRE_TSK].sort.each do |key, params|
59 task = PEEK(tinib_task, $sizeof_TASK)
60
61 # タスクの先頭番地のチェック
62 if (task & ($CHECK_FUNC_ALIGN - 1)) != 0
63 error_wrong_id("E_PAR", params, :task, :tskid, "not aligned")
64 end
65 if $CHECK_FUNC_NONNULL && task == 0
66 error_wrong_id("E_PAR", params, :task, :tskid, "null")
67 end
68
69 tinib_task += $sizeof_TASK
70end
71
72#
73# 周期通知に関するチェック
74#
75cycinib_cychdr = SYMBOL("_kernel_cycinib_cychdr")
76$cfgData[:CRE_CYC].sort.each do |key, params|
77 cychdr = PEEK(cycinib_cychdr, $sizeof_CYCHDR)
78
79 # 周期ハンドラ先頭番地のチェック
80 if (cychdr & ($CHECK_FUNC_ALIGN - 1)) != 0
81 error_wrong_id("E_PAR", params, :cychdr, :cycid, "not aligned")
82 end
83 if $CHECK_FUNC_NONNULL && cychdr == 0
84 error_wrong_id("E_PAR", params, :cychdr , :cycid, "null")
85 end
86
87 cycinib_cychdr += $sizeof_CYCHDR
88end
89
90#
91# アラーム通知に関するチェック
92#
93alminib_almhdr = SYMBOL("_kernel_alminib_almhdr")
94$cfgData[:CRE_ALM].sort.each do |key, params|
95 almhdr = PEEK(alminib_almhdr, $sizeof_ALMHDR)
96
97 # アラームハンドラ先頭番地のチェック
98 if (almhdr & ($CHECK_FUNC_ALIGN - 1)) != 0
99 error_wrong_id("E_PAR", params, :almhdr, :almid, "not aligned")
100 end
101 if $CHECK_FUNC_NONNULL && almhdr == 0
102 error_wrong_id("E_PAR", params, :almhdr , :almid, "null")
103 end
104
105 alminib_almhdr += $sizeof_ALMHDR
106end
107
108#
109# 共有スタック領域に関するチェック
110#
111stkAddr = SYMBOL("_kernel_stk")
112if !stkAddr.nil?
113 stk = PEEK(stkAddr, $sizeof_void_ptr)
114
115 # 共有スタック領域の先頭番地のチェック
116 if (stk & ($CHECK_STACK_ALIGN - 1)) != 0
117 error_wrong("E_PAR", $cfgData[:DEF_STK][1], :stk, "not aligned")
118 end
119 if $CHECK_STACK_NONNULL && stk == 0
120 error_wrong("E_PAR", $cfgData[:DEF_STK][1], :stk, "null")
121 end
122end
Note: See TracBrowser for help on using the repository browser.