Mini210S 開発キット詳細URL
第V章 スタック設定とC言語でLEDを点灯
第三節 コードコンパイルとプログラミングの実行
SDカードをPCにアクセスして、Fedora端末で下記のコマンドを実行します:
# cd 3.led_c_sp
# make
# chmod 777 write2sd
# ./write2sd
makeを実行後、210.binファイルは生成します、./write2sd実行し、.binはsdカードセクタ1にプログラミングします。
第四節 実験現象
SDカードをMini210Sに挿入して、SDカードを起動・通電します。次の現象を確認できます:
LEDは正常に点滅し、スタックを設定した後、C関数は呼び出せますので、プログラミングの速度は大幅にあがります。
次の章では、icacheの起動、終了をご紹介します。
第VI章 icache制御
第一節 cacheとは
プログラムのアクセス権限により、メインメモリとCPU汎用レジスタに高速のクラス、小さいメモリ容量が設定され、実行中の一部のコマンドやデータをメインメモリからレジスタに保存して、一時間内でCPUを直接使用でき、プログラムの計算速度が大幅に上がります。このメインメモリとCPUの間に高速小容量メモリは高速 cacheと呼ばれる。
よく使うcache (キャッシュ)は icacheとdcache二種類があります。ICacheの使用はより簡単です、システム通電後、ICacheの内容は無効で、機能はオフになって、゛CP15コプロセッサ゛の゛レジスタ1゛の゛ビット[1] ゛に1を書き込むとICacheを起動できます、0を書き込むと終了できます。icache がオフ状態では、CPUは毎回メインメモリをフェッチします、性能は非常に低いです。Icacheがいつでも起動できるため、早いほどICacheを起動する方は効率的です。
ICacheに類似したで、通電時ではdcacheの内容は無効でdcache機能がオフになって、゛CP15コプロセッサ゛の゛レジスタ1゛の゛ビット[2] ゛に1を書き込むとdcacheを起動できます、0を書き込むと終了できます。dcacheは、MMUが起動後実行できるしかないので、初期化設備にとっては実行する必要がありませんので、ここではMMUとdcacheは実行しません。
第二節 プログラム説明
完全なコードは、ディレクトリ4.led_c_icacheご参照ください。3.led_c_spと比べったら、start.S 中にicacheの制御コードを追加しただけです。
コードは次の通りです:
#ifdef CONFIG_SYS_ICACHE_OFF
bic r0、 r0、 #0x00001000 @ clear bit 12 (I) I-cache
#else
orr r0、 r0、 #0x00001000 @ set bit 12 (I) I-cache
#endif
mcr p15、 0、 r0、 c1、 c0、 0
ICache CONFIG_SYS_ICACHE_OFFは定義されていない場合は、 icacheはONにします、でないとOFFにします。。コプロセッサのコマンドについてはs3c2410チープマニュアルをご参照ください。
第三節 コードコンパイルとプログラミングの実行
SDカードをPCにアクセスして、Fedora端末で下記のコマンドを実行します:
# cd 4.led_c_icache
# make
# chmod 777 write2sd
# ./write2sd
makeを実行後、210.binファイルは生成します、./write2sd実行し、.binはsdカードセクタ1にプログラミングします 。
第四節 実験現象
SDカードをMini210Sに挿入して、SDカードを起動・通電します。次の現象を確認できます:
LEDが正常に点滅するが、点滅周期は非常に長い、それはコード中の遅延時間は10倍に設定されるためです。IROM硬化コードは既に icacheを起動しましたので、 icache機能をテストしたい場合は、マクロCONFIG_SYS_ICACHE_OFFを定義することによってicacheをシャットダウンする。試験によって、 icache OFF状態ではLEDが一回点滅するには20秒が必要で、 icache ON状態ではLEDが一回点滅するには10秒です。
---続く