PIC32MM CPUシステム

平成31年 07月

    1. システムの概要
 本品は複数の基板とシステムソフトウェア(P-Systemと呼ぶことにします)で構成される組み込み装置の雛形です。
小規模な組み込み装置を前提として装置が共通に必要とする機能の最小限を実装してあります。
このためユーザーは新規にアプリケーションを開発することだけに注力できます。

本来は試作装置を手早く試作することを目的に製作したものですが、アプリケーションは自社で開発する
という方向けに個別販売も行います。
販売方法としては
 ・ ハードウェア基板のみ(基板の種類は現時点でPIC32MM CPU, SPI_DIO, Uartx2の3種類あります。全て個別販売します)
 ・ CPU基板とシステムソフトウェアP-Systemのセット
のいずれかです。システムソフトウェア単独での販売は現時点で予定しておりません。
[重要な注意点]
 ・ システムソフトウェアP-Systemの販売形態はライセンス販売です。
   複数のCPU基板でP-Systemを使用する場合にはCPU基板と同数のライセンス購入が必要です。
 ・ SPI_DIO及びUartx2のP-System用ドライバソフトウェアはP-Systemソフトウェアに含まれています。


 これらは基本的に受注生産です。
受注生産のメリットとして細部の仕様変更がやりやすい点があります。
部分的な変更の例:
 ・ 使用しているコネクタをA社製xxxにしたい
 ・ 出力ドライバICをICソケット実装としたい
 ・ CPU基板の絶縁IOポート数をNポート増やしたい。
など、ご要望があれば事前にお問い合わせください。

 お問い合わせ先e-mai l:  info@spice-elec.com


 1.PIC32MM CPUシステムの概要
 本システムはMCUとしてPIC32MM0256GPM064を使用します。ROM容量256kB, RAM容量32kBと小規模な組み込み装置を実装するには
十分なメモリ容量です。
 システムプログラムはC++言語で書かれています。本システムではC++言語を「より良いC言語」または「クラス付きのC言語」として使用します。
C++言語によって拡張された機能の多くは小規模な組み込み装置にはメモリリソースを食いすぎるためほとんど使用していません。
このためC言語を使える方ならそれ程の追加投資をしなくても扱うことが出来ます。
逆に、C++言語のクラスを使用することで特に関数の名前付けやソースファイルの分割などが従来より簡単になるメリットを得ることが出来ます。

 本システムの特徴を以下に示します。
・マルチタスクシステム
 システムが使用するタスクと合わせて最大で250個までのタスクをマルチタスク動作できます。
マルチタスクの動作方式は非プリエンプティブ方式のみです。
プリエンプティブ方式はリソースの管理負担が増えるので小規模向きではないと判断し実装していません。

・デバッグ用ポートの確保
 C言語のstdin, stdout, stderrを模したデバッグポートとしてRS-232Cポートを確保してあります。
アプリケーションは初期化終了後、一部の例外を除き任意の場所からstderr経由でエラー情報を出力できます。
これにより実使用状態で発生したエラー情報を得ることが可能になります。
また、システムタスクとして端末コンソールを登録すれば、アプリケーション動作と並行してコマンド入力によるシステム管理が行えます。
標準コマンドとして以下のような機能を用意しています。
   ・各タスクの実行ループ回数、タスクごとのスライス実行時間の最大値、そのときのプログラム位置の表示。
   ・特定の割り込み処理関数の実行回数と最大所要時間の表示
   ・(後述の)ログ情報の表示, ログメモリの消去
使用できるコマンドはユーザーによる追加・削除が可能です。

・装置ログ
 システムタスクとして装置ログ機能を登録することで装置ログを記録できます。ログ機能に日時を記録するためRTCも内蔵しています。
この機能は主として装置の故障などが起きたときに、その情報を記録することが目的です。
その意味ではログ機能とstderrは使い方が似ています。
stderrとログの違いはログは不揮発性メモリに記録されるため、メモリが上書きされるまで任意のタイミングで参照できる点です。
stderrは標準の仕様では、エラー発生時にRS-232Cをモニタしていないと情報が失われます。
反面、ログ機能の方がより多くのリソースを使用しているため、故障箇所によってはエラーを記録できないことがあります。

・致命的エラー時に呼び出す関数fatalErrorを用意
 通常、何らかの異常によって継続実行が出来ない場合、出来るだけ速やかにシステムを安全な状態に設定する必要があります。
一般的にはシステムをリセットしますが、単純にリセットしてしまうとどのような異常が起きたのかを知る術が無いため装置の改善が
出来ません。これはどちらも非常に重要な要求であるため、出来る限りの両立を考える必要があります。
 このため異常を検出した場合システムをリセットするのではなく、リセットと等価になる処理を実施し装置の安全を確保した状態で
エラー情報をstderr及びログに出力する関数を用意しました。
 ユーザーは「装置を安全に停止させる」処理部分のみを添付の雛形を参考に記述するだけで済みます。
[重要な注意点]
 「装置を安全に停止させる」処理の記述内容は装置のハード設計に強く依存します。
新規に設計される場合は、本記述内容が複雑にならないような構成が望まれます。
  ・ CPUをリセット状態にすれば、システム故障の場合を除きシステム全体が安全な状態になるようにご検討ください。
  ・ システム故障への対応として電源断による安全回路を実装してください。


・エラー発生時のトレース機能によるソースプログラムデバッグ
 プログラムが動作中に上記の致命的エラーが発生した場合、その発生位置をプログラムの呼び出し経路(コルーチンの呼び出し順)
と一緒にstderrに出力します。表示情報はファイル名・関数名及び関数内での(同一関数内に複数のエラー発生箇所がある場合の)識別名
であるため、これらの情報から直接ソースプログラムを参照できます。
 ここで強調すべきなのは、この情報はデバッガなどが接続されていない実使用状況で出力されるという点です。
デバッガが使用できる環境であればデバッガがスタック情報を解析して関数の呼び出し経路を表示してくれますが、組み込み装置で問題になる
エラーの多くは発生頻度が低く、常時デバッガを接続しておくことが難しい状況で発生します。
エラー情報から直接ソースプログラムを参照できるのは、コスト全体に占める開発費の割合が高い組み込み装置では特に重要です。

・豊富な時間計測機能
 内蔵のタイマを使用した時間計測機能を豊富に用意してあります。下記タイマの計測値を簡単にms, usといった時間単位に変換できます。
   ・32ビット長の1ms単位のタイマ
   ・最小分解能1/24usの1ms周期タイマ+16/32ビットの1ms単位のタイマ
    1/24usタイマが1ms周期でカウントし、このタイマのリロード時に16/32ビットタイマがカウントアップします。
 また、ある時点でのタイマ値を起点としてその後の経過時間を算出するためのタイマ値同士の差分演算などの機能を有します。



 2.各基板の概要
 本基板は試作装置を手早く製作することを目的に製作しました。
このため信頼性を最重視した製品ではないのですが、一般的な民生機器または産業機器でも環境要求がさほど厳しくない用途では問題なく使用できます。

 信頼性の面で一般的な産業用機器に対して見劣る点としては
 ・ スタック型コネクタを採用しているため基板枚数が増えてくると基板間に介在するコンタクト数が増加し、接触不良のリスクが増加する。
 ・ 通常、高信頼性を望む用途では4層以上の基板を使用するが、本品は2層基板です。耐ノイズ性では見劣ります。
   また、同じ2層基板であっても数MHz以下といった比較的低い周波数で動作する基板との比較でも耐ノイズ性では不利になります。
   理由は基板内で一部高速なクロックを使用しているためです。
 ・ 一部の部品については生産ロットによって異なる部品を使用します。
   保障性能を満たす範囲内で機能的に互換性のある他メーカーの製品を使用することがあります。
   このため外見や部品色が異なることがあります。
があります。

    余談
 特に使用する部品に関しては、信頼性を最優先するなら全ての部品で型式を完全に指定することが必要ですが、小規模ロットの生産では
思うように部品を入手できないことが多々あります。特に中長期的な製品供給を前提にする場合はどうしても各社の相当品を使用することに
なります。これは避けようがありません。


PIC32MM CPU

 写真は試作時のもので、実際の製品とは使用している部品などが異なることがあります。

[主なハードウェア仕様]
 ・ SPIインタフェースを主とする内部バス(スタック型コネクタを採用することでラックは不要)
   内部バスには最大で8個のSPIデバイスを接続可能ですが、スタック型コネクタの信頼性を考慮すると4〜5枚程度の基板枚数
   に収めることが望ましいと考えます。SPIは最大24MHzで動作するため非常に高速な転送が出来ます。
 ・ 内部バスにはPIC CPUのPPS(周辺機能ピン選択)機能を持つピンを含めて最大で20本を確保。バス経由でCPU内蔵機能の使用が可能。
   内部バスは2つのコネクタに分かれており、基板の接続順序によってはコネクタの一方が接続できず最大で12本までの使用になります。
 ・ デバッグポートとしてRS-232Cポートを確保。(フロー制御RTS/CTS信号は未実装)
 ・ 装置の稼動ログを記録するためのフラッシュROMを実装。他にアプリケーションで使用できるSPI接続の8ピンデバイス実装エリアを確保。
   EEPROM, RAM, F-RAMなど多数の製品から選択できます。デバイスのパッケージはSOPまたはDIP型のいずれか。
   本基板用のシステムソフトウェアP-Systemでは、フラッシュROMへログを書き込むライブラリを提供します。
 ・ DC12〜24V電源で動作する絶縁IOを内蔵。入力ポートを2ビット、出力ポートを2ビット確保。
   入力ポートは2ビット共にPIC CPUに直接割り込みを要求可能。
   出力ポートは外部の装置に対してCPUの動作状態を連絡することを想定した出力です。インターロック回路やリセット出力に使用します。
 ・ RTCを内蔵。
 ・ PIC CPUの状態出力用にLED出力2本を用意。この出力はピンコネクタを介して外部に引き出し可能。


SPI−DIO

 写真は試作時のもので、実際の製品とは使用している部品などが異なることがあります。

[主なハードウェア仕様]
 ・ IO電圧DC24Vで動作する絶縁IOで、入力16ビット, 出力16ビット。出力はトランジスタ出力です。複数枚を使用することでポート数を増やせます。
 ・ 本基板からPIC32MM CPU基板への割り込み要求は(標準仕様では)出来ません。個別対応は可能ですのでご相談ください。

[重要な注意点]
 本基板には一般的な誤接続に対する保護回路は実装してありますが、例外として出力ポートの過電流保護回路は未実装です。
つまり、出力ポートに直接+電源を接続するなど大電流が流れると一瞬で故障します。
配線チェックの時には特に+電源線の接続にご注意ください。


UARTx2

 本基板はPIC CPUのPPS機能を使用するため、バス接続のピン配置が客先指定となる半完成品です。
同様に、通信仕様もRS-232CとRS-422/RS-485を客先指定により選択して製作します。
上記のように客先の要求仕様によって部品の実装状態も大きく変わります。
また、写真ではICソケットを使用していますが、標準ではICソケットは使用しません。
従って、写真は参考程度にお考えください。

[主なハードウェア仕様]
 ・ RS-232CまたはRS-422/RS-485を合計で2CH実装可能。共にCPUとは絶縁されています。
   RS-232CとRS-422/RS-485は発注時に選択します。RS-422とRS-485の切り替えはジャンパによって切り替えます。

[ハードウェア仕様の追加説明]
 通信仕様は各社で準拠仕様が沢山あるため、混乱の元になっています。誤解しやすいと思われる仕様について書いておきます。
 ・RS-232C
   ・フロー制御(RTS/CTS信号)は有無どちらでも可能ですが発注時には仕様の確定が必要です。
   ・接続コネクタはCHあたり1個のみの実装です。
 ・RS-422
   ・フロー制御(RS-232CにおけるRTS/CTS信号)は無しのみ可能です。
   ・全二重通信です。
   ・マスタは一つのみである必要がありますが、スレーブは複数接続が可能です。スレーブ数の上限はドライバICの仕様によって決まります。
    特に二桁のスレーブ接続を検討されている場合は事前にご相談ください。
   ・マスタとスレーブ間の接続ケーブルはクロスケーブル、スレーブとスレーブ間の接続ケーブルはストレートケーブルが必要です。
   ・基板内に終端抵抗は未実装です。終端抵抗はCHあたり二つある接続コネクタの一つを使用して接続します。
 ・RS-485
   ・フロー制御(RS-232CにおけるRTS/CTS信号)は無しのみ可能です。
   ・半二重通信です。
   ・接続するデバイス数の上限はドライバICの仕様によって決まります。
    特に二桁のデバイス接続を検討されている場合は事前にご相談ください。
   ・接続ケーブルはストレートケーブルが必要です。
   ・基板内に終端抵抗は未実装です。終端抵抗はCHあたり二つある接続コネクタの一つを使用して接続します。



PIC32MM目次へ  前へ  次へ