なんとかなるさね

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


スポンサーサイト 

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

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

go page top

RL78マイコン基板(RL78/G13)|IDE4GR 0.7.0に秋月のR5F100LGAFB搭載変換モジュール対応を追加 

(追記 : R5F100LEAFB(ROM/RAM/EEPROM=64K/4K/4K)とR5F100LCAFB(ROM/RAM/EEPROM=32K/2K/4K)で
ミラー領域の下端アドレスが未変更でしたので(未変更でも実害は無いと思いますが)修正しました。2016/09/04)


GadgetRenesasのArduino互換IDEのIDE4GR 0.7.0のボード情報定義ファイルのplatform.txtとboards.txtを
変更し、1つ前のエントリで改造したrl78flash(改)を呼び出すようにして3つ前のエントリで半田付けを行った
秋月電子さん販売のRL78/G13 64pin R5F100LGAFB搭載変換モジュールへ書き込めるにようにしてみました。
(この際ですので、秋月電子さん販売の他のRL78/G13 64pinマイコンのボード情報定義も追加してみました。)
更に今回、ボード情報定義ファイルの他に、書き込み終了とともに書き込んだプログラムが実行されるように、
自作のフラッシュ書き込み回路で使用しているFT232RLのWindowsドライバのCOMポート設定も変更しました。
(なお、この設定にしておくとPCとFT232RLをUSBケーブルで繋いだ直後からもプログラムが実行されました。
ちなみに、今回試してみたスケッチですが、本家Arduino IDEに同梱されているBlinkサンプルスケッチです。)







R5F100LGAFB搭載変換モジュールに搭載されているマイコンは、COTTON基板に搭載されているマイコンとは
RL78/G13 64pinでもROM/RAMサイズ違いのものですので、それに合ったリンカスクリプトが必要になります。
(他の秋月電子さん販売のRL78/G13 64pinマイコンも同様です。) そこで、COTTON基板のリンカスクリプトを
以下のように流用して作成しました。(なお、細かいことを言えば、元々のCOTTON基板のリンカスクリプトは
KURUMI基板のリンカスクリプトと同じものが使用されていますが、実際には搭載されているマイコンが異なり
ますので、COTTON基板のリンカスクリプトのファイル名がちょっとチグハグな感じになってしまっています。)

流用元ファイル: ide4gr-0.7.0\hardware\arduino\rl78_2\variants\gr_cotton\linker_scripts\rl78_R5F100GJAFB.ld
流用元の内容(該当部分): 赤字の箇所が元の内容

/* This is for an RL78/G13(R5F100GJAFB), 256k flash, 20k ram, 8k data flash */
MEMORY {
    VEC (r)   : ORIGIN = 0x00000, LENGTH = 0x00002
    IVEC (r)  : ORIGIN = 0x00004, LENGTH = 0x0007c
    OPT (r)   : ORIGIN = 0x000c0, LENGTH = 0x00004
    SECURITY_ID (r) : ORIGIN = 0x000c4, LENGTH = 0x0000a
    ROM (r)   : ORIGIN = 0x000d8, LENGTH = 0x3ff28
    RAM (w)   : ORIGIN = 0xfaf00, LENGTH = 0x04fe0
    STACK (w) : ORIGIN = 0xffee0, LENGTH = 0x00002
}

SECTIONS
{
  途中省略

  .data 0xfaf90 : { /* used for FDL(EEPROM) from 0xfaf00 to 0xfaf87*/
  途中省略
  } > RAM AT> ROM

  途中省略
}


変更後ファイル: ide4gr-0.7.0\hardware\arduino\rl78_2\variants\gr_cotton\linker_scripts\rl78_R5F100LGAFB.ld
流用元からの変更(該当部分): 赤字の箇所を変更

/* This is for an RL78/G13(R5F100LGAFB), 128k flash, 12k ram, 8k data flash */
MEMORY {
    VEC (r)   : ORIGIN = 0x00000, LENGTH = 0x00002
    IVEC (r)  : ORIGIN = 0x00004, LENGTH = 0x0007c
    OPT (r)   : ORIGIN = 0x000c0, LENGTH = 0x00004
    SECURITY_ID (r) : ORIGIN = 0x000c4, LENGTH = 0x0000a
    ROM (r)   : ORIGIN = 0x000d8, LENGTH = 0x1ff28
    RAM (w)   : ORIGIN = 0xfcf00, LENGTH = 0x02fe0
    STACK (w) : ORIGIN = 0xffee0, LENGTH = 0x00002
}

SECTIONS
{
  途中省略

  .data 0xfcf00 : {
  途中省略
  } > RAM AT> ROM

  途中省略
}


ボード情報定義ファイルのplatform.txtとboards.txtの変更内容は以下の通りです。

ファイル: ide4gr-0.7.0\hardware\arduino\rl78_2\platform.txt
変更内容: 赤字の箇所を追加

# SAM3 Uploader tools
# -------------------

tools.rl78flash.cmd=rl78flash
tools.rl78flash.cmd.windows=rl78flash.exe
tools.rl78flash.path={runtime.ide.path}/hardware/tools/rl78

tools.rl78flash.upload.params.verbose=
tools.rl78flash.upload.params.quiet=
tools.rl78flash.upload.pattern="{path}/{cmd}" -m 2 -vivewr {serial.port.file} "{build.path}/{build.project_name}.mot"

#tools.rl78flash_ex.upload.cmd=rl78flash
#tools.rl78flash_ex.upload.cmd.windows=rl78flash.exe
tools.rl78flash_ex.path={runtime.ide.path}/hardware/tools/rl78

tools.rl78flash_ex.upload.params.verbose=
tools.rl78flash_ex.upload.params.quiet=
tools.rl78flash_ex.upload.pattern="{path}/{upload.cmd}" {upload.options} {serial.port.file} "{build.path}/{build.project_name}.mot"


ファイル: ide4gr-0.7.0\hardware\arduino\rl78_2\boards.txt
変更内容: 赤字の箇所を追加

# See: http://code.google.com/p/arduino/wiki/Platforms

menu.cpu=Processor

# GR-COTTON
# http://akizukidenshi.com/catalog/g/gK-10421/
# http://akizukidenshi.com/catalog/g/gK-09867/
# http://akizukidenshi.com/download/ds/akizuki/gr-cotton.pdf
# http://akizukidenshi.com/download/ds/akizuki/gr-cotton_schematic_20160209.pdf


cotton.name=GR-COTTON
cotton.upload.tool=rl78flash
cotton.upload.protocol=rl78
cotton.upload.maximum_size=256000
cotton.upload.maximum_data_size=20000
cotton.upload.speed=115200

cotton.bootloader.tool=
cotton.bootloader.low_fuses=
cotton.bootloader.high_fuses=
cotton.bootloader.extended_fuses=
cotton.bootloader.unlock_bits=
cotton.bootloader.lock_bits=
cotton.bootloader.file=

cotton.build.mcu=rl78
cotton.build.f_cpu=32000000L
cotton.build.board=RL78_COTTON
cotton.build.core=arduino
cotton.build.ldscript=linker_scripts/rl78_R5F100GJAFB.ld
cotton.build.variant=gr_cotton
cotton.build.extra_flags=-DGRCOTTON

# R5F100LJAFB(RL78/G13 64pin 256K/20K/8K)
# http://akizukidenshi.com/catalog/g/gI-06179/

r5f100ljafb.name=R5F100LJAFB (RL78/G13 64pin 256K/20K/8K)
r5f100ljafb.upload.tool=rl78flash_ex
r5f100ljafb.upload.protocol=rl78
r5f100ljafb.upload.maximum_size=256000
r5f100ljafb.upload.maximum_data_size=20000
r5f100ljafb.upload.speed=115200
r5f100ljafb.upload.cmd.windows=rl78flash-0.5.1-mon80-20160525.exe
r5f100ljafb.upload.options=-m 3 -p 5 -ewr

r5f100ljafb.build.mcu=rl78
r5f100ljafb.build.f_cpu=32000000L
r5f100ljafb.build.board=RL78_R5F100LJAFB
r5f100ljafb.build.core=arduino
r5f100ljafb.build.ldscript=linker_scripts/rl78_R5F100GJAFB.ld
r5f100ljafb.build.variant=gr_cotton
r5f100ljafb.build.extra_flags=-DGRCOTTON

# R5F100LGAFB(RL78/G13 64pin 128K/12K/8K)
# http://akizukidenshi.com/catalog/g/gI-06162/
# http://akizukidenshi.com/catalog/g/gM-08844/

r5f100lgafb.name=R5F100LGAFB (RL78/G13 64pin 128K/12K/8K)
r5f100lgafb.upload.tool=rl78flash_ex
r5f100lgafb.upload.protocol=rl78
r5f100lgafb.upload.maximum_size=128000
r5f100lgafb.upload.maximum_data_size=12000
r5f100lgafb.upload.speed=115200
r5f100lgafb.upload.cmd.windows=rl78flash-0.5.1-mon80-20160525.exe
r5f100lgafb.upload.options=-m 3 -p 5 -ewr

r5f100lgafb.build.mcu=rl78
r5f100lgafb.build.f_cpu=32000000L
r5f100lgafb.build.board=RL78_R5F100LGAFB
r5f100lgafb.build.core=arduino
r5f100lgafb.build.ldscript=linker_scripts/rl78_R5F100LGAFB.ld
r5f100lgafb.build.variant=gr_cotton
r5f100lgafb.build.extra_flags=-DGRCOTTON

# R5F100LEAFB(RL78/G13 64pin 64K/4K/4K)
# http://akizukidenshi.com/catalog/g/gI-06146/

r5f100leafb.name=R5F100LEAFB (RL78/G13 64pin 64K/4K/4K)
r5f100leafb.upload.tool=rl78flash_ex
r5f100leafb.upload.protocol=rl78
r5f100leafb.upload.maximum_size=64000
r5f100leafb.upload.maximum_data_size=4000
r5f100leafb.upload.speed=115200
r5f100leafb.upload.cmd.windows=rl78flash-0.5.1-mon80-20160525.exe
r5f100leafb.upload.options=-m 3 -p 5 -ewr

r5f100leafb.build.mcu=rl78
r5f100leafb.build.f_cpu=32000000L
r5f100leafb.build.board=RL78_R5F100LEAFB
r5f100leafb.build.core=arduino
r5f100leafb.build.ldscript=linker_scripts/rl78_R5F100LEAFB.ld
r5f100leafb.build.variant=gr_cotton
r5f100leafb.build.extra_flags=-DGRCOTTON

# R5F100LCAFB(RL78/G13 64pin 32K/2K/4K)
# http://akizukidenshi.com/catalog/g/gI-06145/

r5f100lcafb.name=R5F100LCAFB (RL78/G13 64pin 32K/2K/4K)
r5f100lcafb.upload.tool=rl78flash_ex
r5f100lcafb.upload.protocol=rl78
r5f100lcafb.upload.maximum_size=32000
r5f100lcafb.upload.maximum_data_size=2000
r5f100lcafb.upload.speed=115200
r5f100lcafb.upload.cmd.windows=rl78flash-0.5.1-mon80-20160525.exe
r5f100lcafb.upload.options=-m 3 -p 5 -ewr

r5f100lcafb.build.mcu=rl78
r5f100lcafb.build.f_cpu=32000000L
r5f100lcafb.build.board=RL78_R5F100LCAFB
r5f100lcafb.build.core=arduino
r5f100lcafb.build.ldscript=linker_scripts/rl78_R5F100LCAFB.ld
r5f100lcafb.build.variant=gr_cotton
r5f100lcafb.build.extra_flags=-DGRCOTTON


追記 : メモ

その他のリンカスクリプトファイルは以下の通りです。なお、R5F100LJAFBはCOTTON基板に搭載されている
マイコンと同じものですので、COTTON基板のリンカスクリプトファイルと同じものを使用しました。

変更後ファイル: ide4gr-0.7.0\hardware\arduino\rl78_2\variants\gr_cotton\linker_scripts\rl78_R5F100LEAFB.ld
流用元からの変更(該当部分): 赤字の箇所を変更

/* This is for an RL78/G13(R5F100LEAFB), 64k flash, 4k ram, 4k data flash */
MEMORY {
    VEC (r)   : ORIGIN = 0x00000, LENGTH = 0x00002
    IVEC (r)  : ORIGIN = 0x00004, LENGTH = 0x0007c
    OPT (r)   : ORIGIN = 0x000c0, LENGTH = 0x00004
    SECURITY_ID (r) : ORIGIN = 0x000c4, LENGTH = 0x0000a
    ROM (r)   : ORIGIN = 0x000d8, LENGTH = 0x0ff28
    RAM (w)   : ORIGIN = 0xfef00, LENGTH = 0x00fe0
    STACK (w) : ORIGIN = 0xffee0, LENGTH = 0x00002
}

SECTIONS
{
  途中省略

  .data 0xfef90 : { /* used for FDL(EEPROM) from 0xfef00 to 0xfef87*/
  途中省略
  } > RAM AT> ROM

  .rodata (MAX(__romdatastart + __romdatacopysize, 0x2000)) : { ← 2016/09/04変更追加
  途中省略
  } > ROM

  途中省略
}


変更後ファイル: ide4gr-0.7.0\hardware\arduino\rl78_2\variants\gr_cotton\linker_scripts\rl78_R5F100LCAFB.ld
流用元からの変更(該当部分): 赤字の箇所を変更

/* This is for an RL78/G13(R5F100LCAFB), 32k flash, 2k ram, 4k data flash */
MEMORY {
    VEC (r)   : ORIGIN = 0x00000, LENGTH = 0x00002
    IVEC (r)  : ORIGIN = 0x00004, LENGTH = 0x0007c
    OPT (r)   : ORIGIN = 0x000c0, LENGTH = 0x00004
    SECURITY_ID (r) : ORIGIN = 0x000c4, LENGTH = 0x0000a
    ROM (r)   : ORIGIN = 0x000d8, LENGTH = 0x07f28
    RAM (w)   : ORIGIN = 0xff700, LENGTH = 0x007e0
    STACK (w) : ORIGIN = 0xffee0, LENGTH = 0x00002
}

SECTIONS
{
  途中省略

  .data 0xff700 : {
  途中省略
  } > RAM AT> ROM

  .rodata (MAX(__romdatastart + __romdatacopysize, 0x2000)) : { ← 2016/09/04変更追加
  途中省略
  } > ROM

  途中省略
}


なお、EEPROMライブラリ(というか、それが使用しているPFDLライブラリ)が使用するRAM領域については、
以下の資料を参照しました。

RL78ファミリ セルフプログラミングライブラリ セルフRAMリスト
http://documentation.renesas.com/doc/products/tool/doc/r20ut2943jj0300_rl78.pdf

追記 : メモ

ちなみに、EEPROMライブラリ(というか、それが使用しているPFDLライブラリ)を呼び出すタイミングでは、
リンカスクリプトに明記してあるRAM領域を避ける必要があるのはもちろんのことですが、デバイスのUMに
よると、明記してあるRAM領域より広い範囲および0xffe20~0xffedfがスタック領域として使用出来ないこと
になっています。ですが、パッと見、MEMORY{}の中のSTACK領域の(便宜上の?)定義はそれに反している
ような記述になっていて、細かいことなのですが、どうしてもちょっと気になってしまうところです。(当然、
RAM領域の定義の方もちょっと気になってしまっていますが。)

関連記事

2016/05/27   blog-entry-767   category: RL78 /* 16bit,8bit CISC */

go page top

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