なんとかなるさね

マイコンをネタにブログを始めてみました


スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/--   blog-entry-   category: スポンサー広告

go page top

RL78マイコン基板(RL78/G13)|自作フラッシュ書き込み回路で書き込みコマンドの簡易確認(rl78flash) 

以前のエントリでGadgetRenesasのArduino互換IDEであるIDE4GRに同梱されているrl78flash.exeという
プログラムが単線UART接続によるフラッシュ書き込みをサポートしているらしいことに気付いたのですが、
更に調べてみると、このプログラムはMaksim Salauという人がGitHubでソースコードをMIT Licenseで公開
しているものらしいということに気付きました。ソースコードが公開されているのであればトラブルに遭遇
しても何とかなるだろうという気がしましたので、ソースコードをダウンロードして、前のエントリで試した
Renesas Flash Programmer V2.05.03と以前のエントリの自作回路(といっても、FT232RLと74HC125と
抵抗2本の簡単なものです)の組み合わせの場合と同じく、シグネチャ情報の取得コマンドを試してみました。

Tool to program RL78 MCUs via serial bootloader - GitHub

master
https://github.com/msalau/rl78flash/

releases
https://github.com/msalau/rl78flash/releases/

v0.5.1
https://github.com/msalau/rl78flash/tree/v0.5.1/

試してみたところ、やはりソースコードの変更が必要になってしまいましたが、無事に動いてくれました。



ソースコードの変更箇所は以下の通りです。

ファイル: rl78.c
変更内容: 赤字の箇所を追加

static void rl78_set_reset(port_handle_t fd, int mode, int value)
{
    if (MODE_RESET_RTS == (mode & MODE_RESET))
    {
        // test for compatibility with Renesas Flash Programmer (by MON-80)
        //serial_set_rts(fd, value);
        serial_set_rts(fd, value ? 0 : 1);
    }
    else
    {
        serial_set_dtr(fd, value);
    }
}


今回、実行ファイル名をオリジナルと区別出来るようにしたかったので、Makefile中の実行ファイル名も変更
しました。(RL78/G10用とそれ以外のRL78用で実行ファイル名が異なっていましたので、両方とも変更して
おくことにしました。) また、残念ながら、私のPCにインストールしてあるMinGWは以前のエントリで別の
オープンソースプログラムをビルドするのに使った旧版のままになっており、コンパイラの実行ファイル名が
異なるものになっていましたので、その箇所も変更してあります。

ファイル: Makefile
内容(4つの空白文字は実際にはタブ文字です): 赤字の箇所を追加/削除

CFLAGS = -O2 -Wall -Wextra
LDFLAGS = -s
LIBS = -lpthread

OBJS = src/rl78.o src/main.o src/srec.o src/wait_kbhit.o
OBJS_G10 = src/rl78g10.o src/main_g10.o src/srec.o src/crc16_ccit.o src/wait_kbhit.o
OBJS_LINUX = src/terminal.o src/serial.o
OBJS_WIN32 = src/terminal_win32.o src/serial_win32.o

all: rl78flash rl78g10flash

rl78flash: $(OBJS) $(OBJS_LINUX)
    $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)

rl78flash-0.5.1-mon80-20160525.exe: $(OBJS) $(OBJS_WIN32)
    $(CC) $(LDFLAGS) -o $@ $^

rl78g10flash: $(OBJS_G10) $(OBJS_LINUX)
    $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)

rl78g10flash-0.5.1-mon80-20160525.exe: $(OBJS_G10) $(OBJS_WIN32)
    $(CC) $(LDFLAGS) -o $@ $^

clean:
    -rm -f rl78flash rl78flash-0.5.1-mon80-20160525.exe rl78g10flash rl78g10flash-0.5.1-mon80-20160525.exe src/*.o src/*~ *~

cygwin:
    make CC=i686-pc-cygwin-gcc

win32:
    make CC=i686-pc-mingw32-gcc rl78flash-0.5.1-mon80-20160525.exe rl78g10flash-0.5.1-mon80-20160525.exe

install: rl78flash rl78g10flash
    mkdir -p $(DESTDIR)/usr/bin
    install -m 755 -t $(DESTDIR)/usr/bin $<




追記 : メモ

この際ですので、RL78/G10に関する部分も変更しました。

ファイル: rl78g10.c
変更内容: 赤字の箇所を追加

static void rl78g10_set_reset(port_handle_t fd, int mode, int value)
{
    if (MODE_RESET_RTS == mode)
    {
        // test for compatibility with Renesas Flash Programmer (by MON-80)
        //serial_set_rts(fd, value);
        serial_set_rts(fd, value ? 0 : 1);
    }
    else
    {
        serial_set_dtr(fd, value);
    }
}


ファイル: main_g10.c
変更内容: 赤字の箇所を追加

int main(int argc, char *argv[])
{
    char verify = 0;
    char write = 0;
    char reset_after = 0;
    char wait = 0;
    char mode = 0;
    char terminal = 0;
    int terminal_baud = 0;

    char *endp;
    int opt;
    while ((opt = getopt(argc, argv, "acvwrdm:t:h?")) != -1)
    {
        switch (opt)
        {
        case 'a':
            write = 1;
            verify = 1;
            reset_after = 1;
            break;
        case 'm':
            mode = strtol(optarg, &endp, 10) - 1;
            // bug fix: "<=" is incorrect, "<" is correct. (by MON-80)
            //if (optarg == endp
            //    || MODE_MAX_VALUE <= mode)
            if (optarg == endp
                || MODE_MAX_VALUE < mode)
            {
                printf("%s", usage);
                return 0;
            }
            break;
途中省略
}


追記 : メモ

もともと以下の回路を想定して作られていたプログラムを今回やっつけ作業的に変更したのですが、後日、
書き込み回路モードを増やす形(-m 5を追加する形)にソースコードを書き直したいと思います。そうした
後に、バイナリをどこかに置きたいと思います。

Add feature to generate Reset signal by RTS or DTR pin
https://github.com/msalau/rl78flash/blob/master/hw/rl78s-hw.png

追記 : メモ

Maksim Salauさんは78K0マイコンのUSBシリアル変換器のLinuxドライバも公開されていらっしゃいます。

Linux driver for uPD78F0730 USB-to-Serial converter
https://github.com/msalau/upd78f0730-driver/

たまたまですが、RFP V3.01.00で78K0マイコンのUSBシリアル変換器による書き込み機能への対応が行わ
れていました。

フラッシュ書き込みソフトウェアツール Renesas Flash Programmer V3 ご使用上のお願い
http://tool-support.renesas.com/jpn/toolnews/160301/tn8.htm

【リビジョンアップ】Renesas Flash Programmer V3.01.00
http://tool-support.renesas.com/jpn/toolnews/160516/r20ts0024jj0100_rfptn.pdf

追記 : 雑感

この78K0マイコンのUSBシリアル変換器でRXマイコンのシリアルデバッガを動かすことは可能だろうか?
(以前から手を出しかけているトラ技ARMライタのUSBシリアル変換機能を使ったRL78マイコン書き込み器や
RXマイコンシリアルデバッガのトピックスを放置したままでこんなことを考えるのは気が引けますが、、、)

他方、Maksim SalauさんのLinuxドライバのREADMEを読むと、この78K0マイコンのUSBシリアル変換器と
rl78flashやrl78g10flashを使ってRL78マイコンに書き込むことは可能みたいです。(たぶん、Linuxに限らず
Windowsでも、、、)

関連記事

2016/05/25   blog-entry-766   category: RL78 /* 16bit,8bit CISC */

go page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。