EEPROMエミュレーション・ライブラリ Pack02の最大データ数が255の訳がわかりません。

初めまして、RL78/G13を使い始めて2年生、ぴろと申します。自己紹介の代わりに使ってきたMPUを書き連ねると、H8/300,H8/500シリーズあたりからルネサス系(当時日立)を使いはじめ、ルネサスが主力を変える度にこちらも追従して来ました。R8Cシリーズに変え、現在はRL78/G13とRX621等に変遷してきました。

では本題です。対象となるRL78はR5F100LFAFAです。データフラッシュは8kbyte(8192byte)で。

RL78用に提供されている「EEPROMエミュレーション・ライブラリ Pack02」ではデフォルトで最大ユーザデータ長を255byteとしています。

それに管理用としてEELブロックヘッダが8byte、さらに格納データにはSoRとEoRフィールドがあり、合計で255+8+1+1 = 265byteとなり、

8192/265=30.9....と端数が出てしまいます。

30ブロックには出来ない、29ブロックとすると余り444byteとなり永遠に使われない無駄な領域が生まれることになるのでは?という疑問を持った次第です。

ライブラリでEELブロックヘッダやSoR,EoRで10byteつかうなら256-10=246byteを最大ユーザデータ長としたほうが256byteバウンダリーで使えて

8192/256=32ブロックピッタリ!となると思うのです。なぜ端数が出るような使い方をしているのでしょうか?私が何か大事な領域を見逃しているのでしょうか?

ご教示よろしくお願いします。

Parents
  • 訂正です。
    30ブロックはとれますね。 265×30 = 7950byteで、 8192 - 7950 = 242byte の端数です。
    よろしくお願いします。
  • チョコです。
    単に8ビットで管理するために最大が255になっただけだと思いますよ。
    実際に使うときに必要に応じて値を決めてしまうだけです。
    確実なところは仕様を決めたルネサスに問い合わせてみてください。
  • ぴろです。どのReplyボタンを押していいのか判らないのでチョコさんのReplyで。
    わいわいさん、チョコさん返事ありがとうございます。
    わいわいさん>1ブロックのデータ数を246バイトにすれば使い切ることができますぜ。
    やはりそうですよね。ここは246byteで行きたいと思います。
    もう2つ、R01US0068JJ0101 Rev.1.01をよんでも理解出来ないのが
    10ページの「図 2-7 有効なEELブロックの例」です。EELが255byteまでしかサポートしていないのにこの図は1kbyteの大きさ。しかもユーザが使えるデータがどこからどこまでか判らない。まさか最後の03FBから03FFまでのってことは無いよね?と。
    4ページのEEL Pack01とEEL (Pack02)の仕様の差異について記載された表の記述が難解です。
    一行目の「ユーザ・データ長」が1~255までとあるのに5行目の「ユーザ・データの推奨サイズ 注1」の記述では
    1014/2 バイトとあり、507byteが推奨???
    推奨しているのにも拘わらずEELのユーザ・データ長が255byte?
    注1の記述を読むと「ブロックの1/2以内~」とあり、結局8kbyte有っても使える範囲は4kbyteってこと??等々
    今回は500byte程度しか使わないので問題はないのですが、皆さんよくこのマニュアルでプログラム作れるなぁ???と感心してます。
  • > 10ページの「図 2-7 有効なEELブロックの例」です。EELが255byteまでしかサポートしていないのにこの図は1kbyteの大きさ。

    1ページ目からこのマニュアルでの用語が解説されていますが、それを参照されると疑問も解決されると思います。
Reply
  • > 10ページの「図 2-7 有効なEELブロックの例」です。EELが255byteまでしかサポートしていないのにこの図は1kbyteの大きさ。

    1ページ目からこのマニュアルでの用語が解説されていますが、それを参照されると疑問も解決されると思います。
Children
No Data