CQ出版社のトップページへ戻る CqREEKのページへ戻る |
|
ここでは,よく寄せられるCqREEK/SH-1に関する質問についてお答えします.
Q1.
ボードにRS-232-Cがついているようだが,これを使ったアプリケーションは製作可能か?A1.
CPUボードに実装されているRS-232-Cコネクタは,デバッガであるPARTNER-CQ版と通信するために使用するので,デバッグと同時にアプリケーションで使用することは難しいと思われます.
基本的に Goコマンドでユーザプログラムの実行が開始されたあとは,単なるシリアルと同等なので,通信速度やデータ長,ストップビット長などの設定をデバッガで使用している環境から変えない限り,ユーザのアプリケーションで使用しても問題はないと考えられますが,現実的にはデバッガとの同時使用は難しいでしょう.
Q2.
このキットに入っているexeGCC-CQ版ではROM化できない?A2.
CqREEK/SH-1は,CPUボードにROMエミュレーション機能などがありません.よって,ROM領域に対してユーザのプログラムをダウンロードしたり,ブレークポイントを設定してデバッグを行うことができず,すべてCPUボード上のSRAM領域に対してのみ行うことができます.
このようにデバッグがSRAM領域に対してしか行えないので,同梱されているクロスCコンパイラであるexeGCC-CQ版では,ROM化のサポートを考えていません.
しかし,せっかく製作したアプリケーションを動作させるのに,いちいちパソコンと接続してプログラムをダウンロードする必要があるのは面倒ですす.そこで疑似ROM化ツールを用意しました.疑似ROM化ツールはここからダウンロード可能です.
なお疑似ROM化の概要についてはexeGCC-CQ版およびexeGCC評価版に関する質問のQ6をご参照ください.
Q3.
(上の質問のつづき)ということは,CPUボードに実装されている256KバイトのSRAMの中に,スタック領域はもちろんデータバッファやプログラムコードも格納されるということ?A3. そのとおりです.
正式にROM化ができれば,プログラムコードはROMに格納したままで,SRAMをスタックとデータバッファだけに使えることができますが,exeGCC-CQ版では正式なROM化がサポートされていないので,ボード上のSRAMにプログラムコードも詰め込む必要があるのです.
Q4.
正式なROM化をサポートしたコンパイラでプログラムを作りたい!A4.
この場合は京都マイクロコンピュータから発売されている,exeGCCの製品版をご購入していただくことをおすすめしています.exeGCC-CQ版およびexeGCC評価版に関する質問のQ2をご参照ください.
Q5.
CqREEK/SH-1には,CPUの全信号ピンが取り出し可能なようにスルーホールがありますが,ここにコネクタを付けたいと考えています.コネクタの型名などを教えてください.A5.
2.54mmピッチ 2列のごく一般的なスルーホールがあいているだけです.SH-1版はCN1が1〜56,CN2が57〜112で全112ピンです.とくに使用するコネクタなどに指定はありません.
ユニバーサル基板に自作回路を作成し,その基板の上にCPUボードを乗せる,という使い方が一般的かと思いますが,お手元にあるピンヘッダなりをご自由にお使いください.
コネクタ実装例
Q6.
ボードを見ると,CN6という用途不明のコネクタを実装する部分がありますが,これはいったい何ですか? 使い方を説明してください.A6.
このコネクタはCqREEK/SH-1では使用しません.というより,使用できません.
CPUのアドレス線や信号線の一部がここに接続されているので,ボードを改造する記事などの場合には,はんだ付けのしやすさからここから信号線を取り出す場合もあるかと思いますが,ここにコネクタを接続して何かをするということは,CqREEKシリーズでは想定されていません.
Q7.
CqREEK/SH-1では,アセンブラによるプログラム開発可能ですか?A7.
exeGCC/CQ版およびexeGCC評価版に関する質問のQ4をご参照ください.
この件に関して,Interface 1997年6月号 p.199に“exeGCC/CQ版 アセンブラの活用法”という記事が掲載されています.この記事が非常に参考になると思われます.
Q8.
プログラムの一部をアセンブラで記述して,パフォーマンスを上げたいと思います.しかしRISC CPUは初めてなので,アセンブラがわかりません.何か良い参考書はありませんか?A8.
Z80や8086,68000などのCPUなら参考書は山ほどありますが,RISC CPUのプログラミングの本はまだまだ少ないのが事実です.現在CqREEKで搭載されているCPUに関する単行本を予定していますが,まだ発売時期は未定です.
またCqREEKシリーズには付属のCD-ROMに,RISC CPUのハードウェアマニュアルやプログラミングマニュアルが収録されていますが,それだけではなかなかわからないのも事実です.
ではアセンブラの勉強ができなかというと,そうではありません.目の前に“GCC”という達人がいるではありませんか.
exeGCC/CQ版に限らず一般的にCコンパイラは,Cプログラムをアセンブラに翻訳してからアセンブルしリンクします.Cコンパイラが出力するアセンブラのソースを参考にするという方法があります.
CqREEK/SH-1のデバッガやCコンパイラをインストールすると,sample.c というサンプルプログラムもインストールされます.このCプログラムのアセンブラソースを出力させるには,gcc -c -S sample.c[リターン]
とします.これで sample.s というアセンブラのソースが出力されます.
Q9.
CqREEK/SH-1版を買ったのですが,CD-ROMのボリュームラベルが“V821”となってるんですが....A9.
申し訳ございません.CD-ROM製作過程におけるミスです.CD-ROMの中身はSH-1版ですので,使用上はまったく問題ありません.こちらを参照ください.
なお,第2版では訂正済みです.
Q10.
CqREEK/SH-1版の取扱説明書の32ページの説明のベクタ・アドレスですが,“A0000000h”なっていますが,“A000000h”の間違いではないでしょうか?(ゼロが六つ)A10.
これも取扱説明書の製作過程における間違いです.こちらを参照ください.
なお,第2版では訂正済みです.
Q11. Up!
以下のプログラムを実行すると,PCが0になって実行が終わるのですが…A11.#define ADR 0x05fffee9 void main(void) { int i; int *p; int data[10]; p = ADR; for(i=0;i<10;i++){ data[i]= *p; } }
プログラミングに関する技術的な質問は,サポート部隊としても責任を持ってお答えできない場合がありますが……
さてこの問題は,内蔵I/Oの8ビット幅の領域に対して,int型でアクセスしているため,例外が発生して実行が終了したものと思われます(CqREEK/SH-1ではアドレス例外処理ルーチンを用意していないため,アドレス例外発生時デバッガがアイドリング状態に戻ります).このように,SHの内蔵I/Oは,8または16ビットでアクセスしなければならない部分があるようです.
ハードウェアマニュアルの第8章のバスステート・コントローラや,第4章の例外処理の項目を参照してください.
このアドレスは8ビット幅でアクセスすべき領域なので,
unsigned char *p;
unsigned char data[100];
のようにChar型でアクセスすると,正常に実行されるようです.
(この件に関連したこちらも参照ください)
Q12.
動作環境が Windows3.1およびWindows95 となっていますが,WindowsNT では使用できないのでしょうか?A12.
デバッガとコンパイラが正式にサポートしているバージョンは,Windows3.1とWindows95のみです.
ただし実際にはWindowsNT3.51で動作したという情報が入っていますし,また編集部でもWindowsNT4.0で添付のサンプルプログラムをコンパイルして実行させてみたところ,一応動作したことを確認しています(パソコンはPC/AT).
すべての機能が正しく動作するかどうかはわかりませんし,サポートの範囲外ですので,ユーザ各自の責任でお使いください.
Q13.
COM1にモデムを接続したままCqREEKをインストールし,PARTNER-CQ版を起動するとハングアップします.PARTNER-CQ版はCOM1でもCOM2でも使用できるはずではなかったのですか?A13.
PARTNER-CQ版 & PARTNER-J/Win評価版に関する質問のQ2をご参照ください.
Q14.
exeGCC/CQ版(SH-1)ではx86系コンパイラにあるようなinterrupt修飾子はないのでしょうか? 割り込みを使うにはどうすればよいのでしょうか?A14.
exeGCC/CQ版およびexeGCC評価版に関する質問のQ5をご参照ください.
Q7にもあるようにexeGCC/CQ版でアセンブラおよび割り込み関連を使うには,Interface 1997年6月号の“exeGCC/CQ版 アセンブラの活用法”という記事を参考にされるのが一番かと思われます.
Q15.
exeGCC/CQ版のライブラリ関数にはどのようなものがあるのでしょうか? また,printfなどの関数がある場合は,どこに対して表示されますか?A15.
exeGCC/CQ版およびexeGCC評価版に関する質問のQ3をご覧ください.なお,SH-1はメモリマップドI/O方式のため,x86系コンパイラにあるような inp/outp のような関数は必要ありません.
Q16.
CPUボードに実装されているROMにはホストと通信するためのモニタが格納されていると思いますが,デバッガを使わない場合はこのモニタROMを外してしまい,自分の開発したプログラム書き込んだ別のROMを入れても問題ないでしょうか?A16.
まったく問題ありません.若干注意が必要なのは,モニタROMが完全になくなりますから,デバッグ時と同じような環境にするにはシステム・レジスタ関連の設定を自前のプログラムで面倒を見る必要があります.取扱説明書のp.21のような初期化ルーチンを入れれば,デバッグ時と同様なシステム環境となります.
なお,取り外したモニタROMは,ROMの内容を読み出したり,別のCPUボードに使用したりすることはおやめください.PARTNER-CQ版 & PARTNER-J/Win評価版に関する質問のQ1をご参照ください.
Q17.
PARTNERではデバッグするプログラム???.oをダウンロードしますが,PARTNERで使用している間,このファイルを再コンパイルで更新したり削除したりできますか? 私の環境ではときどき排他制御に引っかかるのか,更新できていないときがあります.A17.
PARTNER-CQ版 & PARTNER-J/Win評価版に関する質問のQ4をご参照ください.
Q18.
exeGCC/CQ版を,普通のDOS上で使いたいのですが……A18.
動作させるメモリ環境がDPMIやVCPIに対応していれば,基本的にはexeGCCは動作するはずです.しかしDOSのメモリドライバは,OS純正のものもあれば,拡張メモリに付属している各メーカ製のものなどさまざまなものがあり,どの規格に対応しているか,またその規格の中のどのファンクションをサポートしているかなどの問題で,現実的にはサポートするのが難しい状況です.
exeGCCはWindows3.1のDOS窓でも十分動作するので,Windows95を走らせるには遅すぎるようなマシンの場合は,Windows3.1をインストールしてお使いいただければと思います.
Q19.
CqREEK/SH-1のCPUボードの基板サイズやコネクタ位置の正確な値を教えてください.A19.
基板サイズなどの情報を追加しました.CqREEK/SH-1の詳細のページを参照してください.
Q20.
Interface1997年4月号のCqREEK通信の予告で,SRAM増設記事が掲載されるとあったのですが,その後,その記事は掲載されたのでしょうか?A20.
申し訳ありません.諸般の事情でまだ未掲載のままです.
Q21.
CqREEK/SH-1のCPUボードのSRAMを4MビットSRAMにしようと思います.回路は問題ないと思うのですが,デバッガやコンパイラの使用上で問題はありますか?A21.
SRAMをもっと容量の大きな物に変えることは,アドレスバスをCPUから引っ張ってくればすむので技術的には問題ありませんが,問題はコンパイラです.リンカが標準搭載されている256KバイトのSRAMを前提にスタックポインタが設定されるので,これを容量に応じて設定しなければなりません.
そのためのツールを,InterGiga No.7 のInterGigaオリジナル記事で紹介しています.また,このCqREEKサポートページのダウンロードコーナからもダウンロードできます.
Q22. New!
CPUボードを購入したのですが,ROMソケットは32ピンなのに,28ピンのROMが差し込まれています! 当然ピン数が合わないので,ROMソケットの3番ピンにROMの1番ピンを合わせて差し込まれています! 間違った部品で製造された不良品ではないでしょうか!!A22.
ご安心ください.マイコンの世界ではよく使う手で,不良品ではありません.
プログラムは使う人や目的に応じていろいろありますから,必要なROMのサイズもいろいろです.もちろん大は小を兼ねるということで,大きな容量のROMを積んでおけば小さいプログラムも入ります.しかし大容量のROMは値段も高いのでもったいないですね.
ROMには容量別にいろいろ種類があります.実は256Kビットから4Mビット程度までのROMは,かなりの部分のピン配置が同じなのです.そこで配置が異なる部分だけジャンパなどの設定で配線を変更し,それ以外の部分は共通で使うという方針で設計するのが一般的です.具体的にどう配線すればそれが実現できるかは,添付の回路図やマイコン設計書籍などを参照してください.
32ピンソケットに28ピンのROMを差し込むときは,ROMソケットの3番ピンにROMの1番ピンが対応するように差し込みます.ROMを交換するときなどはこの点に注意して使用してください.
Q23. New!
CPUボードを見るとROMが1個搭載されていますが,その隣にもう一つROMを実装できそうなソケットが見えます.これは何でしょうか?A23.
標準で搭載されているROMはデバッガと通信するためのモニタプログラムが格納されています.このプログラムはサイズが小さいので,32Kバイト以下のサイズに十分収まっています.
SH-1のエリア0は,8/16ビット幅として使えるように設定できます.そこでモニタROMを8ビット幅のROM1個に書き込み,エリア0を8ビット幅で使用しています.このモニタROMをはずしてユーザーが開発したROM化プログラムを実装するときは,CPUボード上の設定を変えて,16ビット幅(8ビット幅のROMを2個並べる)で使用します.空いているソケットはそのためのものです.
Q24. New!
疑似ROM化でプログラムをROM化したいんですが,8ビット幅で使えるのは256KビットのROMを1個で使うときだけなのでしょうか? ROM化したいプログラムが32Kバイトでは入りきらないので512KビットのROMを1個で使いたいんです.手元には256Kビットと512KビットのROMが1個づつしかないんで…A24.
残念ながらROM1個(8ビット幅)で使用できるのは,256KビットのROMだけです.ROM化プログラムが32Kバイトに入りきらない場合は,ROMを2個使い(16ビット幅)で使用します.CPUボードの回路上の仕様です.
考えてみるとわかりますが,8ビット幅のROM1個を使う場合はアドレス線の接続を,CPUのA0をROMのA0に,A1をA1に…と接続します.しかし16ビット幅のときは,CPUのA1をそれぞれのROMのA0に…というように1ビットずらして配線する必要があります.しかしそれではジャンパの設定がアドレスの本数だけ必要になってしまいます.
本CPUボードでは,8ビット幅のときのみ若干(?)特殊なアドレス接続をすることでジャンパ本数を減らしています.回路を見るとわかりますが,CPUのA1がROMのA0に接続されています.そして8ビット幅のときはCPUのA0をROMのA14に接続しています.つまり256KビットROMを使う場合は,CPUから見た偶数アドレスがROM内32Kバイト中の前半16Kバイトに,奇数アドレスが後半16Kバイトに配置されるという変則的な構成になっています.
疑似ROM化ツールには256KビットのROMを1個で使う場合のために,上記のような変則的なROM配置にデータの配置を変換してくれるツールを用意しています.
しかしこれがわかりにくく混乱を招くので,取扱説明書にもあるように,基本的にユーザープログラムをROM化する場合はROMを2個使った16ビット幅で使用することをおすすめしています.16ビット幅で使用するときは,同じ容量のROMを2個用意し,偶数アドレス用ROMと奇数アドレス用ROMとにわけ,ROM内は先頭アドレス0から順番に格納されるという普通の配置となります.
なお,256KビットROMを使うときは8ビット幅で使わなければならないように聞こえるかもしれませんが,256KビットROMを2個使って16ビット幅で使うことも可能です.整理すると…
・ROM化プログラムが32Kバイト以下
→256KビットROMを1個で,8ビット幅で使用
・ROM化プログラムが32K+1バイト〜64Kバイト以下
→256KビットROMを2個で,16ビット幅で使用
・ROM化プログラムが64K+1バイト〜128Kバイト以下
→512ビットROMを2個で,16ビット幅で使用
・ROM化プログラムが128K+1バイト〜256Kバイト以下
→1MビットROMを2個で,16ビット幅で使用
……以下すべて16ビット幅で使用
ということになります.もちろん,大は小を兼ねる…ということで,ROM化プログラムは十分サイズが小さいんだけど,手元に1MビットのROMしかないので1MビットのROMを2個使う…という使い方も問題ありません.
また基本的には同じ容量のROMを2個使って16ビット幅を構成しますが,ご質問のように256Kビットと512KビットのROMが1個づつしかないのであれば,512KビットのROMを256KビットROMとみなし,256KビットROMを2個使った方法で疑似ROM化が可能です.
回路図を見るとわかるように,ROMソケットの設定を256Kビット用に設定すると,ROMソケットの3番ピンにはVccが供給されます.ここに512KビットのROMを差し込むと,512KビットROMの1番ピン(A15)に“H”レベルが供給されるので,CPUからアドレス0を見ると,512KビットROMの後半の 8000h を見ていることになります.つまり256Kビット用に作ったファイルを512KビットROMの後ろ半分に配置すればよいわけです.
…もっと正確には…
512Kビットや1MビットのROMを8ビット幅の設定で使えなくはありません.しかし8ビット幅の設定にすると,CPUのアドレスバスA15がROMソケットに配線されなくなるので(アドレスバスのA0とA15を排他選択),CPUから見るとアドレス x8000h〜xFFFFh の範囲で x0000h〜x7FFFh のイメージが発生し,ROMの容量すべてを使うことができないのです.つまり正確には,512Kビットや1MビットのROMを256KビットのROMとして32Kバイトの範囲だけを使うなら8ビット幅でも使用できる…ということになります.実際にROM内のどの32Kバイトの範囲がCPUから見えるようになるかは回路図を見てご自身で考えてください.
もっとも,512Kビットなら32Kバイトブロックを2回,1Mビットなら4回繰り返してROM内を全部埋めて書き込めば,どこかの32KバイトがCPUにマッピングされるだろう…という手抜きもアリですが(笑)
…この内容をよく理解できない人は,8ビット幅で使うのは256KビットROMだけと覚えてください!!
Q25. New!
CPUボードの回路的な関係で,使用できないCPUリソースや機能などはありますか? すべてのCPU機能がユーザーに解放されていますか?A25.
まず,CPU内蔵のシリアル1がデバッガ用として使用されています.またエリア0にROMがエリア2にSRAMが接続されています.さらにI/OポートのPB13がLED点灯制御用として,またPB14がデバッガ通信時のCPUボード側のレディ出力として使われています.またNMIはデバッガの強制ブレークに使われています.
それ以外のCPU機能はユーザーに解放されています.ただし112ピンQFPにこれだけの機能を実装しているということで,兼用ピンになっている機能がたくさんあります.すべての機能を一度に使用できるわけではないのでご注意ください.たとえばデバッガ通信用として使っているシリアルですが,TxDとRxDはPB8とPB9の兼用ピンとなっています.結果的にI/Oポートの8/9/13/14が本CPUボードでは使えないことになります.
どの機能が兼用ピンになっているのかなどは,SH7032のハードウェアマニュアルを参照してください.
Q26. New!
CPUボードをよく見ると,パターンだけが引いてあって未実装の部品があります.IC6の16V8とIC7のM62021Pは,それぞれどこのメーカーの何のICなのでしょうか? 実装するとまずいでしょうか?A26.
16V8とはGAL(ギャル)と呼ばれるPLD(プログラマブルロジックデバイス)です.CPUがソフトウェアを切り替えることで動作が変わるように,PLDも中を書き換えることで動作を変えることができるICです.よって“16V8”という部品を買ってきてCPUボードに実装しても,何も動作をしません.どんな動作をさせるか,中身の回路を設計して書き込む必要があります.
CqREEK/SH-1ではIC6は不要です.CN6と同様,このCPUボードを別の仕様で使う場合に必要となる部品なので,本キットでは無視してかまいません.
ちなみにGALはセカンドソースも存在する汎用部品です.オリジナルはLatticeという会社です.
M62021Pは三菱電機製の電源監視およびリセットICです.これを使えばCPUボード上のSRAMをバッテリバックアップさせることが可能です.詳細はInterface1997年3月号のCqREEK通信をご覧ください.
Q27. New!
Q25の件をキット購入前に調べたいと思います.SH7032のハードウェアマニュアルを見せていただけないでしょうか? または入手する方法を教えてください.A26.
SH7032に関するマニュアルは,インターネットのホームページからダウンロード可能です.こちらのダウンロードコーナからリンクをたどってみてください.
Copyright CQ Publishing Co.,Ltd. 1997-1999 edasupport@cqpub.co.jp