なんとかなるさね

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


スポンサーサイト 

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

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

go page top

Arduino IDE|GadgetRenesas基板用IDE4GR 1.6.5(のようなもの)を作るには? (11) 

GadgetRenesas基板用IDE4GR 1.6.5/1.6.7(のようなもの)を作ってみることを考え始めたのですが、いつもの
ようにちょっと好奇心から、以前のエントリで行ったような動作確認していないソースの修正は行わず、元々の
ソースをそのまま使用することで動作する可能性が高い筈のソースコード構成を作ってみました。(なお、この
『一歳年上の姉が居りまして』の説明書によるとIDE4GR 0.4.0のソースを修正して作成されているようでした。
ちなみに、RL78 GCCのバージョンに関してはIDE4GR 0.4.0と0.6.1で同じでした異なります。また、pfdl.aの
バイナリはIDE4GR 0.4.0と0.6.1で同じでした。) (追記 : 後日のエントリで今はまだウェブ上に過去のIDE4GRが
残っていることに気付きましたので、確実に動く状態にしたい時には過去のIDE4GRを使うのが良さそうです。)
(すみません。RL78 GCCのバージョンに関しての間違いは我ながら酷いと思います。何を勘違いしたのだろう。)

・coreライブラリやcontributedライブラリのソースは以下で上書きされるものを除きIDE4GR 0.4.0のものを使用
・contributedライブラリのサンプルプログラム(元々SNSheildのみですが)のソースはIDE4GR 0.4.0のものを使用
・blueboad-rl78対応に修正されたソースに関しては『一歳年上の姉が居りまして』のものを上書き
・プリビルドcoreライブラリは使用しない
・platform.txtは2つ前のエントリのものを使用
・boards.txtは『一歳年上の姉が居りまして』のものを上記のplatform.txtに合わせるように修正
・platform.local.txtを作成して『一歳年上の姉が居りまして』のplatform.txtの内容を反映




ファイル: スケッチブックフォルダ\hardware\blueboard-rl78\rl78\boards.txt
内容:

bb-rl78.name=BlueBoard-RL78
bb-rl78.upload.tool=rl78flash_bb
bb-rl78.upload.protocol=rl78
bb-rl78.upload.maximum_size=64000
bb-rl78.upload.maximum_data_size=4000
bb-rl78.upload.speed=115200
bb-rl78.bootloader.tool=
bb-rl78.bootloader.low_fuses=
bb-rl78.bootloader.high_fuses=
bb-rl78.bootloader.extended_fuses=
bb-rl78.bootloader.unlock_bits=
bb-rl78.bootloader.lock_bits=
bb-rl78.bootloader.file=
bb-rl78.build.mcu=rl78
bb-rl78.build.f_cpu=32000000L
bb-rl78.build.board=BlueBoard-RL78
bb-rl78.build.core=arduino
bb-rl78.build.ldscript=linker_scripts/rl78_R5F100LEAFA.ld
bb-rl78.build.variant=blueboard-rl78
bb-rl78.build.variant_core_lib=
bb-rl78.build.variant_system_libs="{build.system.path}/proprietary/libs/pfdl.a"

ファイル: スケッチブックフォルダ\hardware\blueboard-rl78\rl78\platform.local.txt
内容:

name=Renesas RL78 (Hitotsu ueno ane)
version=0.1.0

tools.rl78flash_bb.cmd=rl78flash_bb
tools.rl78flash_bb.cmd.windows=bb-rl78.bat
tools.rl78flash_bb.path={runtime.platform.path}/variants/blueboard-rl78
tools.rl78flash_bb.upload.params.verbose=
tools.rl78flash_bb.upload.params.quiet=
tools.rl78flash_bb.upload.pattern="{path}/{cmd}" "{build.path}"

このようにした場合のArduino IDE 1.6.5/1.6.7の画面は以下のようになりました。








追記 : メモ

スケッチブックフォルダ\hardware\blueboard-rl78以下をzipファイルに固めようとすると以下のファイルが
含まれてしまうのですが、何とか含まれないようにしたいところではあります。(rl78\system\proprietaryへ
分離することを試して来たのですが、まだちょっとそのやり方では今ひとつだったようです。)

rl78\system\proprietary\libs\pfdl.a
rl78\libraries\EEPROM\utility\pfdl.h
rl78\libraries\EEPROM\utility\pfdl_types.h

追記 : メモ

暫くしてから、pfdlライブラリが使用するRAM領域として確保されている(セクションを割り当てないよう除外
されている)アドレスが広過ぎることに気付きましたので、リンカスクリプトを以下のように修正しました。

ファイル: スケッチブックフォルダ\hardware\blueboard-rl78\rl78\variants\blueboard-rl78\linker_scripts\rl78_R5F100LEAFA.ld
修正内容(該当箇所): 赤字の箇所を変更

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 0xFF300 : {
  .data 0xFEF88 : {

    . = ALIGN(2);
    PROVIDE (__datastart = .);

    KEEP (*(.jcr))
    *(.data.rel.ro.local) *(.data.rel.ro*)
    *(.dynamic)

    *(.data D .data.* .gnu.linkonce.d.*)
    ; KEEP(*reset_program*.o(*.data))
    KEEP (*(.gnu.linkonce.d.*personality*))
    SORT(CONSTRUCTORS)
    *(.data1)
    *(.got.plt) *(.got)

    /* We want the small data sections together, so single-instruction offsets
       can access them all, and initialized data all before uninitialized, so
       we can shorten the on-disk segment size.  */
    . = ALIGN(2);
    *(.sdata .sdata.* .gnu.linkonce.s.* D_2 D_1)

    . = ALIGN(2);
    _edata = .;
    PROVIDE (edata = .);
    PROVIDE (__dataend = .);
  } > RAM AT> ROM

  /* Note that crt0 assumes this is a multiple of two; all the
     start/stop symbols are also assumed word-aligned.  */
  PROVIDE(__romdatastart = LOADADDR(.data));
  PROVIDE (__romdatacopysize = SIZEOF(.data));

  .bss : {
    . = ALIGN(2);
    PROVIDE (__bssstart = .);
    *(.dynbss)
    *(.sbss .sbss.*)
    *(.bss B B_2 B_1 .bss.* .gnu.linkonce.b.*)
    ; KEEP(*reset_program*.o(.bss))
    . = ALIGN(2);
    *(COMMON)
    . = ALIGN(2);
    PROVIDE (__bssend = .);
    _end = .;
    PROVIDE (end = .);
  } > RAM
  PROVIDE (__bsssize = SIZEOF(.bss));

  .stack 0xFFE00 (NOLOAD)  : AT (0xFFE00)
  {
    PROVIDE (__stack = .);
    *(.stack)
  }

  途中省略
}


なお、pfdlライブラリが使用するRAM領域については、以下の資料を参照しました。

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

関連記事

2016/03/15   blog-entry-746   category: Arduino Lib & CrossGCC

go page top

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