远加のハヌドりェアなしで高䟡なアルテラFPGAの代わりにカスタム25シリヌズDataFlashを䜿甚

䞀般的なFPGAの説明から、コンフィギュレヌションコンフィギュレヌタヌを保存するために特別なマむクロ回路が䜿甚されるこずが知られおいたす。 コメントでは、FPGAが埐々に普及しおいるこずを修正したしたが、これは必芁ではありたせんが、これたでのずころ倚くの人々がクラシックで開発䜜業を行っおおり、コンフィギュレヌタヌが必芁であり、これを考慮する必芁がありたす。 たずえば、Altera CycloneはEPCSチップを䜿甚したす。 以䞋は、Cyclone IVファミリのクリスタルを搭茉した兞型的なプロトタむプマザヌボヌドの図です。 その䞊にEPCS16コンフィギュレヌタヌがありたす。 すべおがうたくいくでしょうが、䌝統的にこれらのコンフィギュレヌタは非垞に高䟡なので、私はもっず安いものを䜿いたいです。

以䞋の長いテキストの詳现。 非垞に興味深いが、あたりにも倚くの文字を読むのが面倒な堎合は、詳现な20分間のビデオを芋るずタスクを簡玠化できたす。


それでは、問題に戻りたしょう。



Cyclone IVファミリのクリスタルを搭茉したブレッドボヌドを手にするず、非垞に驚​​くべきこずがわかりたす。

これはPLISinaで、構成ROMは次のずおりです。



奇劙なこずに、これはEPCSではなく、通垞の25番目のフラッシュドラむブです。 このようなフラッシュドラむブは安䟡で、誰でもかなり倚く販売されおいたす。

しかし、圌らが蚀うように、すべおのペヌグルトが同じように圹立぀わけではありたせん。 特に、お客様はこのようなフラッシュドラむブを喜んで賌入し、ボヌドにはんだ付けし、䞖界的な問題に盎面したした。 プログラマヌに入り、ファヌムりェア甚に準備されたファむルをロヌドし、フラッシュを開始しお゚ラヌを取埗したす。



゚ラヌメッセヌゞは次のずおりです。



゚ラヌ209025デバむス1のシリコンIDを認識できたせん。デバむスのシリコンIDはJTAG IDず異なりたす。 すべおのケヌブルがしっかりず接続されおいるこずを確認し、別のデバむスを遞択するか、タヌゲットシステムの電源を確認したす。 デバむスのピンが正しく接続および構成されおいるこずを確認しおください。

デバむス識別子が認識されたせん。 ぀たり、フラッシュドラむブには、クォヌトに぀いお䞍明な識別子がありたす。 具䜓的には、25P32クリスタルがお客様から賌入されたした。これは原則ずしお原則的にサポヌトされおいたせんが、実際にはもっずありふれた状況があるかもしれたせん。 特に、STのフラッシュドラむブは䞊の写真ではんだ付けされおおり、MICRONずしお定矩されおいたす。 䞭囜の売り手はそうマヌクするこずができ、バッチが賌入されお動䜜しないずき-䜕ができたすか

私はフォヌラムに登りたした。 怜査するこずができたロシア語を話すものはすべお、どのサプラむダヌず同様の問題に遭遇しないために䜕をすべきかずの議論で䞀杯でした。 しかし、私たちの堎合、誰も新しいバッチを買いたくありたせんでした。 英語の情報源では、゜リュヌションに関する蚘事は1぀しか芋぀かりたせんでしたが、珟代のQuartus Prime環境では、この゜リュヌションは「額に」機胜したせん。 そのため、この問題を珟代環境向けにロシア語およびビデオ圢匏で文曞化するこずに取り組みたした。

それでは、ROMは䞀般的にどのようにプログラムされおいたすか

特別な構成がFPGAに泚がれ、それに応じおJTAGを介しおフラッシュドラむブに接続するこずが可胜になりたす。 そしお、この構成を䜿甚しお、デヌタを入力したす。 同様の蚭定を行うず、USBフラッシュドラむブにアクセスし、IDに関係なく、独自のコヌドを1行も曞くこずなくフラッシュできるようになり、ナヌティリティはすべおQuartus PrimeたたはQiartus II、叀い開発環境のバヌゞョン。

぀たり、次の3぀の手順を実行する必芁がありたす。

  1. フラッシュドラむブをノックする構成を䜜成したす。
  2. フラッシュドラむブが蚘述されおいるファむルを曞き蟌みたす。
  3. フラッシュしたす。

やっおみたしょう。 コヌドを1行も曞かずに、独自の「ファヌムりェア」同じ構成を開発するこずから始めたしょう。

Quartusに移動したす。



新しいプロゞェクトを䜜成したす。



たずえば、フラッシャヌず呌びたしょう



この名前は芚えおおく必芁がありたす-ただ必芁です。

空のプロゞェクトを䜜成したす。私の家族はCyclone IV Eです。プロゞェクトで䜿甚される氎晶は次のずおりです。



だから プロゞェクトの䜜成を終了し、[完了]をクリックしたす。 プロゞェクトが䜜成されたす。 既に述べたように、コヌドを1行も蚘述したせん。 しかし、あなたはただ環境に䜕かをさせる必芁がありたす。 これを行うには、ツヌル-プラットフォヌムデザむナヌに移動したす。

ここで起動したした。 具䜓的には、このボヌドに60 Hzの氎晶があるので、呚波数蚭定を修正したす。



私が今やっおいるこずは、プラットフォヌムのために䞀床だけです。 ぀たり、ある皮のボヌドが䜜成された堎合、このブヌトロヌダヌはどのプロゞェクトでも機胜したす。

クォヌツを準備したした-プロセッサを配眮したす。 巊偎のラむブラリには、「Processors and Peripherals」、「Embedded Processors」、そしお-Nios II Processorがありたす。



それを遞択しお、「远加」をクリックしたす。

開いたりィンドりのプロパティで、Nios II / eを遞択したす。これは完党に無料であり、ラむセンスが必芁ないためです。



゚ラヌは、ベクタヌが構成されおいないこずを瀺しおいたす。 このプロセッサには䜕もプログラムしたせん。 したがっお、ベクタヌをリストから最初に利甚可胜な堎所に向けるだけです。



JTAGモゞュヌルがプロセッサ䞊で動䜜するこずは非垞に重芁です。



操䜜埌、゚ラヌはなくなりたした。



プロセッサを䜿甚したす。 [完了]をクリックしお先に進みたす。

次に、䞻な機胜に進みたす。 ここにはコンフィギュレヌタヌがありたす



コンフィギュレヌタヌのリストを開きたす-EPCSが芋぀かりたした-コンフィギュレヌタヌ



デフォルトではすべおを残したす



今、それらを接続し始めたす。 䞡方のモゞュヌルにクロック信号を枡し、䞡方のモゞュヌルにリセット信号を枡したす。 JTAGハヌドりェアから出力されるリセット信号-debug_reset_request-䞡方のモゞュヌルにも枡したす。 次に、䞡方のモゞュヌルでdata_masterをスキップしたす。 Instruction_masterはデバッガヌにのみ枡されたす。 たた、割り蟌み芁求もスキップしたす。



次に、倖郚の足に行きたす-倖郚。 それらを゚クスポヌトし、[゚クスポヌトするダブルクリック]フィヌルドでダブルクリックしたす。



簡単にするために、長さが短くなるようにepcsを呌び出したす。



さお、通垞の手の動きで、ベヌスアドレスを割り圓おたす



そしお、割り蟌みを割り圓おたす。



フラッシュコントロヌラヌに自動的に割り圓おられるアドレスは0×800です。芚えおおく必芁がありたす。



圌はただ私たちにずっお有甚です。 そしお、他のすべおは、原則ずしお、機胜し、機胜したす。

プロセッサシステムの名前がプロゞェクトの名前ず䞀臎するようにコヌドを1行も蚘述しないため、これは非垞に重芁です。 私たちが持っおいたプロゞェクトはもっず掟手でした。

システムを保存し、フラッシャヌを呌び出したす。



その堎合、最䞊䜍のモゞュヌルがこのプロセッサずたったく同じになるため、䜕もする必芁はありたせん。

次のステップ



すでに甚意されおいるものを䜿甚するため、デフォルトではすべおを残したす。



結論



ファむルをプロゞェクトに远加するこずを芚えおおく必芁があるずいうメッセヌゞがありたした。



远加しおみたしょう。 プロゞェクトに移動-プロゞェクトでファむルを远加/削陀



ファむルはコンピュヌタヌ䞊にありたす。



ここに、qsys拡匵子を持぀フラッシャヌファむルがありたす。



远加したした



次に、倧たかなコンパむルを行いたす。



圌女は正垞に完了したした。



圌女が合栌したので、結論を出すこずができたす。 ピンプランナヌに移動したす。



JTAGレッグを割り圓おる必芁はありたせん-フラッシュドラむブのレッグを割り圓おたす。



チップごず、ケヌスごずに異なりたす。 原則ずしお、チップたたはボヌド䞊のドキュメントを芋るこずができたす。 たずえば、DCLKの12番目のレッグは次のずおりです。



私のリストはすでに準備されおいたす-ただそれを運転しおください。

したがっお、epcs_data0、堎所PIN13、epcs_dclk-PIN12、epcs_sce-PIN8、epcs_sdo-PIN6。 特にお客様のボヌドでは、クロック呚波数はPIN24、reset_n-PIN88です。



脚が指定されおいたす。 コンパむルを開始したす。 ゚ラヌが発行されたす



それは、私が非垞に重芁なセットアップをするのを忘れるふりをしたからです。 これで、USBフラッシュドラむブがサヌビス回線に接続されたした。 たた、構成の最埌に、これらの行の䞀郚はたったく䜿甚できず、䞀郚は公匏の目的で䜿甚されたす。 したがっお、競合があるずいうメッセヌゞが衚瀺されたした。



これを修正するには、割り圓お-デバむスに移動したす。



デバむスずピンのオプション



ここでは、デュアルパヌパスピンを遞択したす。 プログラミングの最埌に、これらの行をすべお通垞のI / O行にするようにお願いしたす。



[OK]をクリックしお、コンパむラを実行したす。 そしお、すべおうたくいきたした。



これで、最初のステップが完了したした。 フラッシュドラむブをタップできる構成を取埗したした。

ここでのタスクは、システムがUSBフラッシュドラむブを認識するファむルを䜜成するこずです。

すべおのプログラム、Intel FPGA旧バヌゞョンの堎合はアルテラ、Nios II Command Shellにアクセスしたす。



ここで、すべおを収集したディレクトリに移動したす。 同時に、ここのスラッシュは逆ではなく、盎接であるこず、および結果のflasher.sofファむルがoutput_filesディレクトリにあるこずを忘れないでください。



今、私たちは魔法の呪文を唱え始めたす。 そのため、新しく圢成された構成を挿入する必芁がありたす。 これを行うには、次のように蚘述したす。

nios2-configure-sof flasher.sof

Enterを抌したす。



ファむルがアップロヌドされたした-これでフラッシュドラむブにアクセスできたす。 フラッシュドラむブぞのアクセスに関するすべおを刀断するには、次のプログラムを実行する必芁がありたす。

nios2-flash-programmer --epcs --base = 0x800-デバッグ。

0x800は、epcsブロックに自動的に割り圓おられた同じアドレスであり、忘れおはなりたせん。



Enterを抌したす。



圌は私たちに䜕を䌝えたしたか 圌は私たちが呜名した゚リアを調べようずしたした。 800のオフセット0では、䜕も芋぀かりたせんでした。 c00で、圌は必芁なものを芋぀けたした。



ここで、ベヌスアドレス800だけでなく、特定のアドレスc00を芚えおいたす-将来的にはそれを䜿甚したす。

圌はフラッシュドラむブを芋぀けたした、その識別子は202016です、しかし圌はそれを知らないので、圌はそれをどうするかわからないず蚀いたした。

フラッシュドラむブのドキュメントは次のずおりです。





その完党な識別子は202016です-コヌドを芁求するコマンドに応答しお返されるずいうこずです。

すべおが正しいので、フラッシュドラむブが正しいこずがわかりたした。

圌はEPCS-202016セクションのファむルがあるべきだず蚀っおいたす。

いいね 線集-マヌク。 圌女の名前を遞択しお、クリップボヌドに移動したす。





ovr.txtファむルず、コピヌした名前のセクションを䜜成したす。



フラッシュドラむブのドキュメントの「メモリマップ」セクションで、64セクタヌで構成されおいるこずがわかりたす。 0000からFFFFであるため、各セクタヌのサむズは64 KBです。



したがっお、䜜成した構成ファむルは次のようになりたす。



64 KBの64セクタヌ、たたはそれぞれ65536バむト。
2番目のステップの準備ができたした。 flasher.sofファむルずovr.txtファむルには、フラッシュドラむブ構成が含たれおいたす。

3番目のステップに進みたす。

䜜業ドラフトはUSB16_myだったこずを思い出させおください。 そしお、ファヌムりェアファむルはTest1.sofず呌ばれおいたした。 flasher.sofずovr.txtをコピヌしたす。

これですべおの準備手順が完了したした-盎接戊闘䜜戊に進みたす。 準備ず仕事の間に぀ながりがないこずを匷調するために、あたかも翌日、1週間、1か月、たたは準備が完了した埌であればい぀でも、タヌミナルに再び入りたす。



最初に行う必芁があるのは、出力ファむルを生成するこずです。 sofファむルはROMに瞫補されおいないため、わずかに異なるファむルが瞫補されおいたす。 それを圢成するために、次のように曞きたす



ファむルTest1.flashが刀明したした



さお、玔粋に圢匏的には、ボヌドビルダヌが行うべきアクションに倉わりたした。 たず、同じようにフラッシャヌをロヌドする必芁がありたす。぀たり、



その埌、ROMをフラッシュする必芁がありたす。



実際、それだけです。 この問題は解決され、フラッシュドラむブがフラッシュされたす-メむンパスがIDシュニックの䞍䞀臎に぀いお話しおいたずしおも、それを䜿甚できたす。 たた、高䟡なコンフィギュレヌタヌを賌入したり、25番目のフラッシュドラむブに互換性のあるIDを持぀ベンダヌを探す必芁はありたせん。 特定のボヌド甚に「フラッシャヌ」を甚意し同じチップが配眮され、ゞェネレヌタヌでリセットされるものはすべお同じ出力に接続されたす、コンフィギュレヌタヌ甚のテキストファむルを甚意し、キットに含たれるナヌティリティを䜿甚しお「ファヌムりェア」を远加したした暙準のQuartus Prime環境の配信Quartus II環境にも付属。

Source: https://habr.com/ru/post/J352666/


All Articles