OSDN Git Service

First commitment for the BlackTank LPC1769.
[blacktank/blacktank.git] / README.3rd
1 ===============================================================
2  TOPPERS/ASPを使ってもっと便利に小規模組み込み開発
3  TraceLogVisualizer(TLV)を使ってカーネル動作を確認しよう
4 ===============================================================
5
6 [はじめに]
7 README.1stとREADME.2ndで示したように、Cortex-M3を使った小規模
8 組み込みシステムの実現に関する幾つかのトピックを扱いました。
9
10 ここでは先に取り上げたLPCXpresso IDE上での開発、Natural Tiny
11 Shellを使ったデバッグ環境に加えて、TOPPERSプロジェクトが公開
12 しているTraceLog Visualizer(TLV)を使った動作確認方法について
13 ご紹介します。
14
15
16 [謝辞]
17 TraceLogVisualizerの企画、開発、公開を行なってくださった方々に
18 感謝致します。このような興味深いツールを無償で公開して頂いた事
19 に大変感謝しております。
20
21
22 [カーネルに対する設定]
23 ベースとなっているのは@suikan_blackfinさんがポーティングされた
24 TOPPERS/ASP for LPCです。
25 これに加えて公開されている最新のTLVを組み込む形をとっています。
26
27 * http://www.toppers.jp/tlv.htmlからTLV_1.2.zipをダウンロード。
28     (http://www.toppers.jp/download.cgi/TLV_1.2.zip)
29 * ダウンロードしたファイルを展開してlogtrace/aspの内容をコピー。
30 * コピーしたファイルのtrace_config.hの中で定義されているトレース
31   ログバッファのサイズをCortex-M3のRAMサイズを考慮して小さくする。
32 * kernel.tfの最後に以下を追加。
33     $INCLUDE"arch/logtrace/tlv.tf"$
34 * Makefileのトレースを有効にする。
35     ENABLE_TRACE = true
36 * コンフィギュレーションファイルに以下を追加。
37     #include "logtrace/trace_config.h"
38     ATT_INI({ TA_NULL, TRACE_STOP, trace_initialize });
39     ATT_TER({ TA_NULL, target_fput_log, trace_dump });
40 * trace_config.hで指定されているLOG_TEX_LEAVEの引数を1つに修正。
41     LOG_TEX_LEAVE(p_tcb)
42 * trace_config.hで定義されている以下の定義をコメントアウト。
43   これはGUIで「指定されたリソース(CPUExceptionHandler(id==21))が
44   見つかりません。」といった内容の例外が発生する事に対する暫定的
45   な対策です。
46   本来正しくはルールファイルの修正が必要と思う。
47     #define LOG_EXC_ENTER(excno) trace_1(LOG_TYPE_EXC|LOG_ENTER, excno)
48     #define LOG_EXC_LEAVE(excno) trace_1(LOG_TYPE_EXC|LOG_LEAVE, excno)
49 * syssvc/syslog.hのTCNT_SYSLOG_BUFFERを64に変更。
50 * syssvc/logtask.hのLOGTASK_STACK_SIZEを512に変更。
51
52
53 [どうやって使うの?]
54 トレースをするのは簡単です。
55
56 trace_sta_log(TRACE_AUTOSTOP);を呼ぶとトレースが開始されます。
57 バッファサイズが一杯になった時点で自動的に停止します。
58 ext_ker();を呼ぶとカーネルを終了させることができます。
59 この時、コンフィギュレーションファイルでATT_TERしたtrace_dumpが
60 呼ばれ、システムコンソールにトレース結果が出力されます。
61
62 (トレース結果の例 - 一部抜粋)
63     [37182007] task 1 becomes RUNNABLE.
64     [37182019] dispatch to task 1.
65     [37182026] leave from dly_tsk ercd=0.
66     [37182034] enter to dly_tsk dlytim=10.
67     [37182047] task 1 becomes WAITING.
68     [37182053] dispatch from task 1.
69     [37193007] task 1 becomes RUNNABLE.
70     [37193019] dispatch to task 1.
71     [37193026] leave from dly_tsk ercd=0.
72     [37193034] enter to dly_tsk dlytim=10.
73     [37193047] task 1 becomes WAITING.
74     [37193053] dispatch from task 1.
75     [37204007] task 1 becomes RUNNABLE.
76
77 システムコンソールに出力されたトレース結果をテキストファイルと
78 して保存して下さい。例えば、kernel.logのような感じです。
79
80 トレース機能を組み込んだカーネルをビルドするとリソースファイル
81 というものが生成されています。これはkernel.resのような名前で
82 存在します。
83
84 (リソースファイルの例 - 一部抜粋)
85     "TASK_LEDBLINK":{
86         "Type":"Task",
87         "Attributes":
88         {
89             "id"    :2,
90             "atr"   :"TA_ACT",
91             "pri"   :5,
92             "exinf" :"0",
93             "task"  :"task_ledblink",
94             "stksz" :1024,
95             "stk"   :"NULL",
96             "state" :"RUNNABLE"
97         }
98     },
99
100 上記の「トレース結果のファイル」と「リソースが記述されたファイル」
101 をTOPPERSプロジェクトが公開しているファイルに読み込ませることで
102 カーネル動作を可視化させることができるようになっています。
103
104
105 [お勧めの開発方法]
106 * LinuxホストとWindowsホストを用意します。
107   (あるいはWindows上でVMware Playerを使ってLinuxを動作させます。)
108 * LPCXpresso IDEはLinux上で動作させます。
109 * ビルド時に生成されたリソースファイルをWindowsホストにコピーします。
110 * UART出力をUSB-シリアル変換ケーブルを利用してWindowsホストに接続
111   します。
112 * 出力されたトレースログをファイル化してGUIで観察します。
113
114
115 [連絡先]
116  このプロジェクトに関するお問い合せは下記までお願いします。
117
118  Shinichiro Nakamura
119
120  shinta.main.jp@gmail.com
121  http://shinta-main-jp.blogspot.com/
122