H8(その8)
ステップ2を読み進めているけど、
p65のプログラム
#define H8_3069F_SCI0 ((volatile struct h8_3069f_sci *)0xffffb0
で、0xffffb0の前の型が書いてある理由がわからない。
それと、
static struct{
volatile struct h8_3069f_sci *sci;
} regs[SERIAL_SCI_NUM]={.........}
構造体の配列を使っているけど、メンバが1個しかないのに、
なぜ構造体の配列にしているのかわからない。
追記
0xffffb0の下りは、以下のリンクの真ん中あたり、
http://www.eleki-jack.com/h8/2009/09/h8-21h8c.html
したがって,ここでただ単に「0xffe9」と書いただけではこれは単なる整数値であって,コンパイラはこの数値がメモリのアドレスを意味しているとは 思ってくれません.それを教えてやるために整数「0xffe9」を「unsigned char 型へのポインタ」としてキャスト変換し,
(unsigned char *)0xffe9
と書きます.するとコンパイラは「この0xffe9 というのは,なにかunsigned char 型のデータが格納されたアドレスなんだな」と認識してくれるようになります.
ポインタの基本中の基本だった。
H8(その7)
結局再インストールした。
日本語の崩れはずいぶん治った。
すぐにやり方忘れてしまうので、メモ。
1. セルフコンパイラをインストール apt-get binutils , gcc ,make
2. クロスコンパイラをインストール binutils-2.19.1.tar.bz2 (2.28だと出来なかった)
./configure オプションは--disable-werror
3. gccインストール gcc.3.4.6tar.gz gcc/collect2.cを修正。
オプションは、--disable-nlsを--disable-werrorにする。
64bitの場合は、以下のサイトの3.を見る。h8300.cを修正qiita.com
4. シリアルポートのパーミッションを変更(必要ないかもしれないけど...) chmod 666 /dev/ttyS3
(シリアル変換器のドライバは、最新じゃないドライバを使う(windows10))
5. kz_h8write, minicomなどを入れる