7
2

More than 3 years have passed since last update.

athrill(アスリル)機能マニュアル(パラメータ)

Last updated at Posted at 2018-06-24

概要

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:有効

以下,時間飛ばしの具体例です.

時間飛ばしがない場合のシミュレーション実行の流れ

image.png

本例では,CPUは,3クロック目でHALT状態になります.その後,7クロック目で,デバイス1が割り込み通知を上げます.シミュレーション視点では,4~6クロック期間は,何も処理する必要がありませんので,無駄な期間といえます.

時間飛ばしがある場合のシミュレーション実行の流れ

image.png

そのため,Athrillは,CPUがHALT状態に入ったことを検出した場合,各デバイスの次の割り込みタイミングをチェックして,割り込みタイミングが最も時間的に近いポイントまで,シミュレーション時間を進めます.

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2