今回から、いよいよ本訓練のメインの一つといえるSH4マイコンに対するCプログラミングになります。
■開発ターゲット環境について
開発のターゲットは以下の通り。
CPU:SH7750R
CPUボード:MS104-SH4
さらにこのCPUボードにIO基板のEMB-DIO104が接続されていて、さらにこの基板上にLED、LCD、液晶ディスプレイが接続されてます。
訓練では、このLED、LCD、液晶ディスプレイに対してC言語のプログラミングで色々表示したり動かすということになります。
■開発環境、デバッグ環境について
プログラミングは先のアセンブリ実習でも使ったHEWを引き続き使います。
またデバッグではPALMiCEというハードウェアを経由してCSIDEというデバッグ統合環境を使います。
HEW上でコンパイルした実行ファイルやデバッグ用ファイルをPALMiCE経由で開発ターゲットに転送し、CPU上で実行させます。その際、CSIDE上でステップ実行したり、メモリ内容を確認するなどしてデバッグすることになります。
上記は組込みプログラミングのデバッグでは定番のもののようです。個人で買うには値段が高い代物のようなので、訓練で無料で使えるのはありがたいところです。
■LED点灯は簡単
今のところLEDの点灯方法まで進んでいます。正直LEDの点灯自体は簡単です。
LED点灯/消灯に対応するレジスタが存在しており、8個のLEDの点灯/消灯がそれぞれ1ビットで1バイトのレジスタに対応します。
そのレジスタも特定のメモリアドレスにマップされているので、
#define LED (*(volatile unsigned char *)0x18000003)
のようにプログラムしやすいようにキャストして、
LED |= (1<<2)
のように該当LEDに対応するビットを立てればLEDが点灯し、
LED &= ( ~1<<3)
のようにビットをクリアすればLED消灯です。
■開発環境の準備が難しい
むしろ、上記のようにC言語でプログラミングできる開発環境をどのように作っているかというところが難しいです。今のところ
- HEWでマイコンで動作する実行ファイルをコンパイルするための必要な設定
- マイコン上でプログラミングを正常動作させるための前処理の実装方式
- MMU経由でLED等のアドレスマップを行う考え方
等がよくわかってません。
もちろん設定手順は説明してもらっていて、プログラム自体はマイコン上で動作し、デバッグもできるようになっているのですが、なぜそのような設定をすればいいのかがまだ理解できてません。設定内容についても徐々に理解を深めていきたいと思ってます。