MKプログラムが最も異なります。これらは、よく知られているstm、lattice、microchip、nuvoton、alteraなどであり、2003年にリリースされたazoteq、シリコンワーク、フリースケールなどのエキゾチックなものです。それらのすべて(まあ、ほとんどすべて)は、他の誰も持っていない独自のプロトコルを開発しており、それは最高です。ユニバーサルのスローガンで開催されていますが。そして、このユニバーサルプロトコルのセットはすべて、その多様性に満足しています。ここに誇張があるとすれば、それはかなりの量です。
しかし、この最近の記事は私にここに書くように促しました..。さまざまなgd32ファミリのサンプルがちょうど私に届き、すべての下位ファミリをプログラミングするためのプログラムを作成したので、RISC-Vファミリをパフしました。そして、私はこの記事を見ました。さて、誰かがデータシートの再告知に興味を持っているなら、プログラミングプログラミングデータシートも面白いかもしれないと思いました。
若い家族は、JTAGとSWDを介してプログラムされます(たとえば、SWD.gd32f130xxしかないマイナーな例外を除く)。一方、gd32vfにはJTAGしかありません。しかし、JTAGまたはSWDは単なるツールです。これらのツールを使用した運転は、非常に異なる方法で行われます。gd32fに関するARMDebug Interface Architecture仕様を読むことができ、すべてがそこに非常に明確に記述されている場合、gd32vfについてはRISC-V外部デバッグサポートおよびRISC-V命令セットマニュアルに記載されています。そして、これらの2つの作品はハーフキックでマスターすることはできません。後者には、サブタイトルVolumeIIもあります。これは警戒した。したがって、番号1、場合によっては番号3と4の豚もいます
。RISC-V外部デバッグサポートによると、レジスタへのアクセスは2つの方法で実行できます。
- 抽象コマンドの使用
- プログラムバッファの使用
3つを思い出すために:
- システムバスアクセスの使用(GD32VFは使用しません)
- プログラムバッファの使用
- 抽象メモリアクセスの使用
GD32VFにはシステムバスアクセスがなく(sbcsレジスタの「システムバスアクセスがサポートされています」ビット)、プログラムバッファを使用してそこにアセンブラを書き込むことに喜びがないため、コマンドを使用する非常に良い方法があります。最初は、これらの気の利いた賢い人がレジスターの番号(アクセスするレジスターの番号)を取得することは私には完全に理解できませんでした。regnoの値の説明は、誇らしげに次のように述べています。表3.3で説明されているように、アクセスするレジスタの数。
しかし、正確にはどこに。しかし、その後、上記の近くのデータシート(RISC-V取扱説明書。第2巻)でそれらを見つけ、太陽が輝いていました。
だからそれはすべてうまくいった。 gd32fよりもすべてが本当に便利であることがわかりました。それにコードを注ぐという観点から。しかし、それはほんの始まりに過ぎませんでした。今、私はそれのためのモニターを書く必要がありました。高速よりもさらに高速にするため。 IARは、彼から私のWORKBENCHをダウンロードすることを許可しませんでしたが、彼はそれについて力強く自慢していました。クリックしてダウンロードする場所がまだ見つかりません。サンプルを送った中国のチーフマネージャーは、彼らがNucleiStudioを使用していると言ったので、私はそれをダウンロードしてインストールしました。私が使った中で最も不便だったのはロッカーだったように思えました。過去のろくでなしがどのように水を運び、それから乾いて歩いたのか理解できません。頭のてっぺんまで濡れていた。しかし、NucleiStudioはロッカーを上回っています。一般的に、多くの苦しみの後、私はデータと機能をメモリ内の適切な場所に押し込むことができました。もっと優雅にできると思いますが、十分ではありませんでした。
こんな感じです。
理解できない落書きがたくさん含まれている元のスクリプト(この日食の腸のどこかで見つけました)を見つけて、そこに必要なアドレスの説明を追加する必要があります
. = 0x20000000;
.data_sect : { *(.data_sect) }
. = 0x20000400;
.a_sect : { *(.a_sect) }
. = 0x20000500;
.f_sect : { *(.f_sect) }
それでも、IARの* .icfファイルの見た目ははるかに明確で単純です!しかし、これは習慣の問題だと思います。この不幸なファイルを探していたとき、Googleは、リンクスクリプトほど強力で、強力で、クールで、柔軟性のあるものはないことを常に保証してくれました。たぶん、でも私は疲れています。とにかく。シャベル。
今、私はPCを再配置する必要があり、すべてがひどい速度で動作します。しかし、モニターはまだ機能しませんでした。そして今、私がこれをすべて始めた段落。これは、将来のRISC-V-Miracle研究者に役立ちます。
ここに彼がいます。
PCを再配置するには、その値をdpcレジスタに書き込むだけで、ハートの開始時に値がPCにコピーされます。この時点までに、プログラムはすでに他の多くのレジスターの書き込みと読み取りを行っています。大成功で、私は認めなければなりません。そして、モニターは機能しません。結局のところ、dpcに書き込むには、そこに書き込んでから、そこから読み取る必要があります。なぜそうなのか、私にはわかりません。私はすべてのドキュメントをもう一度読み、「ヒーローの運命を興奮して追いかけました」。しかし、なぜそうなのか私にはわかりませんでした。
その後、すべてがうまくいきました。メモリから何かを読み取るための唯一の不便は、ハートを停止してから再開することです。あまり便利ではありませんが、怖くはありません。たとえば、モニターがそこでどのように感じられ、動作が終了したかを確認するには、ハートを停止し、必要なメモリを読み取り、必要に応じて再起動する必要があります。
dpcの段落が誰かに数時間の時間を節約し、この節約された時間のすべてを何もすることができないことを願っています。