開発対象となる基板構成は、以下のようになっています。ある製品の検査装置であり、ログを出力させる為、今回CFを追加したいとのことでした。
 |
|
図2. 回路構成
|
開発環境は既に準備されていましたので、まずは立ち上げ段階として、CFのレジスタに直接設定値を書き込むコードを作成し、CFへのアクセスができることの確認を行いました。
ICE(※4)で、CFのアトリビュート領域(※5)へアクセスしましたが、全くリードできませんでした。
CPUマニュアル、CFのマニュアルをひととおり見直しつつ、テスター等で端子をあたり、原因を探っていったところ、基板の設計ミスであることが分かりました。
具体的な問題は、以下のとおりです。
CE1(チップセレクト)、REG(領域の切替)等の端子はマイコンの仕様として他機能の端子とマルチプレクスされており、指定された動作モードでは本来使用したい機能に設定できなかった。
弊社として対策まで検討し、以下のように提案しました。(動作モードの切り替えで対応するにはシングルチップモード(※6)にするしかなく、外部アクセスできなくなりますので代替案とはなりませんでした)
A.テストピンとして用意されている端子にCF用の端子を割り当てる
CE1を単純に汎用ポートで制御するようにした場合には、CF制御中の割り込み、タスクディスパッチ時には必ずチップセレクトをインアクティブにする必要があります。
B.RESET等はテストピンに割り当て、CE1はアドレスバスで論理反転する
この場合、他デバイスへアクセスする際にCFへアクセスしてしまう可能性がありますので、CF領域に対応する上位アドレスとなった場合のみCE1をLoにするなどの対応が必要になります。
A案とB案のメリット/デメリットをまとめると以下のようになります。
| A案 |
B案 |
| メリット |
デメリット |
メリット |
デメリット |
| 基板上のテストピンにジャンパ線を飛ばすだけで可能。(弊社で基板の改修が可能) |
CFにアクセスする度にソフトウェアの処理による汎用ポートのLo/Hi出力が必要な為、オーバーヘッドは大きい。 |
反転回路を入れるのでソフトウェアの処理はいらず、オーバーヘッドは小さい。 |
反転回路を入れるので、弊社で基板の改修はできない。(郵送での基板のやりとりが必要) |
|
|
表1. メリットとデメリット
|
最終的には、お客様にご判断いただき、
・ お客様、弊社双方で最も工数をかけない方法を希望されていた
・ 運用として、CF書き込みタイミングはシビアなものでなく、データ量は決まっており、連続して書き込まれることもない為、多少の速度遅延は問題ない
という理由により、上記「A.テストピンとして用意されている端子にCF用の端子を割り当てる」対応を行うことになりました。
修正内容を以下の図にまとめます。
 |
|
図3. 基板改修
|
基板の改修作業としては、端子同士をジャンパ線で接続するもので、それ程難しい内容ではありませんでしたので、弊社で行うことになりました。
細かい作業でしたが、基板の改修自体は問題なく行え、その後レジスタ設定までを一通り見なおして、ICE接続状態で、アトリビュート領域を確認したところ、製造番号(アスキーコードで「S.a.n.D.i.s.k...」と表示されるなど)がデバッガのメモリウィンドウに表示されることが確認できました。
|

|
|
図4. メモリウィンドウへの表示
|
(※3) オンチップデバッガ … 基板上にマイコンを実装した状態(On-chip)でプログラムのデバッグを行うことのできる装置
(※4) ICE(In-Circuit Emulator) … CPUの機能をエミュレートする装置。デバッグ機能を持つ。
(※5) アトリビュート領域 … CFの各種情報と設定用のレジスタが存在する。
(※6) シングルチップモード … マイコンにおける外部メモリ無しモード。