#概要
athrill(アスリル)のパラメータについて解説します.
#パラメータ
##ソースパス設定
athrill上でソースデバッグする際に,デバッグ対象ファイルのパス指定が必要になる場合があります.
設定パラメタは以下のとおりです.
パラメータ | 説明 |
---|---|
EDITOR_SEARCH_PATH_NUM | 設定するパスの数であり,下記パラメータの個数と一致させてください |
EDITOR_SEARCH_PATH_${index} | 対象ファイルパスを指定してください.${index}は0からの連番としてください |
以下,設定例です.
EDITOR_SEARCH_PATH_NUM 2
EDITOR_SEARCH_PATH_0 /home/tmori/project/athrill/sample/os/atk2-sc1-mc_1.4.2/kernel
EDITOR_SEARCH_PATH_1 /home/tmori/project/athrill/sample/os/atk2-sc1-mc_1.4.2/arch/v850_gcc
##シリアル外部入出力ファイル設定
athrillはデフォルトで,2チャンネルのシリアルデバイスをサポートしています.
このうち,チャネル1は外部入出力用に使用することができます.
※チャネル0は,デバッガ用に使用しています.
パラメータ | 説明 |
---|---|
SERIAL_FILE_PATH | シリアル入出力ファイル格納フォルダパスを指定してください. |
また,本フォルダ配下に以下の2ファイルを作成してください(空ファイル)
パラメータ | 説明 |
---|---|
serial_out.txt | athrillへのシリアル出力ファイル.athrillはチャネル1の外部データを本ファイルから取得します |
serial_in.txt | athrillからのシリアル入力ファイル.athrillはチャネル1へ送出要求のあったシリアルデータを本ファイルに追加書きします. |
シリアルの入出力レジスタ・アドレスは以下のとおりです.
/*
* UARTDn送信データ・レジスタ( UDnTX)
*/
#define UDnTX_BASE UINT_C(0xFFFFFA07)
#define UDnTX(CH) (UDnTX_BASE + ((CH) * 16U))
/*
* UARTDn受信データ・レジスタ( UDnRX)
*/
#define UDnRX_BASE UINT_C(0xFFFFFA06)
#define UDnRX(CH) (UDnRX_BASE + ((CH) * 16U))
##起動時変数初期値設定
変数の初期値を本パラメータで設定できます.
ただし,変更可能な変数は,ブートストラップで初期化されないセクション(bss/data)に配置されている必要があります.
本機能の利用シーンは,
**『同じバイナリ』**で,
『複数存在するテスト切り替えを手軽に実行したい』
場合です.
例えば,下記コードのようにテスト実行をtest_modeで切り替えしている場合,
test_modeの値をathrill起動時に指定できると,バイナリ変更なし(リビルド不要)でテストを連続実行できます.
unsigned int test_mode;
static void do_test()
{
switch(test_mode) {
case 0:
do_test_0();
break;
case 1:
do_test_1();
break;
case 2:
do_test_2();
break;
case 3:
do_test_3();
break;
default:
break;
}
return;
}
int main(void)
{
do_test();
}
パラメータ | 説明 |
---|---|
DEBUG_ROM_DEFINE_NUM | 起動時に設定したい変数の数を指定してください |
DEBUG_ROM_DEFINE_${index} | 起動時に設定したい変数および設定値を指定して下さい.${index}は0からの連番としてください |
以下,設定例です.
DEBUG_ROM_DEFINE_NUM 1
DEBUG_ROM_DEFINE_0 test_mode=2
##デバッグ機能有効/無効設定
デバッグ機能を有効にしていると,処理性能が悪くなる場合があります.
そのため,処理性能に影響を与える可能性が高い以下の機能は有効/無効設定ができます.
※パラメータ未設定の場合は有効化されます.
パラメータ | 対象デバッグ機能 | 設定値 |
---|---|---|
DEBUG_FUNC_ENABLE_BT | スタックトレース表示 | 0:無効, 1:有効 |
DEBUG_FUNC_ENABLE_FT | 関数実行トレース表示 | 0:無効, 1:有効 |
DEBUG_FUNC_ENABLE_PROF | 関数プロファイル | 0:無効, 1:有効 |
DEBUG_FUNC_ENABLE_WATCH | データウォッチ | 0:無効, 1:有効 |
##タイマの分周設定
タイマの分周を変更できます.
デフォルトは32ですが,本パラメータの値を高い値にすることで,CPU周波数を間接的に上げることができます.
パラメータ | 説明 |
---|---|
DEVICE_CONFIG_TIMER_FD | 10進数で分周値を指定してください |
##時間飛ばし機能設定
RTOSがHALT命令を実行した場合,CPUは割り込み待ちに入ります.
使用している割り込みがタイマしかない場合,次の割り込みタイミングは,タイマに割り込み設定した値に依存します.
この期間中は,athrillはCPUにクロック供給しても何も処理されることはないため,次の割り込み発生タイミングまで,CPUのクロックを進めます.
こうすることで,athrillの実行性能を上げることができます.
パラメータ | 説明 |
---|---|
DEBUG_FUNC_ENABLE_SKIP_CLOCK | 0:無効, 1:有効 |
以下,時間飛ばしの具体例です.
時間飛ばしがない場合のシミュレーション実行の流れ
本例では,CPUは,3クロック目でHALT状態になります.その後,7クロック目で,デバイス1が割り込み通知を上げます.シミュレーション視点では,4~6クロック期間は,何も処理する必要がありませんので,無駄な期間といえます.
時間飛ばしがある場合のシミュレーション実行の流れ
そのため,Athrillは,CPUがHALT状態に入ったことを検出した場合,各デバイスの次の割り込みタイミングをチェックして,割り込みタイミングが最も時間的に近いポイントまで,シミュレーション時間を進めます.