無料ブログ作成サービス JUGEM
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | - | - | pookmark |
←prev entry Top next entry→
C6000DSPのブートについて
C6000DSPのブートについて。
どんな検索ワードでこのブログが探されているかを管理画面で見ることができまして、
そのなかにブートというキーワードでここまで来られた方がいるようなので、今回は
ブートの話。

C6000DSPはチップに内部にFlashROMなどプログラムを書いておけるエリアを持ちません。
C2000やMSP430というマイコンはFlashやOTPを内蔵しています。
C6000DSPのメモリはゼロ番地から内部SRAMが始まり(ゼロ番地からかどうかは
最近ではデバイスによりますが)、外部メモリ(EMIF)や、各種ペリフェラル設定の
レジスタまで、すべてフラットな1本のアドレス空間に存在します。

DSPは電源とクロックが供給され、リセットが解除されると、
まず最初にブートモードを決めるピンの状態を読みに行きます。
ブートモードは一般的に3種類ほどあります。
(1)ROM Boot
(2)PCI/HPI Boot
(3)NoBoot

それぞれのモードでDSPの動作は若干異なりますが、要点としては、
DSPはリセット解除後にゼロ番地からプログラムの実行を始めます。
しかしゼロ番地はSRAMで、リセット解除後は何もプログラムが書かれていません。
ブートモードは、このSRAMのエリアにどのような方法でプログラムを転送するのか
を決めるものです。

(1)ROM BootはEMIFの所定のCE領域に接続されたFlashメモリなどから
DSPのEDMAが自動的に内部SRAMへプログラムを転送するモードです。
ユーザーはDSPのプログラムをFlashROMに書き込んでおけば、リセット解除後に
DSPが自分でプログラムを内部SRAMに転送し、転送完了後にゼロ番地から実行を
はじめます。
制限としては、Flashメモリなどから転送できる最大サイズが0x400(1KByte)という
点です。これを超える転送はできません。
そのため、ユーザーが作成したプログラムが1KByteを超える場合(最近は大抵越えますが)
2段階ブートという手法をとります。
要するに1段目には2段目(ユーザープログラム)を転送するためのプログラムを
書いておき、ROM Bootで1段目をロードし、1段目のプログラムで本体のプログラムを
展開するという形を取ります。

(2)HPI/PCI Boot
これは、外部メモリにプログラムを置いておくのではなく、マイコンなど
ホストからDSPのメモリにプログラムを転送して、転送完了後DSPに
トリガを与えることでDSPが実行を始めるモードです。
DSPのほかにマスタとなることができるプロセッサがあれば、この方法が可能です。
HPIやPCIというペリフェラルはDSPのメモリ空間のほとんどすべてにアクセスが
できるペリフェラルです。すべてですので、ホストからDSPのペリフェラルレジスタに
値を設定することも可能ですし、DSPに接続されたSDRAMにアクセスすることも
可能です。
このブートモードでは1KByteという制限はありません。

(3)No Boot
このモードは、要するに何もしないというモードです。
デバッグ、開発の時に使います。
DSPは何かしらブートモードが設定されているとそこからプログラムをロードして
実行しようとしてしまいますので、場合によってはバグの原因となるレジスタ設定も
してしまう可能性もあります。 このモードに設定することでそうしたプログラムの
実行を停止させ、JTAGによるデバッグをしやすくします。

以上がC6000DSPの主なブート方法です。
デバイスによってはこのほかにSPIブートやSRIOからのブートをサポートするものも
あります。




| 了一 | ペリフェラル | comments(0) | - | pookmark |
スポンサーサイト
| スポンサードリンク | - | - | - | pookmark |
Comment
name:
email:
url:
comments: