« 2010年12月 | トップページ | 2011年2月 »

2011.01.31

MITOUJTAGのSPI ROMライタをWinbondに対応させようとしています

当社のお客様より、MITOUJTAGからSpartan-6経由でWinbondのSPI ROMに書き込みしたいというご要望をいただきました。
MITOUJTAGのSPI ROMライタはまだWinbondに対応していないので、この機会に対応させることにしました。


Winbondは安くて便利なSPIフラッシュROMを提供しています。何がすごいかというと、4線式のSPIなのです。だからコンフィギュレーションが4倍速い。このような4線式SPIは、Nymonix(=Intel+ST)かWinbondしかありません(ほかにあったらごめんなさい)。

WinbondはDigikeyのUSサイトからは買えますが、日本に発送できません。チップワンでは納期がかかり、RSやMOUSERでは取り扱いがありません。結構、入手が難しそうです。

今回は有難いことに、お客様からサンプルデバイスをいただけたので、特電Spartan-6ボードの裏面にあるST社のROMを外し、Winbondに乗せ替えました。
これで検証ができます。
Winbond

で、さっそくSPI ROMライタプログラムを改良して、Winbondに対応させました。
このROMは、1ページが256バイト構成で、16ページで1セクタ、128ページあるいは256ページで1ブロックを構成しています。
ブロック消去とページライトを繰り返すことで、メモリの全域を書き換えられます。
Winbond_2

WinbondのSPI ROMは、IDCODE、ユニークID、セキュリティコードなどいろいろな領域をもっています。それらとデータアレイの先頭を読み出してみました。
Winbond_1

書き込んだデータでFPGAがちゃんと起動するのも確かめられました。
コマンド体系はST社のものに良く似ていました。
(逆にいえば、ATMELとSSTが異端なのかもしれない)

今後、いろんなサイズのWinbond社のROMを、世界中を探して購入して、本格的に対応しようと思います。
どうぞご期待ください。

| | コメント (0)

2011.01.26

Spartan-6ボード用MicroBlazeのプロジェクトを公開

特選Spartan-6ボード用に作ったMicroBlazeのプロジェクトを公開します。

ここからダウンロードできます

このプロジェクトはTKDN-SP6-16用ですが、たぶんTKDN-SP6-45や、EXPARTAN-6Tにも使えます。
EDKで作ったMicroBlaze、MPMC、UART、GPIO(LED8個)、SPI、Timerを入れています。
Mb_1

CPUの設定では、バレルシフタと乗算器、除算器をONにしています。MMUと浮動小数点はOFFです。キャッシュは、命令・データともに2kBytes入っています。
MicroBlazeにいろんなコンポーネントを入れていくと、信号線を自分で設定して取り出さなければなりません。そのことを知らずに最初はハマりました。コアの外に出て行くポートはこんな感じです。
Mb_2

内蔵RAMとして32kB分のBRAM使っています。DDR2 SDRAMはアドレス0x48000000~0x4FFFFFFFに64MB分配置されています。GPIOやUARTなどは0x81400000あたりにあります。
Mb_3

自動的に作られるブロック図は、見てもよくわかりません。
Mb_4

ソフトウェアは、UARTを介して115200bpsでホストPCと通信できます。
FPGAが動き出すと、MicroBlazeが起動してEDKに付属のXil_TestMem32関数を使ってSDRAMの先頭1MBytesを検査します。

その後、簡単なモニタプログラムが起動します。このモニタは、メモリテストや、メモリのFill、Intel Hexファイルのロード、ジャンプ、メモリライト、メモリダンプができます。

下の図は、memtstというコマンドでメモリ全域(64MB)に乱数を書き込んでテストし、その後、テスト用に書き込まれたデータをダンプしています。
Mb_5

このモニタプログラムはFPGAの回路とともに、BitStream中(のBRAMの初期値として)格納されます。
だから、BitファイルをJTAGでダウンロードすれば起動しますし、出来上がったBitファイルをSPI ROMに書き込めば電源ONで即起動します。

このシンプルなモニタが動いたら、HEXファイルを流し込んでセカンドブートローダーを起動できます。
U-bootを移植して動かしてみたものの、ほとんどのコマンドがないので、今はまだ何もできません。
helpと打つと、出てくるコマンドが寂しい限りです。
Mb_6

SPIやTimerのモジュールが動くかどうかはこれからテストします。

FPGAの中でマイコンが動いている感覚が面白いです。
今夜はワクワクしながら徹夜で実験です。

| | コメント (0)

2011.01.25

DIP28タイプのSpartan-6やRX基板を考えてみた

今日の朝、電車の中で「Spartan-6やRXマイコンを、DIP28pinの形状に変換する基板があれば便利かな・・」と思ったので、アイデアを図にしてみました。
まだ、妄想レベルですが・・

まず、RX62Nマイコン。
Tkdnrxdip

RX62Nのほかに、SDRAM、LANコントローラが乗っています。USB-JTAGは残念ながらありません。RXマイコンはBGA85ピンというのを使います。ただ、BGA85だとEtherとSDRAMが同時に使えなかったかもしれないので、もう一回り大きいBGA145にするかもしれません。
USBはRXマイコンにつながっていて、アプリの通信に使えます。イーサは、RJ-45のコネクタが基板上に載っています。

次にSpartan-6。Spartan-6はCPG196ピンと形状のパッケージが最小なので、このをパッケージ使います。USBの石も、今のより一回り小さいBZ56というパッケージにします。
Tkdnsp6dip

狭い面積の中に、なんとかUSBとSpartan-6が収まりました。あと、水晶とSPI ROM、スイッチング電源も入りそうです。残念ながらSDRAMは乗せる余裕はありませんでした。
DIP28ピンの形状ですが、USBがのっていて、FPGAのJTAG書き換えや、高速な通信が行えます。

この基板は横から見ると内側のピンヘッダは下向きに、外側のピンヘッダは上向きに付けています。羽を広げたような・・どこかでみた何かのような・・。


この基板では、横のピンヘッダは2列にしておいて、DIP28ピンのソケットに挿したい場合は内側、より多くのピンを使いたい場合は外側も使えるようにします。こうすれば56本くらいのピンだ出せるので、I/Oは最大で46個くらい取り出せるかと思います。

なんでDIP28ピンかというと、ブレッドボードに挿せるからです。ブレッドボードにさして実験ができる。それがメリットです。しかも、DIPのICはソケットの抜き差しがしやすいです。

しかし、CPG196は0.5mmピッチのBGAなので、ピン間にViaが打てません。そこで、パッドオンビアという製造方法になるのですが、これが高い!基板の単価がめちゃめちゃ高くなります。
もし販売するとしたら、結構な値段になってしまうと思います。

ほかにもいくつか不安要素があって、例えば消費電流やGNDの問題です。RXマイコンは全然電気を食いませんが、Spartan-6はかなり食います。そのため、こういう狭い場所に実装した場合、電源が不安になります。
うちのバイト君が「イーサのケーブルに引っ張られてDIPのソケットから抜けるのでは」と言っています。確かにそうかもしれません。イーサのケーブルはごついですので、ねじ穴とかも必要かもしれません。

こんな機能も欲しいとか、○万円以下ならぜひ購入したいというご意見など、どしどし受け付けておりますので、よろしかったらコメント欄に書き込んでください。もちろん匿名も可です。

購入してもいいよという方が数10名集まったら作るかもしれませんが、いまのところは製造の予定はありません。
構想(妄想)の段階としてアップロードしておきます。

ご意見募集中です。

| | コメント (0)

2011.01.22

ルネサスRXマイコン用JTAG ICEを更新

拙作のルネサスRX用JTAG ICEを更新しました。
バージョンは1.81βになります。

主な更新点は、
① ステップ実行のたびに割り込みがかかってしまう問題があったのを修正
② リセット信号をつながなくても、動くようにした
③ デバッガ接続時に、リセットベクタで停止するようにした。
④ ELFファイルをダウンロードする際、ゼロクリアすべき領域をゼロクリアするようにした。
⑤ ELFファイルをダウンロードした後、自動的にPSWをゼロクリアするようにした。
です。
いままでのバージョン(1.8)では、ステップ実行する間に割り込みを受け付けるという問題がありました。ステップ実行で指定された命令を実行するよりも先に割り込み処理ルーチンを実行するみたいで、奇妙な動作をしていました。
例えば、シリアル通信モジュール(SCI)の送信エンプティで割り込みをかけてしまうと、ステップ実行するたびに割り込みがかかってしまいます。なぜかというと、送信エンプティ割り込みルーチンは、普通はユーザメモリ上に確保したバッファに送信すべきデータがあれば、1文字送信するということを行いますが、1文字送信するとまた次の割り込みがスタンバイになってしまって・・という現象が起きていました。この問題を修正しました。

次に、リセット信号をつながなくてもよくなりました。JTAGの5本の信号(TCK、TDI、TMS、TDO、TRST)だけつなげば、JTAG ICEの機能をフルに使えます。リセット信号をつなぎにくいボードでもちゃんと動作します。
また、JTAG ICEとマイコンの間の通信が確立したときには、リセット後に飛ぶべき番地に飛んで、そこで停止して待つようにしました。
そのため、起動後には次のような画面になって止まります。

Rxice181

この状態から普通にスタートしてもよいし、ステップ実行してもよいというわけです。

それから、RAM上で動くプログラムをELF形式でダウンロードした場合、いままではローダがゼロクリアすべきだった領域をゼロクリアしていませんでした。この問題を修正しました。
また、プログラムをダウンロード後、PSWを自動でクリアするようにしました。普通のプログラムを実行している最中はユーザモードで動きますが、ブートコードはスーパーバイザモードで動かさなければなスタックポインタが正常に設定できません。
スーパーバイザモードに切り替えるにはPSWを0にすればよいので、プログラムのダウンロードとともに自動でクリアするようにしました。これで、ダウンロード後そのまま実行開始してもちゃんと初期化されて、正しくブートできるようになりました。

スーパーマルチJTAG ICEのダウンロードはこちらから行えます。
詳しい使い方などはこちらの記事をご覧下さい。

それから、オリジナルのRX62Nボードですが、こんな感じで設計しています。
Rx62n_brd_1

基板の大きさは76mm×56mm。クレジットカードくらいのサイズです。

BGA176ピンのRXマイコンを中心に、SDRAM(16~128MBytes)、LAN、USB、コネクタを配置しています。
左右のコネクタはペリフェラルやI/O。下のコネクタはEXDMAC用です。
USBは2つポートがあって、1つはUSBシリアル兼USB-JTAGです。78Kマイコンを使って実現します。
もうひとつのUSBは、RXマイコンにつながるUSBで、HostやFunctionになるものです。

小さな箱に入れて省電力サーバにできればいいなと思います。
来週中にはもう少し設計を詰めていきたいと思います。

| | コメント (0)

2011.01.21

みえたジェイ特別版を無料で差し上げます!

みえたジェイ特別版というのを作りました。

詳しい説明はこちらのページに書きましたが、Spartan-6が入出力するI/O端子の状態がパソコンの画面上で見えてしまうという便利なツールです。
Spartan-6はBGAパッケージなので、オシロやロジアナでは信号の状態が見えません。そこで、端子を観るためにJTAGを使ってしまおうというツールがみえたジェイなのです。

特別版というのは、Spartan-6のLX16、LX45、LX45Tだけに対応した、デバイス限定のバージョンです。特電Spartan-6ボード(TKDN-SP6-16、TKDN-SP6-45)や、EXPARTAN-6をこれからお買い上げいただく方に無料で差し上げます

Spartan-6ボードにUSBをつないで、
Tsunagu

このソフトを起動すれば、
Soku

すぐにFPGAの動きを見ることができます。
Miejs

FPGAのI/Oの動きが目で見えます。Hレベルの端子はピンク、Lレベルの端子は水色、出力は塗りつぶし、入力は網掛けで表示されます。こんな感じで、貴方の作ったFPGAの動作が目で見えます。

これは実機の状態をモニタしたものであって、シミュレーションではありません。

こういうことをするために、FPGAの中に何かのIPコアを埋め込む必要はありません。なんと、FPGAがコンフィギュレーションされる前でも使えます。それは、FPGAにあらかじめ備わっている「バウンダリスキャン」という、JTAGの機能を使っているからです。

こういうことができるのは、特電Spartan-6ボードだけの特典です。
BGAでも全く恐れる必要はないのです。

みえたジェイ特別版のインストールCD-ROMは15セット作りました。とりあえず数量限定とさせていただきます。
本日以降、出荷するSpartan-6ボードの中に、CD-ROMを入れて、出荷します。
売り切れの際はどうかご容赦ください!

詳しくはこちらのページをご覧下さい。
http://www.tokudenkairo.co.jp/sp6/mietaj.html

| | コメント (0)

2011.01.18

みえたジェイがバージョンアップして販売再開です

突然ですが、みえたジェイの販売を再開します。

Miej1

みえたジェイというのは、MITOUJTAGの中から「バウンダリスキャンで端子の状態をみる」ことに特化した、廉価版JTAGソフトウェアです。世の中のありとあらゆるJTAG対応デバイスの端子の状態を、パソコンの画面上で見えるようにしてしまいます。
(→いろんなボードで試した例 http://www.tokudenkairo.co.jp/jtag/mietaj/#screenshot

例えば、XILINXのSpartan-3AN評価ボードではこんな風にみえます。

Miej2

気になる価格ですが、高機能な「みえたジェイプラス」でも、なんと5,250円!!という破格のお値段です。
こんな安い価格ですが、中身はMITOUJTAGのコードをそのものなので、機能や信頼性はバッチリです。

そして、このたび、バージョンは1.2となりさらにパワーアップしました!

どんな点が機能アップされたかというと、まず、MITOUJTAGのように、ピン定義ファイルを読み込むことができるようになりました。デバイスの上で右クリックすると、プルダウンメニューが開きます。

Miej3

ここで、「ピン定義ファイルの読み込み」を選択します。すると、FPGAのピンに設計時と同じ名前を付けることができます。

Miej4

このため、「今見ているピンが何のピンだったっけ・・?」と迷うことがなくなり、回路の動作がわかりやすくなります。

設定した名前は、「端子の状態を一覧表示」機能で、状態とともに見ることもできるようになりました。
この一覧表はレポートの作成にも便利です。

Miej5

ところで、XILINXのSpartan-6(Spartan-6LXTも含む)は、世の中にある普通の方法では正しくバウンダリスキャンができません。Spartan-6のバウンダリスキャン機能はJTAGの規格どおりに正しく作られていないためです。詳しい話は「Spartan-6のバウンダリスキャンの問題」にも書きました。

みえたジェイは、今回のバージョンからこの問題に対処しました。おそらく、MITOUJTAGとみえたジェイは、
Spartan-6のバウンダリスキャンがまともにできる世界で唯一のソリューションになったのではないかと思います。

みえたジェイプラスは、パソコンとの接続に、当社のPocket JTAG Cable、マルチベンダ対応USB-JTAG書き込みアダプタの「J-Writer」特電Spartan-6ボードで作るUSB-JTAG、各社パラレルポートケーブルに対応しています。

このみえたジェイプラスは5,250円ですが、さらにお得なことに、ご購入いただいた後6ヶ月以内にMITOUJTAG(Light/BASIC/Pro)をご購入いただくと、みえたジェイの代金を差し引いた金額でご購入いただけます。たとえば、MITOUJTAG BASICフルセットPは本来99,330円の商品ですが、「みえたジェイプラス(5,250円)」をご購入いただいた方は、94,080円でご購入いただけます。つまり実質的にみえたジェイはタダになるのです。

みえたジェイの詳しい情報は下記のページをご覧下さい。
http://www.tokudenkairo.co.jp/jtag/mietaj/

みえたジェイで、気軽にバウンダリスキャンの世界を覗いてみてください。

あなたの作った回路をバウンダリスキャンで見たとき、思わず「おおっ、みえたぜ!」と叫びたくなってしまうでしょう。そんな気持ちを「みえたジェイ」という名前にこめました。あなたの回路の動きが見えたら、遠慮なく「みえたジェイ!」と(心の中で)叫んでください。

どうぞよろしくお願いします。

| | コメント (2)

2011.01.16

【予告】究極のRX62Nボードを作ります

世の中に、
 ・手のひらサイズでコンパクト
 ・拡張性が高い
 ・万能基板に乗せられる
 ・SDRAMを搭載して広大なメモリ空間が使える
 ・RX62Nの機能(バウンダリスキャンやEXDMA)を活かせる
 ・LAN搭載、USB搭載
 ・リーズナブルな価格
といった条件を全て満たしたボードがないので、自分で作ることにしました。

それが、このボード。
Tkdn_rx62n_brd

まだ設計中なのですが、手のひらサイズでコンパクトで、万能基板に乗せられて拡張できることをコンセプトとしています。SDRAMが乗るので最大128Mバイトの広大なメモリ空間が利用でき、Linuxを含めていろいろなOSが動く(はず)です。しかも、SDRAMは32bit幅の品種を選ぶので、アクセスも速いはずです。

RX62Nといっても実はいろんな品種があります。ここではすべての機能をフルに活かせるBGA176ピンを採用しました。なぜなら、100pinのRX62Nと176pinのRX62Nでは天と地ほどの差があることがわかってきたのです。100pinのRX62NではSDRAMとEtherが同時に使えなさそうなので、RAMが内蔵の64kバイトに制限されてしまいます。176pinならそういった制限はありません。また、100pinのRX62Nはバウンダリスキャンの機能が削られていたので残念なのです。

それから、この基板の最大の特徴は、サブプロセッサにuPD78F0730を搭載すること。このサブプロセッサは、USBシリアルの変換とUSB-JTAGを行います。単純なUSB-JTAGではなく、JTAG-ICEの機能まで持たせます。
つまり、シリアルポート経由でコマンドを叩くと、78KマイコンがJTAG ICEのプロトコルに変換してくれて、RX62Nをデバッグしてくれるというわけです。ICEのユーザインタフェースの部分は自分で作ることもできます。ICEがオンボードで搭載されているので、追加のライセンスがいらないというわけです。

実は、キーデバイスは既に昨年末に買っています。
Rx62n_bga

Sdram

あとは設計して実装するだけ。
こういうボードがあったら欲しい方いらっしゃいますでしょうか?
機能などについてリクエスト等ございましたら、どうかお寄せください。

趣味の方でも気軽に買えるような価格を目指します。
2月中旬の発売を目指します。

| | コメント (7)

2011.01.15

RX62N (YRDKRX62N)でJTAG ICEを動かす

RX62Nの手ごろなボードないかと思い探していたら、アメリカのルネサスにYRDKRX62Nというボードがあるのを発見しました。Digikeyで1万円くらいで購入しました。

このボードは、モノクロ液晶や、加速度センサー、イーサネットなどいろいろ備えています。また、uC/OS-III というRTOSが動いています。

気になるのはSEGGER J-LINKという謎の回路が乗っていること。これはSEGGER社のUSB-JTAGで、JTAGのICEをするためのもののようです。このJ-LINKがあるため、JTAGコネクタは基板上には出ていません。このJ-LINKというのはATMELだか何かのCPUだそうですが、パッケージ表面が削られているので型番は読み取れません。

回路図にはJ-LINKの回路も載っているので、回路図をみながらJTAGの信号を引き出します。「J-LINK DISABLE」と書かれたジャンパをつなげば、SEGGER J-LINKは無効にできます。
Yrdxrx62njtag2

TRSTはR86、TDIはR87、TMSはR88、TCKはR89、TDOはR85から取り出せます。
Seggerres

これらの抵抗から配線を引き出し、JTAGケーブルをつなぎます。
Yrdxrx62njtag

これでJTAGを使う準備ができました。

ところが、いざJTAG ICEを起動してみると、うまく接続できません。どうやら、ROMのコードにプロテクトがかかっていてJTAG ICEの接続を拒否しているようです。データシートによると、プロテクトIDはメモリアドレスFFFFFFA0から16バイト書かれているのですが、ICEが起動しないので読めません。

そこでルネサスのFDT(フラッシュ開発ツール)をつなぎ、ROMの内容を読み出そうと試みました。FDTを使うにはTP17~TP20のジャンパにシリアルをつなぎます。
Yrdxrx62nflash

しかし、FDTが起動したときにフラッシュROMを消去してしまいました。そのため、結局プロテクトIDはわかりませんでしたが、ROMの内容が消えたため、拙作のJTAG ICEは起動できました。
Yrdxrx62njtagice

RAMにプログラムをダウンロードして実行・・ということもできました。

YRDKRX62Nを使ってみた感想としては、デバッグもフラッシュの書き込みも、すべてSEGGER J-LINK経由で行うことを強制しているようで、私のような目的の人には窮屈に感じることでした。
開発環境にKPIT GNUツールというものも用意されているのですが、ユーザ登録しないと使えないなど、フリーなものではありません。また、デフォルトで書き込まれていたデモアプリのコードが、CD-ROMやWebサイトのどこにあるかわからないなど、いろいろ迷う点があります。

このボードはSEGGER J-LINKを通じてuC/OS-III というRTOSの使い方を学ぶという目的にはいいかもしれませんが、これで何かを作ろうとしたり、何かに組み込もうという気にはなれません。RX62Nの動作確認には十分なのですが・・

そして、何より不満だったのは、RX62NでもQFP100ピンのパッケージが使われていること。100pinのRX62Nはバウンダリスキャンに対応していないようなのです。

というわけで、本当に満足できるRX62Nボードが欲しいから、自分で作ることにします。

| | コメント (12)

2011.01.14

ルネサスRXマイコン用JTAG ICEをリリースします

お待たせしました!
ルネサスRXマイコン用JTAG ICEをリリースします。

このJTAG ICEは低機能ですが、ルネサスエレクトロニクスのRX610、RX62T、そしてRX62Nに対応しました。
(そのほかに、SH-2、SH-2A、SH-4、V850ESなどにも対応しています)

とりあえずは、このブログで使い方を簡単に説明します。
ここでは、ターゲットボードとして、アルファプロジェクトさんのAP-RX62T-0Aを使います。このボードは、RX62TというファミリのCPUが乗っています。RX62Nに比べると、幾分機能が削減されているタイプです。(RX62Nのほうが高級)

まず、ボードのCN3にJTAGの信号をつなぎます。このICEは、Pocket JTAG Cableや、Spartan-6ボードで作るUSB-JTAG「マルチJTAGプログラムアダプタ」のJ-Writer、それからパラレルポートなどが使えます。
Rxice_1

つなぎ方を図解します。
Rxice_2

TDI、TMS、TCK、TDO、Vref、GND、TRSTは必ずつないでください。nRSTとEMLEはオプションでつなぎます。(つながなくても動作させられるけど面倒だからつないだほうがいい)

このマイコンにあるEMLEという端子は、エミュレータイネーブルの意味です。この信号がHレベルになると、JTAG の使用が許可されます。この信号がLレベルだと、JTAGは使えません。EMLE信号をPocket JTAG Cableとつなぐと、自動的に操作されます。

このAP社の基板において、プログラムをデバッグする場合と、ルネサス・フラッシュ・ツール(FDT)で書き込む場合の、基板上のスイッチの設定を次の図に示します。これらの設定は排他的です。JTAG ICEでデバッグする場合の設定だとFDTは動作しません。逆にFDTでフラッシュに書き込む設定だと、JTAGは動作しないのでご注意ください。
Rxice_3

こちらからダウンロードしたスーパーマルチJTAG ICEをインストールすると、デスクトップ上に次のアイコンが出来ます。これをクリックして起動します。
Rxice_4

起動する際に、CPUの種類と使用するケーブルを選ぶ設定がでます。ここでは、RXマイコンとPocket JTAG Cableを選びます。いろんな種類のCPUに対応させてきたつもりですが、よくみると全部ルネサスになってしまいました。
Rxice_5

ケーブルがうまく接続できていて、電源がちゃんとつながっていれば、次のような画面が出て、JTAG ICEとCPUとの間で通信が確立したことが示されます。
Rxice_6

ここでツールバーのストップボタンを押すと、CPUの動作が停止し、現在のレジスタ一覧を読み出して停止します。
Rxice_7

この状態で、ステップ実行したり、再開したり、レジスタを書き換えたり、メモリダンプができます。

次に、プログラムをRAM上にダウンロードする方法を説明します。
プログラムを内蔵ROMではなくRAM上にダウンロードすれば、書き込みをするたびにROMが劣化するのを防げます。(ROMの書き換え回数は有限) また、RAMへのダウンロードのほうが短い時間で済みます。だから、簡単なプログラムならRAMにダウンロードしたほうがメリットがあります。

まず、ツールバーの「ダウンロードボタン」を押します。
Rxice_8

すると、ダウンロードマネージャというのが開きます。ここで、HEWで作成したファイルを指定して「実行」ボタンを押します。なお、HEWでコンパイル&リンクされたファイルは.absという拡張子になっていますが、中身はELFファイルです。

Rxice_10

短いプログラムなら、1秒足らずでダウンロードできます。
Rxice_9_2

RAM上にダウンロードしたら、制御レジスタのPSWを手動で0にしてください。下の画面では、PSWは00130000のようになっていますが、この13というのは、ユーザモードと割り込みレベルを示す値です。ユーザモードのままで初期化プログラムを走らせても正しく動作しないので、これを0にクリアしてスーパーバイザモードにしてから開始してください。
Rxice_11

これで実行開始ボタンを押せばプログラムは走りますし、ステップ実行ボタンを押せば1命令ずつ動きます。
下の画面は、シリアル通信を動かして文字をひたすら表示するテストプログラムです。
Rxice_12

スーパーマルチJTAG ICEのダウンロードはこちらから行えます。

まだまだバージョンアップしていきますので、ご期待ください。

| | コメント (2)

2011.01.09

RX62N/RX62Tでブレークポイント設定

RX62N/RX62T用のJTAG ICEを作っています。

単純なミスに気が付かず、ブレークポイントとシングルステップ実行の作成に4日くらいかかってしまいました。とほほ。
ようやく、ブレークポイントが設定できるようになり、シングルステップ実行も効くようになりました。

ROM上の好きなアドレスにブレークポイントを仕掛けて、そのアドレスに到達したらCPUをブレークさせ、デバッグモードに移行するということができるようになりました。

Rx600_break

そして、ブレークした後は、命令を1ステップずつ実行していって、内蔵レジスタの変化を見ることができます。

Rx600_break2

いま残っている大きな問題は、このCPUは命令が可変長のCISCなので、逆アセンブラが解析開始アドレスをちゃんと理解していないと、正しく逆アセンブルできないことです。
下の表示は、
MVTC #0aa005055h,BPSW
MVTC #0aa006055h,FINTV
MVTC #0aa007055h,FPSW
bra _debug_loop
というコードを逆アセンブルしているのですが、解析開始点の同期が取れていなくてめちゃめちゃになってしまいます。
Rx600_break3

RX62T/RX62N用JTAG ICEのリリース開始まで、あと少しです。
お楽しみに。

| | コメント (0)

2011.01.05

RXの内蔵RAMにJTAGでダウンロード

RX62Tの内蔵RAMにJTAGでダウンロードできるようにしました。

Rx_download

内蔵フラッシュROMにコードを書き込まなくてもRAM上でプログラムを実行できるようになりました。書き込み回数に制限のあるフラッシュROMを使わないので、気軽に実験できるようになります。RXマイコンにJTAGからプログラムを転送するために、RS232Cのシリアルケーブルを使わなくてもよくなって、ケーブルもすっきりしました。

まだコードを洗練していないので、毎秒4kバイト程度の速度しかでませんが、いずれ速くします。

| | コメント (0)

RX600の逆アセンブラを実装中

そういうわけで、RX600用のJTAG-ICEを開発していますが、困ったことに逆アセンブラが超つくりにくいです。

このRXというコアはCISCで超高コード効率と謳われているのですが、そのかわりコードの直交性や規則性が犠牲になっている感じです。何に使うんだろうと思えるような命令や、便利そうな命令があって、すごく命令数が多い。データシートを読んで、すべてのアセンブラの命令をなぞる感じで入力していくので、命令数が多いと作業が増えます。
RXの逆アセンブラを作るのは結構きついですね。

とりあえず、ブートコードくらいは逆アセできるように・・と頑張っています。
Rx62t_disasm

逆アセンブラの作成は単純作業とテストの繰り返しなので、よく使う命令(サンプルプログラムに出てくる命令)だけ実装したら、次の機能の実装に移ろうかと思います。

| | コメント (0)

2011.01.04

RX62TのJTAG ICEを開発しています

なひたふから皆様へ贈る、今年の第一弾は
RX62T/RX62N用JTAG ICE」です。
今話題沸騰のCPUといえば、やっぱりルネサスの新生マイコン「RX」シリーズ。
なひたふのJTAG ICEは非常に低機能ですが、このRXマイコンにいち早く対応します。

JTAG ICEというのは、JTAGのケーブルをつなぐだけで、マイコンのメモリやレジスタを自由自在に読み書きして、CPUの動きをパソコンから自由自在に操るツールのことです。
特電のPocket JTAG Cableや、J-Writer、XILINXやALTERAのパラレル接続ケーブルを介してJTAGインタフェースでRXマイコンと接続し、自由自在に操ることができるようになります。このツールが動くと、シリアルケーブルがなくてもRX62Tマイコンにプログラムをダウンロードできて、好きなタイミングでステップ実行などができるようになります。

接続の方法はこんなです。
Rx62tjtag

開発中の画面を、ちょこっとだけお見せします。
Jice_rx62t_dev1

いま現在、
 ・CPUとの接続
 ・任意のタイミングでのブレークと再開
 ・汎用レジスタ/制御レジスタのリード・ライト
 ・メモリの読み出し
ができています。

これから、
 ・逆アセンブラ
 ・メモリの書き込み(プログラムのダウンロード)
 ・ブレークポイントの設定
 ・ステップ実行
の機能を作っていきます。

このRX用JTAG ICEは、近日中に無料でダウンロードできるようにいたします。
ただし、ご利用いただける方は、特殊電子回路㈱のMITOUJTAG(バージョン2以降)をご利用のお客様に限らせていただきますので、なにとぞご了承ください。DLLとかファイルの関係でそうなってしまいます。ご容赦ください。

つまり、MITOUJTAG BASIC、Pro、Lightをご利用のお客様へ、日ごろのご愛顧をこめてのプレゼントとさせていただきます。
※ なお、MITOUJTAG Lightは36,540円という低価格で好評発売中です。期間限定発売なので、今月中には販売を終了します。お早めにご検討ください。

開発の経過はこのブログに随時執筆していきます。
ご期待ください。

| | コメント (0)

2011.01.02

Spartan-6のMicroBlazeでU-Bootを動かす

Spartan-6に入れたMicroBlazeでLinuxを動かしたいと思っていろいろ調べていました。
まずブートローダの選択です。著名なブートローダにはいくつかあるのですが、U-Boot 1.1.6ではMicroBlazeがサポートされていたので、sourceforgeからダウンロードしてきて、各種パラメータ書き換えることで対応することができました。
カスタムボード用の設定ファイルをゼロから書くと大変ですが、U-Boot 1.1.6には、Spartan-3のMicroBlazeのFPGAボードの設定ファイルがあったので、それを雛形にして作りました。

MicroBlaze用のGCCはmb-gccというのですが、困ったことにこれが普通のCygwin環境からはうまく動かないし、EDKに入っているCygwinだかMinGWのGCCはu-bootのmakeファイルから使われないので、u-bootのコンパイルが通りませんでした。GCCのパスの設定方法とかを理解すれば解決できるのでしょうがが、とりあえずは、両者の環境で交互にmakeすることで最後まで通しました。

u-boot-1.1.6/Makefileに
tkdn_sp6_config: unconfig
@$(MKCONFIG) -a $(@:_config=) microblaze microblaze tkdn_sp6 TokushuDenshiKairo
という記述を書き、

u-boot-1.1.6/board/TokushuDenshiKairo/tkdn_sp6
というフォルダを作っておいて、さらに
make tkdn_sp6_config
make
とします。

XilinxのBASH環境とCygwin環境で交互にmakeし、どちらもエラーとなったら、
u-boot-1.1.6/Makefileの222行目
SUBDIRS = tools \

SUBDIRS = #tools \
とコメントアウトし、再びmakeします。

コンパイル中はこんな感じで3分くらい待ちます。
Mbcompile

それから、MicroBlazeのコンパイル時のオプションで、以下のオプションがついたりつかなかったりするようにします。
 -mno-xl-soft-mul ・・・ ハードウェア乗算器を実装していれば有効
 -mno-xl-soft-div ・・・ ハードウェア除算器を実装していれば有効
 -mxl-barrel-shift ・・・ バレルシフタを実装していれば有効
MicroBlazeのデフォルトではハードウェア乗算器しか入っていないので、この設定は変更が必要です。
そんなこんなでコンパイルを通して、HEXファイルに変換してシリアルポートを通じてSpartan-6に転送!
Sp6mbuboot

なんとかU-Bootは起動しました。でも、全然コマンドがない。(;ω;)
フラッシュROMとか、SPIとか、ネット関係とか・・
自分で一つ一つ有効にしていかなければならないのかもしれません。

いろいろ調べたりして面白かったのですが、道のりは長そうなので、ここでひとまずこの計画は中断します。明日からは別のことをやります。組み込みLinuxに詳しい方がいらっしゃいましたら、プロジェクト一式を差し上げますので、どうか続きを作ってください。

| | コメント (0)

2011.01.01

あけましておめでとうございます

あけましておめでとうございます。

今年は、Spartan-6やJTAGを通じて、お客様の皆様と私「なひたふ」との双方向のコミュニケーションを活性化するような年にしていきたいと思います。

今年もよろしくお願いします。

| | コメント (0)

« 2010年12月 | トップページ | 2011年2月 »