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です。

    更にソースを絞り込もうとして、下の画面コピーのように以下のソースに対して個別コンパイルオプション設定で-Osを設定したところ誤動作するようになりました。

    ● src/smc_gen/r_drw2d_rx/src/rx/dave_base_rx.c

    ソースやコンパイルリストファイルと睨めっこして気付いたのは、以下の3つの関数でvolatileが抜けているのでは?という点でした。試しに赤文字箇所にてvolatileを補ってやると動作するようになりました、、、

    /***********************************************************************
     * Function Name: d1_mstp_set
     * Description  : Write the MSTP register.
     * Arguments    : enable
     *                    Enable or disable the register bit.
     *                mstp_char
     *                    MSTP register offset position.
     *                mstp_num
     *                    The register bit position.
     * Return Value : none
     **********************************************************************/
    static void d1_mstp_set(bool enable, int mstp_char, int mstp_num)
    {
        volatile unsigned long *p_mstp_addr;

        /* The address offset from the address of the base register is cast to match the size of the register. */
        p_mstp_addr = ((volatile unsigned long *)MSTP_0_BASE) + mstp_char;

        if (true == enable)
        {
            *p_mstp_addr = ((*p_mstp_addr) & (~(1 << mstp_num)));
        }
        else
        {
            *p_mstp_addr = ((*p_mstp_addr) | (1 << mstp_num));
        }
    } /* End of function d1_mstp_set() */

    /***********************************************************************
     * Function Name: d1_registerprotectenable
     * Description  : Enable protect bit 1 of PRCR register.
     * Arguments    : none
     * Return Value : none
     **********************************************************************/
    static void d1_registerprotectenable()
    {
        volatile unsigned short *p_prcr_addr;

        /* The address of the base register is cast to match the size of the register. */
        p_prcr_addr = (volatile unsigned short *)PRCR_0_BASE;
        *p_prcr_addr = (((*p_prcr_addr) | PRCR_KEY) & (~PRCR_PRC1));
    } /* End of function d1_registerprotectenable() */

    /***********************************************************************
     * Function Name: d1_registerprotectdisable
     * Description  : Disable protect bit 1 of PRCR register.
     * Arguments    : none
     * Return Value : none
     **********************************************************************/
    static void d1_registerprotectdisable()
    {
        volatile unsigned short *p_prcr_addr;

        /* The address of the base register is cast to match the size of the register. */
        p_prcr_addr = (volatile unsigned short *)PRCR_0_BASE;
        *p_prcr_addr = (((*p_prcr_addr) | PRCR_KEY) | PRCR_PRC1);
    } /* End of function d1_registerprotectdisable() */

     
    以下、e2 studioの画面コピーです。


     

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

    更にソースを絞り込もうとして、下の画面コピーのように以下のソースに対して個別コンパイルオプション設定で-Osを設定したところ誤動作するようになりました。

    ● src/smc_gen/r_drw2d_rx/src/rx/dave_base_rx.c

    ソースやコンパイルリストファイルと睨めっこして気付いたのは、以下の3つの関数でvolatileが抜けているのでは?という点でした。試しに赤文字箇所にてvolatileを補ってやると動作するようになりました、、、

    /***********************************************************************
     * Function Name: d1_mstp_set
     * Description  : Write the MSTP register.
     * Arguments    : enable
     *                    Enable or disable the register bit.
     *                mstp_char
     *                    MSTP register offset position.
     *                mstp_num
     *                    The register bit position.
     * Return Value : none
     **********************************************************************/
    static void d1_mstp_set(bool enable, int mstp_char, int mstp_num)
    {
        volatile unsigned long *p_mstp_addr;

        /* The address offset from the address of the base register is cast to match the size of the register. */
        p_mstp_addr = ((volatile unsigned long *)MSTP_0_BASE) + mstp_char;

        if (true == enable)
        {
            *p_mstp_addr = ((*p_mstp_addr) & (~(1 << mstp_num)));
        }
        else
        {
            *p_mstp_addr = ((*p_mstp_addr) | (1 << mstp_num));
        }
    } /* End of function d1_mstp_set() */

    /***********************************************************************
     * Function Name: d1_registerprotectenable
     * Description  : Enable protect bit 1 of PRCR register.
     * Arguments    : none
     * Return Value : none
     **********************************************************************/
    static void d1_registerprotectenable()
    {
        volatile unsigned short *p_prcr_addr;

        /* The address of the base register is cast to match the size of the register. */
        p_prcr_addr = (volatile unsigned short *)PRCR_0_BASE;
        *p_prcr_addr = (((*p_prcr_addr) | PRCR_KEY) & (~PRCR_PRC1));
    } /* End of function d1_registerprotectenable() */

    /***********************************************************************
     * Function Name: d1_registerprotectdisable
     * Description  : Disable protect bit 1 of PRCR register.
     * Arguments    : none
     * Return Value : none
     **********************************************************************/
    static void d1_registerprotectdisable()
    {
        volatile unsigned short *p_prcr_addr;

        /* The address of the base register is cast to match the size of the register. */
        p_prcr_addr = (volatile unsigned short *)PRCR_0_BASE;
        *p_prcr_addr = (((*p_prcr_addr) | PRCR_KEY) | PRCR_PRC1);
    } /* End of function d1_registerprotectdisable() */

     
    以下、e2 studioの画面コピーです。


     

Children
No Data