H8,SH,マイコン,ぼやき川柳,ダウンロード

ターゲットの復讐? 復習?


最近(2011.9.3)、流石にSH-2Aの特設ページの更新が減っている。そんな中、今更、シリアル・ダウンローダに戻ってみる。USBで遊んでいた時に触ったけど機械的にマージしただけで中身は見ていなかったので、復習である
それにしてもルネサスはUSBのサンプルソースを公開しない。シリアル・ダウンローダにソースを付けたのは何かの手違いとも思われる
また、近頃、インタフェース誌はそれマイコンとどういう関係?と思わせる記事が多い。まぁインタフェースという名前なので何をやっても良いけど、。RXマイコンの記事がもう少し有っても良いような・・・

USB仮想シリアル・サンプル・プロジェクト


先にも書いたけど、CDC Classの仕様書はさっぱり分からない(大体、絵・図が少ない。英語が分からなくても図ぐらいなら・・、シーケンスすら見当たらないのは意図不明。一体誰のための仕様書なの?)。ソースでも眺めて見るかと思ったけどUSB仮想シリアル・サンプル・プロジェクトを開けても、これもさっぱり??である。ところが「usb cdc class」で検索すると結構多くのページがヒットする。もっともSHマイコンに関するページは見当たらず、専らPICを利用したページが多い。サンプルソースもあるみたい。早速、ダウンロードしようとしたが、PICの開発環境を展開するのは気が重い。そもそも問題なのは、常識では理解できないSH-2AのUSBインタフェースなのだ。だから、PICのソースを展開しても解決にはならないと、思い、思いとどまった。
じゃ、意味ないじゃん!!

そーでもない。まず、対応必要なメッセージ(CDC Class Request)は5種類であることが分かった。そもそもPICでもターゲットにはなり得るのだから、そんなに難しい訳ない。先は長いが、少し元気が出てきた!
 
 ・Send Encapsulated Command
 ・Get Encapsulated Response
 ・Set Line Coding
 ・Get Line Coding
 ・Set Control Line State

 

プロジェクト


「ターゲット」のページにある方法でUSB仮想シリアル・サンプル・プロジェクトを動かしましたウンともスンとも動きません?
自分で作っておきながら、原因がよく分からないので、動いた状態を固めておきます(ポチ環境:Windows 7, 64bit, TinyMonでロード)

・TinyMonで動作させるために、最適化リンカのセクションを変更して 1C000000h番地へロードします
・起動させると、USB機器を接続したときの「ピポッ!」って音がします
・まず、エンターキー押してください。(再度、ダウンロード待ちになりますが、ダウンロードはしないでください)
・2回目のエンターキーを押すとタイムアウト(30秒ぐらい)して、USB機器を取り外した時の「ポピッ!

たった、それだけです


プロジェクト(2010年10月14日版ベース)
 

セクション定義のエクスポート.hsi
 


USB仮想シリアル・サンプル・プロジェクトは色んなバージョンがあり、リンクの名称もバラバラで本当疲れます。右側のダウンロードのリンクも元のページに寄って、飛び先が違うようで、まぁ他人のことは言えませんが、何とかしてよって感じです。このプロジェクトもワーニングが残ったままです

追って、内部トレースを追加してPCからどういうリクエストが来ているか見るように改造します
 
 

内部トレース

CDCのターゲット側ログ、ホストはWindows 7

 
 

HOST系 H_SetEndpointTable


EP(エンドポイント)のReset処理は前から何か変だなと思っていましたが、やっと確信しました
随分と難しい事をしているので、今でも何やっているか理解出来ている訳ではないですが、USB_CFG_PIPETBLを1回しかスキャンしていないのです。
Get descriptorで取得した各Endpoint descriptorを初期化するのですが、Endpoint descriptorが都合良く、SH2AのPipe属性の順と一致するとは限らないのです。
なので、少なくともEPの数分はスキャンを繰り返しuser_table(EPの要件を満足するPIPE)を探す必要があります(難しすぎて、自分でも何言っているのか??)
確かではないですが、Pipeが使用中か否かも管理されていないような、・・・ Hubのサポートが遥かに遠のきました

USB_CFG_PIPETBL		VendorDefEPTbl0[ ] = {

	{
		PIPE1,
		/* TYPE  / BFRE     / DBLB     / CNTMD  / SHTNAK   / DIR      / EPNUM */
		USB_NONE | USB_NONE | DBLBOFF | CNTMDON | USB_NONE | USB_NONE | USB_NONE,
		BUF_SIZE( 512 ) | BUF_NUMB( 8 ),
		USB_NONE,
		USB_NONE,
		D0USE,
//		D0DMA,                                                        2011.02.19
	},

	{
		PIPE2,
		/* TYPE  / BFRE     / DBLB     / CNTMD  / SHTNAK   / DIR      / EPNUM */
		USB_NONE | USB_NONE | DBLBOFF | CNTMDON | USB_NONE | USB_NONE | USB_NONE,
		BUF_SIZE( 512 ) | BUF_NUMB( 16 ),
		USB_NONE,
		USB_NONE,
		D0USE,
//***** D0DMA,                                           *************************//
	},

	{
		PIPE3,
		/* TYPE  / BFRE     / DBLB     / CNTMD  / SHTNAK   / DIR      / EPNUM */
		USB_NONE | USB_NONE | DBLBOFF | CNTMDON | USB_NONE | USB_NONE | USB_NONE,
		BUF_SIZE( 512 ) | BUF_NUMB( 24 ),
		USB_NONE,
		USB_NONE,
		D0USE,
//***** D0DMA,                                           *************************//

	},

	{
		PIPE4,
		/* TYPE  / BFRE     / DBLB     / CNTMD  / SHTNAK   / DIR      / EPNUM */
		USB_NONE | USB_NONE | DBLBOFF | CNTMDON | USB_NONE | USB_NONE | USB_NONE,
		BUF_SIZE( 512 ) | BUF_NUMB( 32 ),
		USB_NONE,
		USB_NONE,
		D0USE,
//***** D0DMA,                                           *************************//
	},

	{
		PIPE5,
		/* TYPE  / BFRE     / DBLB     / CNTMD  / SHTNAK   / DIR      / EPNUM */
		USB_NONE | USB_NONE | DBLBOFF | CNTMDON | USB_NONE | USB_NONE | USB_NONE,
		BUF_SIZE( 512 ) | BUF_NUMB( 40 ),
		USB_NONE,
		USB_NONE,
		D0USE,
//***** D0DMA,                                           *************************//

	},

	{
		PIPE6,
		/* TYPE  / BFRE     / DBLB     / CNTMD  / SHTNAK   / DIR      / EPNUM */
		USB_NONE | USB_NONE | DBLBOFF | CNTMDOFF | USB_NONE | USB_NONE | USB_NONE,
		BUF_SIZE( 64 ) | BUF_NUMB( 4 ),
		USB_NONE,
		USB_NONE,
		CUSE,
	},

	{
		PIPE7,
		/* TYPE  / BFRE     / DBLB     / CNTMD  / SHTNAK   / DIR      / EPNUM */
		USB_NONE | USB_NONE | DBLBOFF | CNTMDOFF | USB_NONE | USB_NONE | USB_NONE,
		BUF_SIZE( 64 ) | BUF_NUMB( 5 ),
		USB_NONE,
		USB_NONE,
		CUSE,
	},

	{
		PIPE8,
		/* TYPE  / BFRE     / DBLB     / CNTMD  / SHTNAK   / DIR      / EPNUM */
		USB_NONE | USB_NONE | DBLBOFF | CNTMDOFF | USB_NONE | USB_NONE | USB_NONE,
		BUF_SIZE( 64 ) | BUF_NUMB( 6 ),
		USB_NONE,
		USB_NONE,
		CUSE,
	},

	{
		PIPE9,
		/* TYPE  / BFRE     / DBLB     / CNTMD  / SHTNAK   / DIR      / EPNUM */
		USB_NONE | USB_NONE | DBLBOFF | CNTMDOFF | USB_NONE | USB_NONE | USB_NONE,
		BUF_SIZE( 64 ) | BUF_NUMB( 7 ),
		USB_NONE,
		USB_NONE,
		CUSE,
	},

	{
		/* Pipe end */
		0xFFFF,
		0xFFFF,
		0xFFFF,
		0xFFFF,
		0xFFFF,
		0xFFFF
	}
};

 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
   
 
  
 
 

















 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
   
 
  
 
 

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

管理人/副管理人のみ編集できます