2022/3/4

2022/4/7

製品
DT+Trace
カテゴリー
How-to
タグ
ドライバファイル, 設定
5 Q&A 5 [Linux]非同期バス/非同期バス(関数コール)接続のドライバカスタマイズ

[Linux]非同期バス/非同期バス(関数コール)接続のドライバカスタマイズ

この項目では、非同期バス接続方法の手順を解説しております。
本手順では、通常のテストポイント情報を取得するまでに変更が必要な箇所についてご説明いたします。
実際導入を行う際には、ターゲットの環境に合わせてDT+Traceの導入を行ってください。

出力ポートのレジスタ設定の調査

■非同期バス接続出力フォーマット

非同期バス接続は、NORFlashとCPU間のバスを利用し、テストポイント通過時に外部に出力された信号(通過情報)を取得します。ハードウェアの取り付け方法については、アタッチメントマニュアルをご参照ください。

事前に接続先のフラッシュROMの先頭アドレスをご調査ください。また、対象のフラッシュROMでキャッシュをご使用の場合は、キャッシュ領域内のメモリ空間は正常なデータ取得が行えませんので、非キャッシュ領域の先頭アドレスをご調査ください。

カーネル・ユーザーランド両方からデータを出力する場合は、非同期バス接続(関数コール)を選択してください。

サンプルドライバの構成

サンプルドライバはこちらからダウンロードしてください。

Driver_DT
-dt_tpdrv.c・・・ユーザーランド側の出力用ドライバ

Driver_async
-dt_async_drv.c・・・カーネル側の出力用のデバイスドライバ

NORFlashのベースアドレス、サイズの定義

ダウンロードいただいたファイルについて、下記の内容をターゲット環境に合わせて変更してください。

/*==============================================================================*/
/*  Desc:   Please set beginning address and size in the virtual memory space.  */
/*==============================================================================*/
#define	FLASH_ADDR	0xF0000000
#define	FLASH_SIZE	0x02000000

async_write関数の定義

Flashへの書き込みを行う関数です。サンプルではoutwを使用しております。ターゲットに合わせて変更してください。

/*==============================================================================*/
/*  Func:   async_write                                                         */
/*  Desc:   Test Point Output Function                                          */
/*==============================================================================*/
static void async_write(dt_tp tp)
{
	unsigned char *p;
	int	i;

	if (cookie == NULL) {
		cookie = ioremap(FLASH_ADDR, FLASH_SIZE);
	}

	for( i = 0; i < tp.count; i++ )
	{
		p = (unsigned char *)cookie;
		p += tp.addr[i];
		outw( tp.data[i], (unsigned int)p );
		/* *(unsigned short *)p = (unsigned short)tp.data[i]; */
	}
}

ユーザーランド用ドライバのカスタマイズ

ユーザーランド層のドライバについては基本的にカスタマイズは必要ございません。ターゲットのMakefileに入れていただき、Make対象としてください。

カーネル・ユーザーランドのコンパイル

お使いの開発環境にご変更いただいたドライバファイルを追加します。Makefileに追加していただくなどして、コンパイルできるかご確認ください。

このページの情報はお役に立ちましたか?
  • はい (0)
  • いいえ (0)
  • 探している内容ではない (0)