RX65N/RX72N emWin+AppWizardでJapanese Language Displayが出来るか調べてみることにしました(Is it available?)

こんにちは。NoMaYです。

最近、以下のスレッドに関わったのですが、日本語が表示出来ないなんて?と、気になったので調べてみることにしました。もっとも、何から手を付けて良いのかさっぱり分からない状態からのスタートですので、ぼちぼちと、、、

AppWizardでの日本語テキスト表示について
japan.renesasrulz.com/cafe_rene/f/002-2095199602/8313/appwizard

まず、ソッコーで思い浮かんでアクセスしてみる情報から。

SEGGER emWinグラフィックスライブラリ (RX MCUs)
www.renesas.com/jp/ja/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx-partners/segger-emwin-graphics-library-rx-mcus

RX Ecosystem Partner Solution
emWin - PROFESSIONAL EMBEDDED GRAPHICS LIBRARY
SEGGER( 日本国内販売代理店:株式会社エンビテック)
www.renesas.com/jp/ja/document/prb/segger-emwin-graphics-library-solution-brief-rx-mcus

emWin
Graphic Library with Graphical User Interface
User Guide & Reference Manual
Document: UM03001
Software version: V5.50 ⇒ ドキュメントのバージョンが古過ぎますね(下記のFITモジュールのとおり既にV6.22ですね)
Document revision: 0
Date: June 11, 2019
www.renesas.com/jp/ja/document/mat/emwin-graphic-library-gui-user-guide-reference-manual

RXファミリ emWin v6.22モジュール Firmware Integration Technology
www.renesas.com/jp/ja/document/apn/rx-family-emwin-v622-module-using-firmware-integration-technology
 

Parents
  • こんにちは。NoMaYです。

    RX65N Envision KitのLCDにemWin(+AppWizard)でGUIを作成する場合のRAM予約サイズですが、ドキュメント記載の以下のものだけで既に628KBになってしまっています。そこにemWinの固定RAM分や他のドライバーソフトの固定RAM分やスタック領域などが加わると、そもそも640KBに収まりません、、、(実は先日のzipファイルではemWinのヒープを80KBの設定にして何とかリンク出来るようにしていたのです、、、)

    ・ LCDフレームバッファ 256KB × 2面
    ・ BSPのヒープ 16KB
    ・ emWinのヒープ 100KB

    以下、ドキュメントの画面コピーです。




     

  • NoMaYさん

    こんにちは、シェルティです。

    最近コード(現場)から少々距離が出来てしまい、かふぇルネでの活動も少なくなってしまいましたが、気になるポイントなどは適宜関係者に情報展開して改善を促したりなどを進めております。

    さて本件ですが、RX65N Envision Kit、RX72N Envision Kitの工場出荷時ファームの開発を担当した身として気になりますね。RX65Nの場合はご指摘通りで、フレームバッファ2面持ちにすると256KB×2でRAMがほとんどフレームバッファで埋め尽くされるので、多少画面がちらつくのを我慢して2面持ちを諦めてデモを作っていました。RX72Nの場合はRAMが1MBあるので、フレームバッファ512KB、FreeRTOS256KB、emWin用に80KBと割り当ててもまだ少し余裕がある感じでした。逆にいうと、480x272クラスの解像度の液晶を使うとRX72Nクラスが限界といった感じでしょうかね。RX65Nだともうひと周り解像度が低い液晶が良さそうです。

    AppWizardについてもSegger社から紹介をうけたとき「これは使いやすそうだな」と思い、最近RX72N Envision Kitのファームウェアの更新を以下のように始めました。AppWizardベースでいい感じに画面が組めてます。前世代のGUI Builderではボタンを押したときの挙動を自分で全部コードを書く必要がありましたが、AppWizardだと簡単なシーケンス(ボタンを押したらWindow1を消して2を表示する、500ms毎にテキストを点滅させる、など)がAppWizard上の設定でできるようになりました。

    https://github.com/renesas/rx72n-envision-kit/tree/apply_202203.00

    あと、TracealyzerというRTOSアナライザのライブラリを上記URLのコミットに入れてあり、タスクの詳細な状態遷移が分かるようになりました。システムコール1個ずつがどういう関係でどこから呼び出され、CPUはIDLEタスク以外にどのくらい遷移しているのか(=CPU負荷率)、ヒープがどのくらい確保・解放されるかがリアルタイムで可視化されます。

    最終的には、TSIPというRX72N内蔵の暗号器を使って、Amazon Web ServicesとのTLS暗号通信を加速することを考えています。現在チューニング中ですが70Mbpsくらい出るのを確認しました。加速せずS/Wのみの実装だと8Mbpsくらいです。TLS1.3もできるようになりました。

    Amazon Web ServicesにIoTデバイスを接続する際は、IoTデバイス内の不揮発性メモリにデバイス秘密鍵(人間がAWS利用する際のパスワードに相当)とデバイス証明書(人間がAWS利用するIDに相当)を書き込んでおく必要があり、これらを暗号化して安全にRX72N内のデータフラッシュに保持しておく(ソフトがバグっててデータフラッシュがダンプされても暗号化されているので平気)こともうまくRX72N Envision Kitのデモで実現しようと考えています。

    またいろいろ情報交換させてください。上記URLは一通り完成したらマスターブランチにプルリクエストしてマージしてwikiに解説を載せます。

    マスターブランチ:https://github.com/renesas/rx72n-envision-kit/tree/master

    wiki:https://github.com/renesas/rx72n-envision-kit/wiki/%E3%83%9B%E3%83%BC%E3%83%A0

    以上です

  • シェルティさん、こんにちは。NoMaYです。#何だか、お久しぶりな感じ、だったりしますね。

    もし御存知でしたら教えて頂ければ、と思ったのですが、QE for Displayでフレームバッファの1面化は可能でしょうか?どのドキュメントのどのページに書かれているのか分かるというのでもよいです。以下の画面コピーの印象では、GUI上で1面化は何か出来そうに無さそうな予感がしていたのですが、事前に何かのヘッダファイル定義を書き換えておくと出来るという操作手順があったりするというのでもよいです。もちろん、QE for Displayでは出来ません、というのもありです。

    以下、QE for Displayの画面コピーです。


     

  • NoMaYさん

    シェルティです、こんにちは。

    直接こうしてお話させていただくのは何か月か間があいたと思いますね。お久しぶりです。でも毎日書き込みは確認させていただいています。

    フレームバッファのマルチ化、シングル化の設定は現状のQE for DisplayではGUI上できないですね。次の版でできるように仕込んでいると聞いています。QE for Displayから呼び出されるAppWizard(Segger製のツール)もGUI上でマルチ化のチェックボックスが有効になります。AppWizard単体は以下最新ダウンロード(2022/08/30時点でV130_V626d)ではマルチ化のチェックボックスが有効になっていました。

    https://www.segger.com/downloads/emwin

    現状はどうやってマルチ化を有効にするかというと、AppWizardが出力する以下コード以下行の値の初期値を 1 にするとフレームバッファがマルチになります。さらにNoMaYさんの示していただいた図ですと、buffer1 を0x00800000、buffer2 をRX65Nの場合、0x00000000(ユーザ用空き領域は0x00840000からの128KB)、RX72Nの場合、0x00840000(ユーザ用空き領域は0x00000000からの512KB)にするのがおすすめです。

    https://github.com/renesas/rx72n-envision-kit/blob/fd615606a7a1c09af44b9b3953003f14519770ed/projects/renesas/rx72n_envision_kit/e2studio/aws_demos/aw/Source/Generated/APPWConf.c#L179

    このへん、ボードによって推奨値が変わるので、BDFをうまく活用して推奨値が自動的にQE for Displayや各FITモジュールに評価済の推奨値を引き渡すことができるよう改善していこうと考えています。

    以上です

Reply
  • NoMaYさん

    シェルティです、こんにちは。

    直接こうしてお話させていただくのは何か月か間があいたと思いますね。お久しぶりです。でも毎日書き込みは確認させていただいています。

    フレームバッファのマルチ化、シングル化の設定は現状のQE for DisplayではGUI上できないですね。次の版でできるように仕込んでいると聞いています。QE for Displayから呼び出されるAppWizard(Segger製のツール)もGUI上でマルチ化のチェックボックスが有効になります。AppWizard単体は以下最新ダウンロード(2022/08/30時点でV130_V626d)ではマルチ化のチェックボックスが有効になっていました。

    https://www.segger.com/downloads/emwin

    現状はどうやってマルチ化を有効にするかというと、AppWizardが出力する以下コード以下行の値の初期値を 1 にするとフレームバッファがマルチになります。さらにNoMaYさんの示していただいた図ですと、buffer1 を0x00800000、buffer2 をRX65Nの場合、0x00000000(ユーザ用空き領域は0x00840000からの128KB)、RX72Nの場合、0x00840000(ユーザ用空き領域は0x00000000からの512KB)にするのがおすすめです。

    https://github.com/renesas/rx72n-envision-kit/blob/fd615606a7a1c09af44b9b3953003f14519770ed/projects/renesas/rx72n_envision_kit/e2studio/aws_demos/aw/Source/Generated/APPWConf.c#L179

    このへん、ボードによって推奨値が変わるので、BDFをうまく活用して推奨値が自動的にQE for Displayや各FITモジュールに評価済の推奨値を引き渡すことができるよう改善していこうと考えています。

    以上です

Children
  • NoMaYさん

    シェルティです、こんにちは。

    すみません、読み間違えました。フレームバッファをマルチ化する方法ではなく、シングル化をする方法をご質問いただいていますね。上記説明でマルチ化をしない設定にする(2022/08/30時点のQE for Displayだとバッファアドレスを2個指定してもシングルになります)とシングル化できます。

    カギは上記URLで示したAPPWConf.cの179行目の変数が入力となる231行目のAPPW_MULTIBUF_Enable(_MultibufEnable);ですね。

    以上です

  • シェルティさん、こんにちは。NoMaYです。

    リプライありがとうございました。ナント、私が先日投稿したzipファイルのソースでは、既に以下のコードになっていてフレームバッファを1面しか使わない設定になっていました。(GCC版もCC-RX版も同一。) たまたま残っていたバックアップソースを過去に遡ると、先日の私の場合は、まずGCC向けにプロジェクトを作成してQE for Displayで設定していきましたので、QE for DisplayのGCC向けモードのバグか何かを踏んでしまったのかもしれません。(そしてそれを丸っとCC-RX向けプロジェクトにコピペしてCC-RX向けのプロジェクトを調整していったので両方とも変になっていたのかも知れません。) 後日、CC-RX向けのプロジェクトから作成してみる手順を試してみようかと思います。

    /*********************************************************************
    *
    *       Multibuffering
    */
    static U8 _MultibufEnable = 0;

     
    [追記]

    あっ、ひょっとして、「2022/08/30時点のQE for Displayだとバッファアドレスを2個指定してもシングルになります」というのは、AppWizard側で結局上記ソースとなって1面しか使われないです、という意味でしたでしょうか、、、

  • NoMaYさん

    シェルティです、こんにちは。

    ご推察の通りと思います。[追記]のご質問の回答もYesです。現状のQE for Displayだとシェルティの手元でも手動で_MultibufEnable の値を1にしないとマルチバッファになりませんでした。

    NoMaYさんの作られたファイルの中身までは確認しておらずお手間おかけしました。シェルティもNoMaYさんと同じロジックで「マルチバッファの扱いがなんか変だ」とたどり着き、QE for Displayの開発チーム、emWinの移植チーム、GLCDC/DRW2Dのドライバ開発チームに聞いてみたところ、マルチバッファの扱いは次版QE for Displayで修正すると聞きました。もう一度開発チームにこのスレッドを読んでもらってシェルティが何か変なことを言ってないか確認してもらおうと思います。

    以上です

  • NoMaYさん

    シェルティです、こんにちは。

    聞いてみたところ、Segger本社にお願いしてAppWizard側でマルチバッファの有効・無効のチェックボックスを追加してもらうとのことでした。QE for Displayも次版でこれに対応します。

    と書いていて思いだしましたが、数日前に上記を聞いたあとに、AppWizard最新版(V130_626d)をダウンロードしてみて、以下のようにマルチバッファののチェックボックスが増えているのを自分で確認したのでした。

    以上です

  • シェルティさん、こんにちは。NoMaYです。

    リプライありがとうございました。そういうことだったのですね。その他に、私の気の付いたこととして以下があります。次版(次々版以降?)の改善項目案のリストに加えて頂ければと思います。

    ● GCCの場合にリンカスクリプトでLCDフレームバッファの領域を避けるようにリンカスクリプトを変更する処置が無かったです

    CC-RXの場合には、rlinkのオプション設定でLCDフレームバッファの領域を避けるように.cprojectが変更されました。それに対し、GCCの場合には、リンカスクリプトが変更されていませんでした。(別スレッドにてリューキィさんから受け取ったリンカスクリプトで変更されてなかったので私の記憶違いでは無いと思うのです。)

    GCCの場合にそうであるならば、IARコンパイラの場合にも、そうかも知れません。もっとも、EWRX向けのQEというものはそもそも存在していない気がしますので、あくまでe2 studio上にてICCRX+QE for Displayを使う場合の話ですけれども。(余力が無かったのでICCRXは試さなかったです。)

  • NoMaYさん

    シェルティです、こんにちは。

    ありがとうございます。いただいた点を改善項目案のリストに追加しておきます。

    個人的にもGCC環境をもっとしっかり整備したいと感じております。私自身学生時分に純正コンパイラが購入できず、GCC環境で自作のモニタプログラムを作ってH8マイコンでなにか作って遊んでました。その後H8マイコンの会社(ルネサス)に入り込み、少しGCC環境を公式に広げる(IDEからGCCを選べるようにしたりとか)ことができたようにも思いますが、もっと裾野を広げるために引き続きGCC環境を推してまいります。一方でお客様の量産製品開発では純正コンパイラやIARコンパイラを使うユーザも多くいますので、分け隔てなく整備していければ、と思っています。

    以上です