MITOUJTAG Pro. 2.0.4リリースします
最近、MITOUJTAG Proを注文していただけることが増えてきました。
しかし、今のMITOUJTAG Pro(2.03a)は不可解な動作が多く、これではさすがにまずいと思い、この3日間徹夜してMITOUJTAG Proを改良しつづけました。
じつは9月に「子ウィンドウによってツールバーが変わる」という改良をおこなったのですが、この改良が大失敗でした。
作業内容(アクティブなMDI子ウィンドウ)によってツールバーが変われば便利かと思ったのですが、BorlandC++ Builder(いや、Windowsの仕様?)ではツールバーへのボタンの追加や削除がやたらと面倒で遅いのです。使うなと言っているとしか思えない機能でした。
しかも、この改良を行ったときから、Abstractエラーとかいう極めて不可解なエラーを発生するようになりました。
問題の原因は次のとおりでした。ツールバーのボタンを押すとOnClickイベント関数が実行されますが、この関数の中でアクティブなMDI子ウィンドウが変わることもあるので、ツールバーのボタンも変わってしまい、イベント関数がリターンするときに自分自身がいなくなっているので、大変なことになるのです。
諸悪の根源は、ツールバーが動的に変わるしくみだったので、それをやめました。かわりに、現在アクティブなウィンドウの内容や現在できる操作によって、ツールバーのアクティブなボタンが変わるようにしました。
これが大正解。もう、不可解なランタイムエラーは全く発生しなくなりました。
またついでに、現在できない操作(バウンダリスキャンのCLAMP命令をもっていないデバイスにCLAMP命令を発行するとか)や、してはいけない操作(ロジアナ実行中にケーブルを切断するなど)はできないようになったので、とても操作性がよくなりました。
Windowsアプリケーションとしてはごくあたりまえのことなのですが、プログラムの規模が大きいので、ボタンを押す順番とか様々な可能性を考えていたら、丸2日くらいかかっていました。
また、タスクマネージャというものを作りました。
これは何をするものかというと、JTAGではたとえば、
・JTAGバウンダリスキャン(端子の観察)を連続で行う
・JTAGロジアナでキャプチャする
・JTAGスクリプトを実行する
・SVFプレイヤーを実行する
・フラッシュROMへの書き込みを行う
・FPGAやCPLDへ書き込みを行う
などの操作は、互いに排他的であって、かつ、「実行」「停止」という概念があります。
つまり、FPGAに書き込みながらロジアナでキャプチャすることはできません。
そのため、各ウィンドウごとに「実行」や「停止ボタン」を作るのではなく、システムが今なんの作業をしているかを1箇所で管理できるようにしました。
ロジアナの画面をアクティブにして「実行ボタン」をおせばロジアナが開始するし、JTAGスクリプトの編集画面で「実行ボタン」を押せばスクリプトがコンパイルされて実行されます。各種機能の「停止」はどの画面からでもおこなえます。このちょっとしたしくみが実はすごく快適でした。ようやく自信が持てるようになってきました。
このほかにも10個くらい大きなバグをとったので、ようやく出荷です。
ただ今ご注文いただいているお客様には、MITOUJTAG Pro version 2.0.4をお届けします。
どうぞよろしくお願いします。
最近のコメント