source: azure_iot_hub_f767zi/trunk/asp_baseplatform/monitor/monitor.h@ 457

Last change on this file since 457 was 457, checked in by coas-nagasima, 4 years ago

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 6.7 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2003-2015 by Ryosuke Takeuchi
7 * GJ Business Division RICOH COMPANY,LTD. JAPAN
8 * Copyright (C) 2017-2019 by TOPPERS PROJECT Educational Working Group.
9 *
10 * 上記著作権者は,Free Software Foundation によって公表されている
11 * GNU General Public License の Version 2 に記述されている条件か,以
12 * 下の(1)~(4)の条件を満たす場合に限り,本ソフトウェア(本ソフトウェ
13 * アを改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14 * 利用と呼ぶ)することを無償で許諾する.
15 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17 * スコード中に含まれていること.
18 * (2) 本ソフトウェアを再利用可能なバイナリコード(リロケータブルオブ
19 * ジェクトファイルやライブラリなど)の形で利用する場合には,利用
20 * に伴うドキュメント(利用者マニュアルなど)に,上記の著作権表示,
21 * この利用条件および下記の無保証規定を掲載すること.
22 * (3) 本ソフトウェアを再利用不可能なバイナリコードの形または機器に組
23 * み込んだ形で利用する場合には,次のいずれかの条件を満たすこと.
24 * (a) 利用に伴うドキュメント(利用者マニュアルなど)に,上記の著作
25 * 権表示,この利用条件および下記の無保証規定を掲載すること.
26 * (b) 利用の形態を,別に定める方法によって,上記著作権者に報告する
27 * こと.
28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29 * 害からも,上記著作権者を免責すること.
30 *
31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者は,
32 * 本ソフトウェアに関して,その適用可能性も含めて,いかなる保証も行わ
33 * ない.また,本ソフトウェアの利用により直接的または間接的に生じたい
34 * かなる損害に関しても,その責任を負わない.
35 *
36 * @(#) $Id$
37 */
38
39#ifndef _MONITOR_H_
40#define _MONITOR_H_
41
42#ifdef __cplusplus
43extern "C" {
44#endif
45
46/*
47 * モニタ・サンプルプログラムのヘッダファイル
48 */
49#include <kernel.h>
50#include "syssvc/logtask.h"
51
52/*
53 * タスク優先度の設定
54 */
55#define MONITOR_PRIORITY 4
56
57/*
58 * ターゲットに依存する可能性のある定数の定義
59 */
60
61#ifndef CONSOLE_PORTID
62#if defined(LOGTASK_PORTID) && defined(SIO_PORTID)
63#define CONSOLE_PORTID LOGTASK_PORTID /* 文字入力するシリアルポートID */
64#else /* LOGTASK_PORTID */
65#define CONSOLE_PORTID 1 /* 文字入力するシリアルポートID */
66#endif /* LOGTASK_PORTID */
67#endif /* TASK_PORTID */
68
69/*
70 * モニタのサイズの設定
71 */
72#if defined(TOPPERS_CORTEX_M0PLUS) || defined(TOPPERS_HIFIVE1)
73#define MONITOR_STACK_SIZE 1536 /* タスクのスタックサイズ */
74#else
75#define MONITOR_STACK_SIZE 2046 /* タスクのスタックサイズ */
76#endif
77#define MAX_COMMAND_LENGTH 200 /* モニタの最大コマンド長 */
78#define NUM_LOG_DISP 3 /* 最大表示アイテム数 */
79#ifndef MONITOR_PORTID
80#define MONITOR_PORTID CONSOLE_PORTID
81#endif
82
83/*
84 * バージョン情報
85 */
86#define TMONITOR_PRVER 0x1020 /* カーネルのバージョン番号 */
87
88/*
89 * キー割り当ての定義
90 */
91#define KEY_BS (8) /* バックスペース */
92#define KEY_DEL (127) /* 削除 */
93#define KEY_NL (10) /* 改行1 */
94#define KEY_CR (13) /* 改行2 */
95#define KEY_EXT (1) /* 終了 */
96
97/*
98 * データタイプ定義
99 */
100#define DATA_BYTE 1 /* バイトデータ(1バイト)*/
101#define DATA_HALF 2 /* ハーフデータ(2バイト)*/
102#define DATA_WORD 4 /* ワードデータ(4バイト)*/
103
104/*
105 * 領域属性の定義
106 */
107#define NONE_AREA 0 /* 領域の割り当てのない領域 */
108#define PORT_AREA 1 /* ハードウェアのポート領域 */
109#define MEMORY_AREA 2 /* メモリ領域 */
110
111#define MREAD_ONLY 1 /* 読み込み専用 */
112#define MWRITE_ONLY 2 /* 書き込み専用 */
113#define MREAD_WRITE (MREAD_ONLY+MWRITE_ONLY)
114
115#ifndef TOPPERS_MACRO_ONLY
116
117/*
118 * コマンドデスパッチ用の構造体定義
119 */
120typedef struct _COMMAND_INFO {
121 const char *command; /* コマンド文 */
122 int_t (*func)(int argc, char **argv); /* 実行関数 */
123} COMMAND_INFO;
124
125typedef struct _COMMAND_LINK COMMAND_LINK;
126struct _COMMAND_LINK {
127 COMMAND_LINK *pcnext;
128 int num_command;
129 const char *command; /* 主コマンド文 */
130 int_t (*func)(int argc, char **argv); /* 実行関数 */
131 const char *help; /* ヘルプ文 */
132 const COMMAND_INFO *pcinfo;
133};
134
135/*
136 * エコーの設定
137 */
138#define putecho(a) putchar(a)
139#define printecho(a) printf(a)
140
141/*
142 * 関数のプロトタイプ宣言
143 */
144
145extern bool_t need_monitor(void);
146extern void monitor(intptr_t exinf);
147extern int setup_command(COMMAND_LINK *pcmd);
148extern bool_t monitor_break(void);
149extern bool_t compare_word(const char *s, char *d, int_t mode);
150extern char getMemoryType(ulong_t address, int_t mode);
151extern int_t MemoryRead(ulong_t address, intptr_t p, int_t type);
152extern int_t MemoryWrite(ulong_t address, intptr_t p, int_t type);
153extern ulong_t MonAlignAddress(ulong_t address);
154extern int_t MemoryRead(ulong_t address, intptr_t p, int_t type);
155extern int_t MemoryWrite(ulong_t address, intptr_t p, int_t type);
156extern ulong_t get_exception_pc(void * p_excinf);
157extern void display_registers(ID tskid);
158extern ulong_t display_assembler(ulong_t pc);
159
160/*
161 * 次のキャラクタの判定
162 */
163Inline bool_t
164test_next_char(char c)
165{
166 if(c == ' ' || c == '\t')
167 return true;
168 else
169 return false;
170}
171
172/*
173 * 文字列から数字を取り出す
174 * 戻り値がFALSEなら値が未設定であることを示す
175 */
176Inline bool_t
177get_value(char *s, ulong_t *v, int_t card)
178{
179 char c;
180 int no = 0;
181
182 *v = 0;
183 if(s[no] == 0)
184 return false;
185 else if(s[no] == ' ' || s[no] == '\t'
186 || s[no] == ',' || s[no] == '.'){
187 no++;
188 return false;
189 }
190 else{
191 while(s[no]){
192 c = s[no];
193 no++;
194 if(c >= '0' && c <= '9')
195 c -= '0';
196 else if(c >= 'A' && c <= 'Z')
197 c -= 'A' - 10;
198 else if(c >= 'a' && c <= 'z')
199 c -= 'a' - 10;
200 else
201 break;
202 *v = *v * card + c;
203 }
204 return true;
205 }
206}
207
208#endif /* TOPPERS_MACRO_ONLY */
209
210#ifdef __cplusplus
211}
212#endif
213
214#endif /* _MONITOR_H_ */
215
Note: See TracBrowser for help on using the repository browser.