athrill(アスリル)機能マニュアル

#はじめに
athrill(アスリル)の機能マニュアルを本ページで管理します．
athrillの導入に関しては，[athrill(アスリル) を使用して TOPPERS OS(ASP3) をデバッグ](https://qiita.com/kanetugu2018/items/1f2ef93c9e1fa7a29f97)をご参照ください．

#athrillの想定ユーザ
リアルタイムOS([TOPPERS OS](https://www.toppers.jp/))上で，アプリケーションを開発する組込みソフトウェア技術者．

現時点で，athrill用にOS移植されているTOPPERS OSは，以下の通りです．

|対応OS|テスト状況|コメント|
|----|----|---|
|[ssp](https://github.com/alvstakahashi/TOPPERS_SSP_shrink_V850_For_athrill)|-|高橋さんありがとございます！|
|[asp](https://github.com/tmori/athrill/tree/master/test/test_os/asp)|[TTSP実施済み](https://qiita.com/kanetugu2018/items/ac2f73529feef41c0c0d)|-|
|[asp3](https://github.com/tmori/athrill/tree/master/sample/os/asp3)|未テスト(サンプル実行のみ)|-|
|[atk2-sc1](https://github.com/mitsut/toppers-sample-rh850)|未テスト(サンプル実行のみ)|gitpodで動作可能|
|[atk2-sc1-mc](https://github.com/tmori/athrill/tree/master/sample/os/atk2-sc1-mc_1.4.2)|未テスト(サンプル実行のみ)|-|

#athrillが提供する３つの価値

* 開発スケーラビリティ向上
 * [athrill開発プロジェクト](https://github.com/tmori/athrill)でソースを無償公開(TOPPERSライセンス)
 * Windows(MinGW)/Linux(32bit, 64bit)で動作可能
* 問題の早期検出
 * athrillはV850のCPU命令をシミュレーションしており，プリミティブなレベル(CPU/メモリ/デバイス)で，ソフトウェアの動きを監視できます．
 * そのため，仮想環境の強みを活かした問題の早期検出ができると考えています．
 * 現状は，メモリ不正アクセス検出機能が数個ある程度ですが，機能拡張を実施予定です．
* 結合テストの自動化
 * 机上(PC)でリアルタイムOS上で動作するアプリケーションの結合確認およびテストの自動化→資産化を実現できます．
 * 現在は，IoT向けの机上結合環境構築を目指しています．
     * マイコン上で動作する組込みプログラム(C言語)とクラウド上で動作するプログラム(python等)の結合確認は非常に難易度が高いと考えており，athrillを使用することでその難易度を下げることができると考えています．
     * 現在まさに，机上でテスト自動化するための機能拡張を実施中です．

#athrill使用実績
 * AUTOSAR OS上で動作するミドルウェアの結合検査(シングルコア/マルチコア)
  * 初期導入→テスト資産化し，開発・保守効率向上に寄与

#マニュアル
athrillの機能一覧を以下に示します．
順次，詳細内容をリンクページで紹介していきます．

* [起動オプション](https://qiita.com/kanetugu2018/items/5a1a6658ca710f5b97ff)
* デバッグ機能
 * [プログラム実行制御](https://qiita.com/kanetugu2018/items/efde1da53f1878e2a7eb)
       * ブレーク設定(b)
       * ステップ実行(n)
       * 関数復帰(r)
       * ブレーク解除(d)
       * デバッグ対象コア(core)
       * 割り込み発生(i)
       * CPUモード切り替え(c)
       * デバッグモード切り替え(q)
       * athrill終了(exit)
 * [データアクセス制御](https://qiita.com/kanetugu2018/items/516fa086f52558d6f3ad)
       * メモリ情報表示(p)
       * メモリ設定(s)
       * データウォッチ(w)
       * メモリREAD/WRITE実行タスク/関数表示(access)
 * [プログラム実行状況](https://qiita.com/kanetugu2018/items/f763c9f426a890400fe5)
       * CPU実行ログ表示切り替え(v)
       * CPUレジスタ表示(cpu)
       * 関数実行トレース表示(ft)
       * スタックトレース表示(bt)
       * 関数プロファイル(prof)
       * 消費クロック(e)
       * ソース表示(l)
 * [外部入出力](https://qiita.com/kanetugu2018/items/399f652e76532599fa04)
       * シリアル入力(S)
* [問題の早期検出機能](https://qiita.com/kanetugu2018/items/d63314b018bdb7d28e07)
 * 警告通知機能
       * 未初期化変数のREADアクセス
       * 変数領域外のWRITEアクセス
 * エラー通知機能
       * ROM領域へのWRITEアクセス
       * スタックオーバーフロー検出

* コンフィグファイル
 * [メモリコンフィグ](https://qiita.com/kanetugu2018/items/5a1a6658ca710f5b97ff#%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%B3%E3%83%B3%E3%83%95%E3%82%A3%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)
 * [パラメータ](https://qiita.com/kanetugu2018/items/ff50704ed7436e0a20db)
       * EDITOR_SEARCH_PATH_NUM
       * EDITOR_SEARCH_PATH_${index}
       * SERIAL_FILE_PATH
       * DEVICE_CONFIG_TIMER_FD
       * DEBUG_ROM_DEFINE_NUM
       * DEBUG_ROM_DEFINE_${index}
       * DEBUG_FUNC_ENABLE_BT
       * DEBUG_FUNC_ENABLE_FT
       * DEBUG_FUNC_ENABLE_PROF
       * DEBUG_FUNC_ENABLE_WATCH
       * DEBUG_FUNC_ENABLE_SKIP_CLOCK

#関連記事
* [athrill(アスリル) を使用して TOPPERS OS(ASP3) をデバッグ](https://qiita.com/kanetugu2018/items/1f2ef93c9e1fa7a29f97)
* [マルチコア対応仮想環境(athrill)を使用して TOPPERS/ATK2 を実行する](https://qiita.com/kanetugu2018/items/b43c5715124f42a0393d)
* [メモリ保護対応版 athrill(アスリル) のご紹介](https://qiita.com/kanetugu2018/items/f2205475c4a4eae699c0)
* [今さらなぜCPUエミュレータを自作しようとおもったのか？](https://qiita.com/kanetugu2018/items/d692e612c3d4d715c0ad)
* [athrill(アスリル)を使用してC言語ポインタ変数を理解する](https://qiita.com/kanetugu2018/items/b9ad84c2f74324174864)
* [athrill(アスリル) を使用してベアメタル・プログラミング(１回目：main関数が動き出すまで)](https://qiita.com/kanetugu2018/items/7d2ce8def53cb9bda06b)
* [athrill(アスリル) を使用してベアメタル・プログラミング(2回目：割り込みがソフトウェアに通知されるまで)](https://qiita.com/kanetugu2018/items/8cb411717511ca96bc64)
* [WSLでマイコンシミュレータ環境(athrill)をつくる](https://qiita.com/Maeda-Shoota/items/4b1be75a6c4993522ab1)
* [TOPPERS/ATK2カーネル向け実機レス環境(athrill2)](https://qiita.com/kanetugu2018/items/75dadc340f3db2a344ab)
* [64bitCPUへの道 and/or 64歳の決意(1)V850/RH850 gcc 64bit](https://qiita.com/kaizen_nagoya/items/9934c0f9911ad29779b5)
* [dockerでathrill](https://qiita.com/kaizen_nagoya/items/599ccdd07276aae5d29e#_reference-457dd5318af4f84ad2d2)