メモ。
WSL2はUSBが認識できないので、VirtualBoxにUbuntu20.04をセットアップした。 セルフコンパイラのインストール。とりあえずバージョンとか意識せずにインストールしてみた。
apt install binutils make gcc curl
クロスコンパイラのインストール。
curl -LO http://kozos.jp/books/makeos/binutils-2.21.tar.gz tar zxvf binutils-2.21.tar.gz cd binutils-2.21 ./configure --target=h8300-elf --disable-nls --disable-werrorz make sudo make install
gcc いろいろパッチ充てる必要があった。
curl -LO http://kozos.jp/books/makeos/gcc-3.4.6.tar.gz tar zxvf gcc-3.4.6.tar.gz cd gcc-3.4.6 curl -LO http://kozos.jp/books/makeos/patch-gcc-3.4.6-gcc4.txt patch < patch-gcc-3.4.6-gcc4.txt curl -LO http://kozos.jp/books/makeos/patch-gcc-3.4.6-x64-h8300.txt patch < patch-gcc-3.4.6-x64-h8300.txt ./configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --enable-languages=c --disable-werror make sudo make install
4章終了時点でのブートローダののMakefileは以下。XMODEMはkz_xmodemを利用した。
PREFIX = /usr/local ARCH = h8300-elf BINDIR = $(PREFIX)/bin ADDNAME = $(ARCH)- AR = $(BINDIR)/$(ADDNAME)ar AS = $(BINDIR)/$(ADDNAME)as CC = $(BINDIR)/$(ADDNAME)gcc LD = $(BINDIR)/$(ADDNAME)ld NM = $(BINDIR)/$(ADDNAME)nm OBJCOPY = $(BINDIR)/$(ADDNAME)objcopy OBJDUMP = $(BINDIR)/$(ADDNAME)objdump RANLIB = $(BINDIR)/$(ADDNAME)ranlib STRIP = $(BINDIR)/$(ADDNAME)strip H8WRITE = ../../tools/h8write/kz_h8write H8WRITE_SERDEV = /dev/ttyUSB0 OBJS = vector.o startup.o main.o \ lib.o serial.o xmodem.o TARGET = kzload CFLAGS = -Wall -mh -nostdinc -nostdlib -fno-builtin \ -I. -g -Os -DKZLOAD LFLAGS = -static -T ld.scr -L. .SUFFIXES: .c .o .SUFFIXES: .s .o all: $(TARGET) $(TARGET): $(OBJS) $(CC) $(OBJS) -o $(TARGET) $(CFLAGS) $(LFLAGS) cp $(TARGET) $(TARGET).elf $(STRIP) $(TARGET) .c.o: $< $(CC) -c $(CFLAGS) $< .s.o: $< $(CC) -c $(CFLAGS) $< $(TARGET).mot: $(TARGET) $(OBJCOPY) -O srec $(TARGET) $(TARGET).mot image: $(TARGET).mot write: $(TARGET).mot sudo chmod o+rw $(H8WRITE_SERDEV) $(H8WRITE) -3069 -f20 $(TARGET).mot $(H8WRITE_SERDEV) clean: rm -f $(OBJS) $(TARGET) $(TARGET).elf $(TARGET).mot monitor: sudo chmod o+rw $(H8WRITE_SERDEV) cu -l $(H8WRITE_SERDEV) load: sudo chmod o+rw $(H8WRITE_SERDEV) ../../tools/kz_xmodem/kz_xmodem defines.h /dev/ttyUSB0