C2A_Core
c2a_main.c
[詳解]
7 
8 // SILSの時,通常main関数はC2A外にある
9 #ifdef DEFINE_MAIN_ON_SILS
10 int main(void);
11 #endif
12 
13 static void address_fixed_main_(void);
14 static void C2A_init_(void);
15 static void C2A_main_(void);
16 static void timer_setting_(void);
17 
18 #ifdef DEFINE_MAIN_ON_SILS
19 int main(void)
20 {
22  return 0;
23 }
24 #endif
25 
26 
27 // RAM上でのアドレス固定main関数
28 #pragma section _FIX_MAIN
29 // Pセクションしか割り当てていないので,
30 // D, Bセクションに乗るような変数定義は禁止!!!
31 static void address_fixed_main_(void)
32 {
33 #ifndef SILS_FW
34  // BOOT_LOADER_main();
35 #endif
36  C2A_init_();
37  C2A_main_();
38 }
39 #pragma section
40 
41 
42 #pragma section REPRO
43 static void C2A_main_(void)
44 {
45  while (1) // whileもuserから隠蔽したいが,自由度とのトレードオフ...?
46  {
47  C2A_core_main();
48 
49  // ユーザー定義loop処理はここに入れる
50  }
51 
52  // ここに来ることはないはずなので,来たらWDTのResetをかけるようにする?
53 }
54 #pragma section
55 
56 
57 #pragma section REPRO
58 // C2A関連の初期化
59 // HW関連部分(タイマー,割り込み設定など)のみ独自に初期化
60 // Printf内部で WDT_clear_wdt(); が呼ばれてることに注意!
61 static void C2A_init_(void)
62 {
63  Printf("C2A_init: user revision = %s\n", GIT_REV_USER);
64 
65  WDT_init();
66  TMGR_init(); // Time Manager
67  // AM_initialize_all_apps での時間計測のためにここで初期化
68  Printf("C2A_init: TMGR_init done.\n");
69  timer_setting_(); // Timer 割り込み開始
70  Printf("C2A_init: timer_setting_ done.\n");
71 
72  C2A_core_init();
73 
74  // TaskDispatcherでの大量のアノマリを避けるために、一度時刻を初期化する。
75  TMGR_clear();
76  Printf("C2A_init: TMGR_init done.\n");
77 }
78 #pragma section
79 
80 
81 static void timer_setting_(void)
82 {
83 }
void C2A_core_main(void)
Definition: c2a_core_main.c:56
void C2A_core_init(void)
Definition: c2a_core_main.c:25
const char GIT_REV_USER[41]
Definition: c2a_core_main.c:22
static void C2A_main_(void)
Definition: c2a_main.c:43
static void timer_setting_(void)
Definition: c2a_main.c:81
static void C2A_init_(void)
Definition: c2a_main.c:61
static void address_fixed_main_(void)
Definition: c2a_main.c:31
git revisionをコードに埋め込むための準備をする
HW 依存 Print, つまり ログ情報のフォーマット出力(デバッグ出力)
Switch the build settings between your real OBC and SILS
void Printf(const char *format,...)
Definition: print.c:9
void TMGR_init(void)
TimeManager 構造体を初期化する
Definition: time_manager.c:44
void TMGR_clear(void)
master_clock_ と unixtime_info_ をクリアし全てゼロにする
Definition: time_manager.c:51
OBC時刻のカウントアップと,各種衛星時刻関連処理
void WDT_init(void)
WDTの初期化
watchdog timer