RISC-Vのいろいろ調べる前に、周辺を動かしてみようと思います。周辺とはタイマーやGPIOやADCなどことです。周辺のプログラムをする時には、マイコンのマニュアルを見ながらプログラムを作る必要があります。今回の、GD32VF103のマニュアルはhttps://files.seeedstudio.com/wiki/Bazaar_Document/GD32VF103_User_Manual_EN_V1.0.pdf にありました。メモリマップを見ながら、個別の説明を見ていく事でプログラムが出来そうです。
例えばGPIOを使おうと思ったら、そのアドレスを調べたうえで、GPIO個別のページで詳細を確認します。
特にGPIOのように同一のモジュールが複数ある場合には、個別ページにはアドレスが書かれていないことが多いです。
なのでGPIOのA(GPIOA)を使う場合には0x4001_0800がベースアドレスで、そのポートコントロールレジスタ0(GPIOA_PCR0)にアクセスするにはAddress Offset 0x00を加えてプログラムを作っていく必要があります。
はい、正直言って面倒です。
IAR社のEWRISC-Vでは、周辺機能を使うためのヘッダファイルが用意されていました。具体的には、ioGD32VF103.hが用意されていました。
たとえば、GPIOのレジスタなどがアクセスできるようにヘッダファイルが用意されています。アクセス方法も、32ビットでアクセスと各フィールドでアクセス出来るようになっており、これがあればプログラムを効率よく組むことが出来ます。
GPIOA_OCTL=0x0;と記述するれば32ビットでこのレジスタにアクセスとなりますし、
GPIOA_OCTL_bit.OCTL0=1;と記述すればそのフィールド単位でのアクセスが可能となります。
このレジスタの説明は、以下なので上記のヘッダがあれば記述出来る事が分かると思います。
でも、最近のマイコンはリセット直後は周辺が使える状態になっていないことが多いです。
明日はそのあたりを調べてみようと思います。