こんにちは。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-mcusRX Ecosystem Partner SolutionemWin - PROFESSIONAL EMBEDDED GRAPHICS LIBRARYSEGGER( 日本国内販売代理店:株式会社エンビテック)www.renesas.com/jp/ja/document/prb/segger-emwin-graphics-library-solution-brief-rx-mcusemWinGraphic Library with Graphical User InterfaceUser Guide & Reference ManualDocument: UM03001Software version: V5.50 ⇒ ドキュメントのバージョンが古過ぎますね(下記のFITモジュールのとおり既にV6.22ですね)Document revision: 0Date: June 11, 2019www.renesas.com/jp/ja/document/mat/emwin-graphic-library-gui-user-guide-reference-manualRXファミリ emWin v6.22モジュール Firmware Integration Technologywww.renesas.com/jp/ja/document/apn/rx-family-emwin-v622-module-using-firmware-integration-technology
こんにちは。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の画面コピーです。