Example programs for GR-MANGO

Dependencies:   opencv-lib mbed-http

This is a collection of sample programs that work on RZ/A2M boards. You can try Mbed OS for RZ/A2M with GR-MANGO board.

Overview

Sample program files are located under the sample_programs folder. You can try each sample program by changing the following macro in sample_select.h.

insample_select.h

#define SAMPLE_PROGRAM_NO  0
No.Program fileDescription
0sample_00_led_rtc_analogin.cppDigitalOut, InterruptIn, RTC, Timer and AnalogIn
1sample_01_flash_write.cppFlashAPI sample
2sample_02_ssif_loop_back.cppSSIF loop back sample
4sample_04_ssif_wav_playback.cppSSIF wav playback sample (use USB memory or SD card)
7sample_07_usb_func_serial.cppUSBSerial (CDC) sample
8sample_08_usb_func_mouse.cppUSBMouse sample
9sample_09_usb_func_keyboard.cppUSBKeyboard sample
10sample_10_usb_func_midi.cppUSBMIDI sample
11sample_11_usb_func_audio_1.cppUSBAudio sample
12sample_12_usb_func_audio_2.cppUSBAudio and SSIF sample
13sample_13_ether_http.cppEther HTTP sample
14sample_14_ether_https.cppEther HTTPS sample
16sample_16_usb_func_msd_1.cppUSBMSD and FlashAPI sample
17sample_17_usb_func_msd_2.cppUSBMSD and FlashAPI sample advanced version
18sample_18_mipi_drp_lcd.cppMIPI, DRP and LCD sample
19sample_19_mipi_drp_diplayapp.cppMIPI, DRP and USBSerial (CDC) sample (use "DisplayApp")
20sample_20_drp_dynamic_loading.cppDRP Dynamic Loading Sample
21sample_21_deep_standby_alarm.cppDeep standby and RTC alarm sample
22sample_22_hdmi_disp_ssif.cppHDMI output and SSIF wav playback Sample
23sample_23_mipi_hdmi.cppHDMI output and MIPI Sample
24sample_24_facedetection.cppHDMI output and face detection using OpenCV
25sample_25_hdmi_mouse.cppHDMI output and Mouse Sample

Notice

sample_24_facedetection.cpp only can be compiled with GNU Compiler Collection.

About sample_24_facedetection.cpp, this is a demonstration that can detect the face of a person without a mask. It will surround the face of a person without a mask with a red rectangle and sound alarm at the same time. To use OpenCV for face recognition, you need to prepare the followings:
・USB drive or SD card
・ Raspberry Pi Camera Module V2
・ HDMI monitor

Perform the following steps to complete face recognition sample.
1. Copy the lbpcascade_frontalface.xml to the root folder of USB drive or SD card and save it.
2. Copy the alarm.wav to the root folder of USB drive or SD card and save it.
3. Set "camera-type" value to "CAMERA_RASPBERRY_PI_832X480" in mbed_app.json

About custom boot loaders

This sample uses custom bootloader revision 5, and you can drag & drop the "xxxx_application.bin" file to write the program. Please see here for the detail.

How to write program

When using DAPLink, please use xxxx.bin as following.

  1. Connect the micro USB type B terminal to the PC using a USB cable.
  2. You can find the MBED directory.
  3. Drag & drop xxxx.bin to the MBED directory.
  4. When writing is completed, press the reset button.

When using custom bootloader, please use xxxx_application.bin as following.

  1. Connect the USB type C terminal to the PC using a USB cable.
  2. Hold down USB0 and press the reset button.
  3. You can find the GR-MANG directory.
  4. Drag & drop xxxx_application.bin to the GR-MANGO directory.

When writing is completed, press the reset button.

Attention!

For the first time only, you need to write a custom bootloader using DAPLink.

Terminal setting

If you want to confirm the serial communication the terminal soft on your PC, please specify the below values. You can change the baud rate by platform.stio-baud-rate of mbed_app.json.

Baud rate115,200
Data8bit
Paritynone
Stop1bit
Flow controlnone

Files at this revision

API Documentation at this revision

Comitter:
RyoheiHagimoto@os.mbed.com
Date:
Tue Sep 15 10:28:22 2020 +0900
Parent:
0:19a6b5115f80
Child:
2:6dc529d1f0e8
Commit message:
Copied from https://github.com/renesas-rz/RZ_A2M_Mbed_samples.

Changed in this revision

README.md Show annotated file Show diff for this revision Revisions of this file
bootloader_d_n_d.lib Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_debug_using_e2studio_1.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_debug_using_e2studio_10.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_debug_using_e2studio_2.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_debug_using_e2studio_3.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_debug_using_e2studio_4.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_debug_using_e2studio_5.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_debug_using_e2studio_6.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_debug_using_e2studio_7.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_debug_using_e2studio_8.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_debug_using_e2studio_9.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_use_mbed_stusio_1.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_use_mbed_stusio_2.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_use_mbed_stusio_3.png Show annotated file Show diff for this revision Revisions of this file
docs/img/how_to_use_mbed_stusio_4.png Show annotated file Show diff for this revision Revisions of this file
mbed-gr-libs.lib Show annotated file Show diff for this revision Revisions of this file
mbed-http.lib Show annotated file Show diff for this revision Revisions of this file
mbed-os.lib Show annotated file Show diff for this revision Revisions of this file
mbed_app.json Show annotated file Show diff for this revision Revisions of this file
mbedtls_entropy_config.h Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_00_led_rtc_analogin.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_01_flash_write.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_02_ssif_loop_back.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_03_spdif_loop_back.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_04_ssif_wav_playback.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_05_spdif_wav_playback.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_06_lcd_touch_jcu.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_07_usb_func_serial.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_08_usb_func_mouse.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_09_usb_func_keyboard.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_10_usb_func_midi.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_11_usb_func_audio_1.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_12_usb_func_audio_2.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_13_ether_http.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_14_ether_https.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_15_ceu_lcd_pwm.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_16_usb_func_msd_1.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_17_usb_func_msd_2.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_18_mipi_drp_lcd.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_19_mipi_drp_diplayapp.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_20_drp_dynamic_loading.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_21_deep_standby_alarm.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_22_hdmi_disp_ssif.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_23_mipi_hdmi.cpp Show annotated file Show diff for this revision Revisions of this file
sample_programs/sample_select.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,125 @@
+# RZ_A2M_Mbed_samples
+This is a collection of sample programs that work on RZ/A2M boards.  
+You can try Mbed OS for RZ/A2M with the following board.
+- GR-MANGO
+
+
+## Overview
+Sample program files are located under the ``sample_programs`` folder.  
+You can try each sample program by changing the following macro in``sample_select.h``.  
+```cpp
+#define SAMPLE_PROGRAM_NO  0
+```
+
+| No.| Program file                                                                          | Description                                                  |
+|:---|:--------------------------------------------------------------------------------------|:-------------------------------------------------------------|
+|  0 | [sample_00_led_rtc_analogin.cpp](sample_programs/sample_00_led_rtc_analogin.cpp)      | DigitalOut, InterruptIn, RTC, Timer and AnalogI              |
+|  1 | [sample_01_flash_write.cpp](sample_programs/sample_01_flash_write.cpp)                | FlashAPI sample                                              |
+|  2 | [sample_02_ssif_loop_back.cpp](sample_programs/sample_02_ssif_loop_back.cpp)          | SSIF loop back sample                                        |
+|  4 | [sample_04_ssif_wav_playback.cpp](sample_programs/sample_04_ssif_wav_playback.cpp)    | SSIF wav playback sample (use USB memory or SD card)         |
+|  7 | [sample_07_usb_func_serial.cpp](sample_programs/sample_07_usb_func_serial.cpp)        | USBSerial (CDC) sample [\*1]                                 |
+|  8 | [sample_08_usb_func_mouse.cpp](sample_programs/sample_08_usb_func_mouse.cpp)          | USBMouse sample [\*1]                                        |
+|  9 | [sample_09_usb_func_keyboard.cpp](sample_programs/sample_09_usb_func_keyboard.cpp)    | USBKeyboard sample [\*1]                                     |
+| 10 | [sample_10_usb_func_midi.cpp](sample_programs/sample_10_usb_func_midi.cpp)            | USBMIDI sample [\*1]                                         |
+| 11 | [sample_11_usb_func_audio_1.cpp](sample_programs/sample_11_usb_func_audio_1.cpp)      | USBAudio sample [\*1]                                        |
+| 12 | [sample_12_usb_func_audio_2.cpp](sample_programs/sample_12_usb_func_audio_2.cpp)      | USBAudio and SSIF sample [\*1]                               |
+| 13 | [sample_13_ether_http.cpp](sample_programs/sample_13_ether_http.cpp)                  | Ether HTTP sample                                            |
+| 14 | [sample_14_ether_https.cpp](sample_programs/sample_14_ether_https.cpp)                | Ether HTTPS sample                                           |
+| 16 | [sample_16_usb_func_msd_1.cpp](sample_programs/sample_16_usb_func_msd_1.cpp)          | USBMSD and FlashAPI sample [\*1]                             |
+| 17 | [sample_17_usb_func_msd_2.cpp](sample_programs/sample_17_usb_func_msd_2.cpp)          | USBMSD and FlashAPI sample advanced version [\*1]            |
+| 18 | [sample_18_mipi_drp_lcd.cpp](sample_programs/sample_18_mipi_drp_lcd.cpp)              | MIPI, DRP and LCD sample                                     |
+| 19 | [sample_19_mipi_drp_diplayapp.cpp](sample_programs/sample_19_mipi_drp_diplayapp.cpp)  | MIPI, DRP and USBSerial (CDC) sample (use "DisplayApp") [\*1]|
+| 20 | [sample_20_drp_dynamic_loading.cpp](sample_programs/sample_20_drp_dynamic_loading.cpp)| DRP Dynamic Loading Sample                                   |
+| 21 | [sample_21_deep_standby_alarm.cpp](sample_programs/sample_21_deep_standby_alarm.cpp)  | Deep standby and RTC alarm sample                            |
+| 22 | [sample_22_hdmi_disp_ssif.cpp](sample_programs/sample_22_hdmi_disp_ssif.cpp.cpp)      | HDMI output and SSIF wav playback Sample                     |
+| 23 | [sample_23_mipi_hdmi.cpp](sample_programs/sample_23_mipi_hdmi.cpp)                    | HDMI output and MIPI Sample                                  |
+
+
+## About custom boot loaders
+This sample uses ``custom bootloader`` ``revision 5``, and you can drag & drop the "xxxx_application.bin" file to write the program. Please see [here](https://github.com/d-kato/bootloader_d_n_d) for the detail.  
+### How to write program
+When using ``DAPLink``, please use ``xxxx.bin`` as following.  
+1. Connect the ``micro USB type B terminal`` to the PC using a USB cable.
+2. You can find the ``MBED`` directory.
+3. Drag & drop ``xxxx.bin`` to the ``MBED`` directory.  
+4. When writing is completed, press the reset button.  
+
+When using ``custom bootloader``, please use ``xxxx_application.bin`` as following.  
+1. Connect the ``USB type C terminal`` to the PC using a USB cable.  
+2. Hold down ``USB0`` and press the reset button.  
+3. You can find the ``GR-MANG`` directory.  
+4. Drag & drop ``xxxx_application.bin`` to the ``GR-MANGO`` directory.  
+5. When writing is completed, press the reset button.  
+
+**Attention!**  
+For the first time only, you need to write a ``custom bootloader`` using ``DAPLink``.  
+
+## Development environment
+You can use ``Mbed CLI (CUI)`` or ``Mbed Studio (GUI)``. Choose your preferred development environment.  
+
+
+### When using Mbed CLI (CUI)
+You can use ``GCC``, ``Arm Compiler 5``, ``Arm Compiler 6`` and ``IAR``. A license is required to use a compiler other than the ``GCC`` compiler.  
+Information of Mbed CLI that includes install&quick start guide is as the following.  
+[Installation](https://github.com/ARMmbed/mbed-cli/blob/1.8.3/README.md#installation)  
+
+How to import and build this sample  
+```
+$ cd <projects directory>
+$ mbed import https://github.com/d-kato/RZ_A2M_Mbed_samples
+$ cd RZ_A2M_Mbed_samples
+$ mbed compile -m <TARGET> -t GCC_ARM --profile debug
+```
+
+Set the following to ``<TARGET>``.  
+- GR-MANGO beta version : ``GR_MANGO``  
+
+See [About custom boot loaders](#about-custom-boot-loaders) for program writing.  
+See [How to debug using e2studio](#how-to-debug-using-e2studio) for debugging.  
+
+
+### When using Mbed Studio (GUI)
+You can use ``Arm Compiler 6`` included with Mbed Studio for free.  
+Information of Mbed Studio that includes install&quick start guide is as the following.  
+[Installation](https://os.mbed.com/studio/)  
+
+How to import and build this sample  
+![](docs/img/how_to_use_mbed_stusio_1.png)  
+![](docs/img/how_to_use_mbed_stusio_2.png)  
+![](docs/img/how_to_use_mbed_stusio_3.png)  
+**Attention!** : When using the GR-MANGO, select "Target" box to ``GR_MANGO``. When using the RZ/A2M Evaluation Board Kit with HyperFlash boot, select "Target" box to ``RZ_A2M_EVB_HF``.  
+![](docs/img/how_to_use_mbed_stusio_4.png)  
+
+
+**Attention!**  
+You can not debug using Mbed Studio. Use only for build purposes. Debug the elf file created by Mbed Studio using e2studio.  
+
+See [About custom boot loaders](#about-custom-boot-loaders) for program writing.  
+See [How to debug using e2studio](#how-to-debug-using-e2studio) for debugging.  
+
+
+## Terminal setting
+If you want to confirm the serial communication the terminal soft on your PC, please specify the below values.  
+You can change the baud rate by ``platform.stio-baud-rate`` of ``mbed_app.json``.  
+
+|             |         |
+|:------------|:--------|
+| Baud rate   | 115,200 |
+| Data        | 8bit    |
+| Parity      | none    |
+| Stop        | 1bit    |
+| Flow control| none    |
+
+## How to debug using e2studio
+Download [e2studio 7.4.0 or lator](https://www.renesas.com/eu/en/products/software-tools/tools/ide/e2studio.html), and install. (Debugger : J-Link Base)  
+Connect the J-Link to your board.  
+![](docs/img/how_to_debug_using_e2studio_1.png)  
+![](docs/img/how_to_debug_using_e2studio_2.png)  
+![](docs/img/how_to_debug_using_e2studio_3.png)  
+![](docs/img/how_to_debug_using_e2studio_4.png)  
+![](docs/img/how_to_debug_using_e2studio_5.png)  
+![](docs/img/how_to_debug_using_e2studio_6.png)  
+![](docs/img/how_to_debug_using_e2studio_7.png)  
+![](docs/img/how_to_debug_using_e2studio_8.png)  
+![](docs/img/how_to_debug_using_e2studio_9.png)  
+![](docs/img/how_to_debug_using_e2studio_10.png)  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bootloader_d_n_d.lib	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,1 @@
+https://github.com/d-kato/bootloader_d_n_d/#34f943b0fae6453845c0822c9998239191f3f34b
Binary file docs/img/how_to_debug_using_e2studio_1.png has changed
Binary file docs/img/how_to_debug_using_e2studio_10.png has changed
Binary file docs/img/how_to_debug_using_e2studio_2.png has changed
Binary file docs/img/how_to_debug_using_e2studio_3.png has changed
Binary file docs/img/how_to_debug_using_e2studio_4.png has changed
Binary file docs/img/how_to_debug_using_e2studio_5.png has changed
Binary file docs/img/how_to_debug_using_e2studio_6.png has changed
Binary file docs/img/how_to_debug_using_e2studio_7.png has changed
Binary file docs/img/how_to_debug_using_e2studio_8.png has changed
Binary file docs/img/how_to_debug_using_e2studio_9.png has changed
Binary file docs/img/how_to_use_mbed_stusio_1.png has changed
Binary file docs/img/how_to_use_mbed_stusio_2.png has changed
Binary file docs/img/how_to_use_mbed_stusio_3.png has changed
Binary file docs/img/how_to_use_mbed_stusio_4.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-gr-libs.lib	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,1 @@
+https://github.com/renesas-rz/mbed-gr-libs/#eeff26ec973eb2d53c7fc644e0ebae66db9667aa
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-http.lib	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,1 @@
+https://developer.mbed.org/teams/Renesas/code/mbed-http/#cd1c76cd5a49efcc3536cd0530379b5f2321177e
\ No newline at end of file
--- a/mbed-os.lib	Tue Sep 15 01:20:26 2020 +0000
+++ b/mbed-os.lib	Tue Sep 15 10:28:22 2020 +0900
@@ -1,1 +1,1 @@
-https://github.com/ARMmbed/mbed-os/#0db72d0cf26539016efbe38f80d6f2cb7a3d4414
+https://github.com/ARMmbed/mbed-os/#0db72d0cf26539016efbe38f80d6f2cb7a3d4414
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed_app.json	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,61 @@
+{
+    "config": {
+        "camera":{
+            "help": "0:disable 1:enable",
+            "value": "1"
+        },
+        "camera-type":{
+            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+            "value": null
+        },
+        "lcd":{
+            "help": "0:disable 1:enable",
+            "value": "1"
+        },
+        "lcd-type":{
+            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+            "value": null
+        }
+    },
+    "target_overrides": {
+        "*": {
+            "platform.stdio-baud-rate": 115200,
+            "platform.stdio-convert-newlines": true,
+            "target.components": ["FLASHIAP"],
+            "target.macros_add": ["MBED_CONF_APP_MAIN_STACK_SIZE=8192",
+                                  "MBEDTLS_USER_CONFIG_FILE=\"mbedtls_entropy_config.h\""]
+        },
+        "GR_MANGO": {
+            "target.bootloader_img" : "bootloader_d_n_d/GR_MANGO_boot.bin",
+            "target.app_offset"     : "0x11000",
+            "target.macros_add": ["MBEDTLS_TEST_NULL_ENTROPY",
+                                  "MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES"]
+        },
+        "RZ_A2M_EVB": {
+            "target.bootloader_img" : "bootloader_d_n_d/RZ_A2M_EVB_boot.bin",
+            "target.app_offset"     : "0x40000",
+            "target.macros_add": ["MBEDTLS_TEST_NULL_ENTROPY",
+                                  "MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES"]
+        },
+        "RZ_A2M_EVB_HF": {
+            "target.bootloader_img" : "bootloader_d_n_d/RZ_A2M_EVB_HF_boot.bin",
+            "target.app_offset"     : "0x40000",
+            "target.macros_add": ["MBEDTLS_TEST_NULL_ENTROPY",
+                                  "MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES"]
+        },
+        "RZ_A2M_SBEV": {
+            "target.bootloader_img" : "bootloader_d_n_d/RZ_A2M_SBEV_boot.bin",
+            "target.app_offset"     : "0x40000",
+            "target.macros_add": ["OVERRIDE_CONSOLE_USBSERIAL",
+                                  "MBEDTLS_TEST_NULL_ENTROPY",
+                                  "MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES"]
+        },
+        "SEMB1402": {
+            "target.bootloader_img" : "bootloader_d_n_d/SEMB1402_boot.bin",
+            "target.app_offset"     : "0x40000",
+            "target.macros_add": ["OVERRIDE_CONSOLE_USBSERIAL",
+                                  "MBEDTLS_TEST_NULL_ENTROPY",
+                                  "MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES"]
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbedtls_entropy_config.h	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,9 @@
+
+#ifndef MBEDTLS_ENTROPY_CONFIG_H
+#define MBEDTLS_ENTROPY_CONFIG_H
+
+#ifndef MBEDTLS_SHA1_C
+#define MBEDTLS_SHA1_C
+#endif
+
+#endif // MBEDTLS_ENTROPY_CONFIG_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_00_led_rtc_analogin.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,86 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 0)
+// SAMPLE_PROGRAM_NO  0 : DigitalOut, InterruptIn, RTC, Timer and AnalogIn sample
+//
+// LED1 will blink at 1 second intervals.
+// While pressing USER_BUTTON 0, LED2 lights up.
+// RTC value, Timer value and AD value are displayed every 1 second.
+
+#include "mbed.h"
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+InterruptIn button(USER_BUTTON0);
+#if defined(TARGET_RZ_A2M_EVB)
+AnalogIn adin(P5_6); // In TARGET_RZ_A2M_EVB, SW5 and SW4 are connected to P5_6 as AD switches.
+#else
+AnalogIn adin(A0);   // For other Mbed boards
+#endif
+
+static void button_fall(void) {
+    led2 = !led2;
+}
+
+static void button_rise(void) {
+    led2 = 0;
+}
+
+int main(void) {
+    // InterruptIn
+    button.fall(&button_fall);
+    button.rise(&button_rise);
+
+    // RTC
+    set_time(0);
+
+    // Timer
+    Timer tick_timer;
+    tick_timer.reset();
+    tick_timer.start();
+
+    while (1) {
+        // DigitalOut
+        led1 = !led1;
+
+        // RTC
+        time_t seconds = time(NULL); // UTC
+        struct tm *t = localtime(&seconds);
+        printf("RTC:%02d/%02d/%04d %02d:%02d:%02d\r\n",
+          t->tm_mon + 1, t->tm_mday, t->tm_year + 1900, t->tm_hour, t->tm_min, t->tm_sec);
+
+        // Timer
+        printf("Timer:%dms\r\n", tick_timer.read_ms());
+
+        // AnalogIn
+        printf("A/D:%f\r\n", (float)adin);
+
+        // OS wait 1 second
+        ThisThread::sleep_for(1000);
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_01_flash_write.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,89 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 1)
+// SAMPLE_PROGRAM_NO  1 : FlashAPI sample
+//
+// This is a sample program of flash writing.
+// Writes to the address set in FLASH_ADDR.
+// Erasing is in units of 4096 bytes.
+
+#include "mbed.h"
+#include "mbed_drv_cfg.h"
+
+#define FLASH_ADDR  (FLASH_BASE + FLASH_SIZE - 0x100000)
+
+static uint8_t flash_work_buff[256];
+
+static void disp_flash_work_buff(void) {
+    for (uint32_t i = 0; i < sizeof(flash_work_buff); i++) {
+        if ((i != 0) && ((i & 0x0F) == 0x00)) {
+            printf("\r\n");
+        }
+        printf("%02x ", flash_work_buff[i]);
+    }
+    printf("\r\n\r\n");
+}
+
+int main(void) {
+    int ret;
+    uint32_t i;
+    FlashIAP flash;
+
+    flash.init();
+
+    // read
+    memset(flash_work_buff, 0, sizeof(flash_work_buff));
+    ret = flash.read(flash_work_buff, FLASH_ADDR, sizeof(flash_work_buff));
+    printf("flash.read ret=%d\r\n", (int)ret);
+    disp_flash_work_buff();
+
+    // erase
+    ret = flash.erase(FLASH_ADDR, flash.get_sector_size(FLASH_ADDR));
+    printf("flash.erase ret=%d\r\n", (int)ret);
+
+    // read
+    memset(flash_work_buff, 0, sizeof(flash_work_buff));
+    ret = flash.read(flash_work_buff, FLASH_ADDR, sizeof(flash_work_buff));
+    printf("flash.read ret=%d\r\n", (int)ret);
+    disp_flash_work_buff();
+
+    // write
+    for (i = 0; i < sizeof(flash_work_buff); i++) {
+        flash_work_buff[i] = i;
+    }
+    ret = flash.program(flash_work_buff, FLASH_ADDR, sizeof(flash_work_buff));
+    printf("flash.write ret=%d\r\n", (int)ret);
+
+    // read
+    memset(flash_work_buff, 0, sizeof(flash_work_buff));
+    ret = flash.read(flash_work_buff, FLASH_ADDR, sizeof(flash_work_buff));
+    printf("flash.read ret=%d\r\n", (int)ret);
+    disp_flash_work_buff();
+
+    while (1);
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_02_ssif_loop_back.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,101 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 2)
+// SAMPLE_PROGRAM_NO  2 : SSIF loop back sample
+//
+// The input sound is output as it is.
+// In case of GR-PEACH, please input the sound from the line-in, not from the microphone.
+
+#if defined(TARGET_SEMB1402) || defined(TARGET_RZ_A2M_SBEV)
+#error "Audio is not supported."
+#endif
+
+#include "mbed.h"
+#include "AUDIO_GRBoard.h"
+
+#define WRITE_BUFF_NUM         (8)
+#define READ_BUFF_NUM          (8)
+#define MAIL_QUEUE_SIZE        (WRITE_BUFF_NUM + READ_BUFF_NUM + 1)
+#define INFO_TYPE_WRITE_END    (0)
+#define INFO_TYPE_READ_END     (1)
+
+#define AUDIO_BUFF_SIZE        (4096)
+AUDIO_GRBoard audio(0x80, WRITE_BUFF_NUM, READ_BUFF_NUM);
+
+typedef struct {
+    uint32_t info_type;
+    void *   p_data;
+    int32_t  result;
+} mail_t;
+Mail<mail_t, MAIL_QUEUE_SIZE> mail_box;
+
+//32 bytes aligned! No cache memory
+static uint8_t audio_read_buff[READ_BUFF_NUM][AUDIO_BUFF_SIZE] __attribute((section("NC_BSS"),aligned(32)));
+
+static void callback_audio(void * p_data, int32_t result, void * p_app_data) {
+    mail_t *mail = mail_box.alloc();
+
+    if (mail == NULL) {
+        printf("error mail alloc\r\n");
+    } else {
+        mail->info_type = (uint32_t)p_app_data;
+        mail->p_data    = p_data;
+        mail->result    = result;
+        mail_box.put(mail);
+    }
+}
+
+int main() {
+    rbsp_data_conf_t audio_write_conf = {&callback_audio, (void *)INFO_TYPE_WRITE_END};
+    rbsp_data_conf_t audio_read_conf  = {&callback_audio, (void *)INFO_TYPE_READ_END};
+
+    audio.power();
+    audio.outputVolume(0.5, 0.5);
+    audio.micVolume(0.7);
+
+    // Read buffer setting
+    for (int i = 0; i < READ_BUFF_NUM; i++) {
+        if (audio.read(audio_read_buff[i], AUDIO_BUFF_SIZE, &audio_read_conf) < 0) {
+            printf("read error\r\n");
+        }
+    }
+
+    while (1) {
+        osEvent evt = mail_box.get();
+        if (evt.status == osEventMail) {
+            mail_t *mail = (mail_t *)evt.value.p;
+
+            if ((mail->info_type == INFO_TYPE_READ_END) && (mail->result > 0)) {
+                audio.write(mail->p_data, mail->result, &audio_write_conf);
+            } else {
+                audio.read(mail->p_data, AUDIO_BUFF_SIZE, &audio_read_conf); // Resetting read buffer
+            }
+            mail_box.free(mail);
+        }
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_03_spdif_loop_back.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,102 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 3)
+// SAMPLE_PROGRAM_NO  3 : SPDIF loop back sample
+//
+// The input sound is output as it is.
+// In case of SAMPLE_PROGRAM_NO=3 :
+//   Since TARGET_RZ_A2M_EVB has no connector and no suitable AUDIO_CLK has been entered, only pseudo-evaluation is executed.
+//   - Please connect PC_5 and PC_4 when evaluating.
+//   - Since AUDIO_CLK on the board is 11.2896 MHz, it operates at half the actual speed.
+//   - The AUDIO_CLK frequency required is 512 times as large as the sample frequency for audio data.
+//     (fs=44.1kHz : AUDIO_CLK=22.5792MHz, fs=48kHz : AUDIO_CLK=24.5760MHz)
+
+#if !defined(TARGET_RZ_A2M_EVB)
+#error "SPDIF is not supported."
+#endif
+
+#include "mbed.h"
+#include "SPDIF_RBSP.h"
+
+#define WRITE_BUFF_NUM         (8)
+#define READ_BUFF_NUM          (8)
+#define MAIL_QUEUE_SIZE        (WRITE_BUFF_NUM + READ_BUFF_NUM + 1)
+#define INFO_TYPE_WRITE_END    (0)
+#define INFO_TYPE_READ_END     (1)
+
+#define AUDIO_BUFF_SIZE        (192 * 2 * 10) // 1 block * 2ch * 10
+SPDIF_RBSP audio(P6_4, PC_5, PC_4, false, 0x80, WRITE_BUFF_NUM, READ_BUFF_NUM);
+
+typedef struct {
+    uint32_t info_type;
+    void *   p_data;
+    int32_t  result;
+} mail_t;
+Mail<mail_t, MAIL_QUEUE_SIZE> mail_box;
+
+//32 bytes aligned! No cache memory
+static uint8_t audio_read_buff[READ_BUFF_NUM][AUDIO_BUFF_SIZE] __attribute((section("NC_BSS"),aligned(32)));
+
+static void callback_audio(void * p_data, int32_t result, void * p_app_data) {
+    mail_t *mail = mail_box.alloc();
+
+    if (mail == NULL) {
+        printf("error mail alloc\r\n");
+    } else {
+        mail->info_type = (uint32_t)p_app_data;
+        mail->p_data    = p_data;
+        mail->result    = result;
+        mail_box.put(mail);
+    }
+}
+
+int main() {
+    rbsp_data_conf_t audio_write_conf = {&callback_audio, (void *)INFO_TYPE_WRITE_END};
+    rbsp_data_conf_t audio_read_conf  = {&callback_audio, (void *)INFO_TYPE_READ_END};
+
+    // Read buffer setting
+    for (int i = 0; i < READ_BUFF_NUM; i++) {
+        if (audio.read(audio_read_buff[i], AUDIO_BUFF_SIZE, &audio_read_conf) < 0) {
+            printf("read error\r\n");
+        }
+    }
+
+    while (1) {
+        osEvent evt = mail_box.get();
+        if (evt.status == osEventMail) {
+            mail_t *mail = (mail_t *)evt.value.p;
+
+            if ((mail->info_type == INFO_TYPE_READ_END) && (mail->result > 0)) {
+                audio.write(mail->p_data, mail->result, &audio_write_conf);
+            } else {
+                audio.read(mail->p_data, AUDIO_BUFF_SIZE, &audio_read_conf); // Resetting read buffer
+            }
+            mail_box.free(mail);
+        }
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_04_ssif_wav_playback.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,91 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 4)
+// SAMPLE_PROGRAM_NO  4 : SSIF wav playback sample (use USB memory or SD card)
+//
+// This sample will play a ".wav" file of the SD root folder.
+// Wav file format : RIFF format, 1ch or 2ch, 44.1kHz, 16bits
+
+#if defined(TARGET_SEMB1402) || defined(TARGET_RZ_A2M_SBEV)
+#error "Audio is not supported."
+#endif
+
+#include "mbed.h"
+#include "FATFileSystem.h"
+#include "SdUsbConnect.h"
+#include "EasyPlayback.h"
+#include "EasyDec_WavCnv2ch.h"
+
+static EasyPlayback AudioPlayer;
+
+#define FILE_NAME_LEN          (64)
+#define MOUNT_NAME             "storage"
+
+static InterruptIn skip_btn(USER_BUTTON0);
+
+static void skip_btn_fall(void) {
+    AudioPlayer.skip();
+}
+
+int main() {
+    DIR  * d;
+    struct dirent * p;
+    char file_path[sizeof("/" MOUNT_NAME "/") + FILE_NAME_LEN];
+    SdUsbConnect storage(MOUNT_NAME);
+
+    // decoder setting
+    AudioPlayer.add_decoder<EasyDec_WavCnv2ch>(".wav");
+    AudioPlayer.add_decoder<EasyDec_WavCnv2ch>(".WAV");
+
+    AudioPlayer.outputVolume(0.5);
+
+    // button setting
+    skip_btn.fall(&skip_btn_fall);
+
+    while (1) {
+        // connect wait
+        storage.wait_connect();
+
+        // file search
+        d = opendir("/" MOUNT_NAME "/");
+        if (d != NULL) {
+            while ((p = readdir(d)) != NULL) {
+                size_t len = strlen(p->d_name);
+                if (len < FILE_NAME_LEN) {
+                    // make file path
+                    sprintf(file_path, "/%s/%s", MOUNT_NAME, p->d_name);
+                    printf("%s\r\n", file_path);
+
+                    // playback
+                    AudioPlayer.play(file_path);
+                }
+            }
+            closedir(d);
+        }
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_05_spdif_wav_playback.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,95 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 5)
+// SAMPLE_PROGRAM_NO  5 : SPDIF wav playback sample (use USB memory or SD card)
+//
+// This sample will play a ".wav" file of the SD root folder.
+// Wav file format : RIFF format, 1ch or 2ch, 44.1kHz, 16bits
+// In case of SAMPLE_PROGRAM_NO=5 :
+//   Since TARGET_RZ_A2M_EVB has no connector and no suitable AUDIO_CLK has been entered, only pseudo-evaluation is executed.
+//   - Audio data is output from the PC_5 terminal.
+//   - Since AUDIO_CLK on the board is 11.2896 MHz, it operates at half the actual speed.
+//   - The AUDIO_CLK frequency required is 512 times as large as the sample frequency for audio data.
+//     (fs=44.1kHz : AUDIO_CLK=22.5792MHz, fs=48kHz : AUDIO_CLK=24.5760MHz)
+
+#if !defined(TARGET_RZ_A2M_EVB)
+#error "SPDIF is not supported."
+#endif
+
+#include "mbed.h"
+#include "FATFileSystem.h"
+#include "SdUsbConnect.h"
+#include "EasyPlayback.h"
+#include "EasyDec_WavCnv2ch.h"
+
+static EasyPlayback AudioPlayer(EasyPlayback::AUDIO_TPYE_SPDIF);
+
+#define FILE_NAME_LEN          (64)
+#define MOUNT_NAME             "storage"
+
+static InterruptIn skip_btn(USER_BUTTON0);
+
+static void skip_btn_fall(void) {
+    AudioPlayer.skip();
+}
+
+int main() {
+    DIR  * d;
+    struct dirent * p;
+    char file_path[sizeof("/" MOUNT_NAME "/") + FILE_NAME_LEN];
+    SdUsbConnect storage(MOUNT_NAME);
+
+    // decoder setting
+    AudioPlayer.add_decoder<EasyDec_WavCnv2ch>(".wav");
+    AudioPlayer.add_decoder<EasyDec_WavCnv2ch>(".WAV");
+
+    // button setting
+    skip_btn.fall(&skip_btn_fall);
+
+    while (1) {
+        // connect wait
+        storage.wait_connect();
+
+        // file search
+        d = opendir("/" MOUNT_NAME "/");
+        if (d != NULL) {
+            while ((p = readdir(d)) != NULL) {
+                size_t len = strlen(p->d_name);
+                if (len < FILE_NAME_LEN) {
+                    // make file path
+                    sprintf(file_path, "/%s/%s", MOUNT_NAME, p->d_name);
+                    printf("%s\r\n", file_path);
+
+                    // playback
+                    AudioPlayer.play(file_path);
+                }
+            }
+            closedir(d);
+        }
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_06_lcd_touch_jcu.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,285 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 6)
+// SAMPLE_PROGRAM_NO  6 : LCD, Touch panel and JCU sample (use USB memory or SD card)
+//
+// Decodes the JPEG file in the USB memory and displays it on the LED.
+// Touch information displays on the JPEG image.
+// Up to 2 touch positions can be recognized at the same time.
+
+#if defined(TARGET_SEMB1402) || defined(TARGET_RZ_A2M_SBEV)
+#error "LCD is not supported."
+#endif
+
+#include "mbed.h"
+#include "FATFileSystem.h"
+#include "SdUsbConnect.h"
+#include "dcache-control.h"
+#include "EasyAttach_CameraAndLCD.h"
+#include "JPEG_Converter.h"
+
+#define FRAME_BUFFER_STRIDE    (((LCD_PIXEL_WIDTH * 2) + 31u) & ~31u)
+#define FRAME_BUFFER_HEIGHT    (LCD_PIXEL_HEIGHT)
+
+#define FILE_NAME_LEN          (64)
+#define MOUNT_NAME             "storage"
+
+static uint8_t user_frame_buffer0[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((aligned(32)));
+static uint8_t JpegBuffer[128 * 1024]__attribute((aligned(32)));
+
+DisplayBase Display;
+
+
+#if defined(TouckKey_LCD_shield)
+
+/* TOUCH BUFFER Parameter GRAPHICS_LAYER_2 */
+#define TOUCH_BUFFER_BYTE_PER_PIXEL   (2u)
+#define TOUCH_BUFFER_STRIDE           (((LCD_PIXEL_WIDTH * TOUCH_BUFFER_BYTE_PER_PIXEL) + 31u) & ~31u)
+
+/* Touch panel parameter */
+#define TOUCH_NUM                     (2u)
+#define DRAW_POINT                    (8)
+
+static Semaphore   sem_touch_int(0);
+static uint8_t user_frame_buffer_touch[TOUCH_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32)));
+
+static void draw_touch_pos(uint8_t * p_buf, int id, int x, int y) {
+    int idx_base;
+    int wk_idx;
+    int i;
+    int j;
+    uint8_t coller_pix[TOUCH_BUFFER_BYTE_PER_PIXEL];  /* ARGB4444 */
+
+    /* A coordinate in the upper left is calculated from a central coordinate. */
+    if ((x - (DRAW_POINT / 2)) >= 0) {
+        x -= (DRAW_POINT / 2);
+    }
+    if (x > ((int)LCD_PIXEL_WIDTH - DRAW_POINT)) {
+        x = ((int)LCD_PIXEL_WIDTH - DRAW_POINT);
+    }
+    if ((y - (DRAW_POINT / 2)) >= 0) {
+        y -= (DRAW_POINT / 2);
+    }
+    if (y > ((int)LCD_PIXEL_HEIGHT - DRAW_POINT)) {
+        y = ((int)LCD_PIXEL_HEIGHT - DRAW_POINT);
+    }
+    idx_base = (x + ((int)LCD_PIXEL_WIDTH * y)) * TOUCH_BUFFER_BYTE_PER_PIXEL;
+
+    /* Select color */
+    if (id == 0) {
+        /* Blue */
+        coller_pix[0] = 0x0F;  /* 4:Green 4:Blue */
+        coller_pix[1] = 0xF0;  /* 4:Alpha 4:Red  */
+    } else {
+        /* Pink */
+        coller_pix[0] = 0x07;  /* 4:Green 4:Blue */
+        coller_pix[1] = 0xFF;  /* 4:Alpha 4:Red  */
+    }
+
+    /* Drawing */
+    for (i = 0; i < DRAW_POINT; i++) {
+        wk_idx = idx_base + ((int)LCD_PIXEL_WIDTH * TOUCH_BUFFER_BYTE_PER_PIXEL * i);
+        for (j = 0; j < DRAW_POINT; j++) {
+            p_buf[wk_idx++] = coller_pix[0];
+            p_buf[wk_idx++] = coller_pix[1];
+        }
+    }
+}
+
+static void touch_int_callback(void) {
+    sem_touch_int.release();
+}
+
+static void touch_task(void) {
+    DisplayBase::rect_t rect;
+    TouchKey::touch_pos_t touch_pos[TOUCH_NUM];
+    int touch_num = 0;
+    int touch_num_last = 0;
+    uint32_t i;
+#if defined(TARGET_RZ_A1XX)
+    TouckKey_LCD_shield touch(P4_0, P2_13, I2C_SDA, I2C_SCL);
+#elif defined(TARGET_RZ_A2XX)
+    TouckKey_LCD_shield touch(NC, P5_7, I2C_SDA, I2C_SCL);
+#endif
+
+    /* The layer by which the touch panel location is drawn */
+    memset(user_frame_buffer_touch, 0, sizeof(user_frame_buffer_touch));
+    dcache_clean(user_frame_buffer_touch, sizeof(user_frame_buffer_touch));
+    rect.vs = 0;
+    rect.vw = LCD_PIXEL_HEIGHT;
+    rect.hs = 0;
+    rect.hw = LCD_PIXEL_WIDTH;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_2,
+        (void *)user_frame_buffer_touch,
+        TOUCH_BUFFER_STRIDE,
+        DisplayBase::GRAPHICS_FORMAT_ARGB4444,
+        DisplayBase::WR_RD_WRSWA_32_16BIT,
+        &rect
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_2);
+
+    /* Callback setting */
+    touch.SetCallback(&touch_int_callback);
+
+    /* Reset touch IC */
+    touch.Reset();
+
+    while (1) {
+        /* Wait touch event */
+        sem_touch_int.wait();
+
+        /* Get touch coordinates */
+        touch_num = touch.GetCoordinates(TOUCH_NUM, touch_pos);
+
+        /* When it's a new touch, touch frame buffer is initialized */
+        if ((touch_num != 0) && (touch_num_last == 0)) {
+            memset(user_frame_buffer_touch, 0, sizeof(user_frame_buffer_touch));
+        }
+        touch_num_last = touch_num;
+
+        /* Drawing of a touch coordinate */
+        for (i = 0; i < TOUCH_NUM; i ++) {
+            printf("{valid=%d,x=%lu,y=%lu} ", touch_pos[i].valid, touch_pos[i].x, touch_pos[i].y);
+            if (touch_pos[i].valid) {
+                draw_touch_pos(user_frame_buffer_touch, i, touch_pos[i].x, touch_pos[i].y);
+            }
+        }
+        printf("\r\n");
+
+        /* Data cache clean */
+        dcache_clean(user_frame_buffer_touch, sizeof(user_frame_buffer_touch));
+    }
+}
+#endif // TouckKey_LCD_shield
+
+static void Start_LCD_Display(void) {
+    DisplayBase::rect_t rect;
+
+    // Initialize the background to black
+    for (uint32_t i = 0; i < sizeof(user_frame_buffer0); i += 2) {
+        user_frame_buffer0[i + 0] = 0x00;
+        user_frame_buffer0[i + 1] = 0x80;
+    }
+    dcache_clean(user_frame_buffer0, sizeof(user_frame_buffer0));
+
+    rect.vs = 0;
+    rect.vw = LCD_PIXEL_HEIGHT;
+    rect.hs = 0;
+    rect.hw = LCD_PIXEL_WIDTH;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_0,
+        (void *)user_frame_buffer0,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::GRAPHICS_FORMAT_YCBCR422,
+        DisplayBase::WR_RD_WRSWA_32_16BIT,
+        &rect
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_0);
+
+    ThisThread::sleep_for(50);
+    EasyAttach_LcdBacklight(true);
+}
+
+int main() {
+    FILE * fp;
+    DIR  * d;
+    struct dirent * p;
+    char file_path[sizeof("/" MOUNT_NAME "/") + FILE_NAME_LEN];
+    SdUsbConnect storage(MOUNT_NAME);
+    JPEG_Converter  Jcu;
+    long file_size;
+
+    EasyAttach_Init(Display);
+    Start_LCD_Display();
+
+    /* Start touch panel processing */
+#if defined(TouckKey_LCD_shield)
+    Thread touchTask;
+    touchTask.start(callback(touch_task));
+#endif // TouckKey_LCD_shield
+
+    while (1) {
+        // connect wait
+        storage.wait_connect();
+
+        // file search
+        d = opendir("/" MOUNT_NAME "/");
+        if (d != NULL) {
+            while ((p = readdir(d)) != NULL) {
+                size_t len = strlen(p->d_name);
+                if (len < FILE_NAME_LEN) {
+                    // make file path
+                    sprintf(file_path, "/%s/%s", MOUNT_NAME, p->d_name);
+                    printf("%s\r\n", file_path);
+
+                    char *extension = strstr(file_path, ".");
+                    if ((extension != NULL) && (memcmp(extension, ".jpg", 4) == 0)) {
+                        fp = fopen(file_path, "rb");
+                        if (fp != NULL) {
+                            fseek(fp, 0, SEEK_END);
+                            file_size = ftell(fp);
+                            fseek(fp, 0, SEEK_SET);
+                            if (file_size <= (long)sizeof(JpegBuffer)) {
+                                JPEG_Converter::bitmap_buff_info_t bitmap_buff_info;
+                                JPEG_Converter::decode_options_t   decode_options;
+
+                                bitmap_buff_info.width              = LCD_PIXEL_WIDTH;
+                                bitmap_buff_info.height             = LCD_PIXEL_HEIGHT;
+                                bitmap_buff_info.format             = JPEG_Converter::WR_RD_YCbCr422;
+                                bitmap_buff_info.buffer_address     = (void *)user_frame_buffer0;
+
+                                decode_options.output_swapsetting   = JPEG_Converter::WR_RD_WRSWA_32_16_8BIT;
+
+                                setvbuf(fp, NULL, _IONBF, 0); // unbuffered
+                                fread(JpegBuffer, sizeof(char), file_size, fp);
+                                dcache_clean(JpegBuffer, file_size);
+
+                                if (Jcu.decode((void *)JpegBuffer, &bitmap_buff_info, &decode_options) == JPEG_Converter::JPEG_CONV_OK) {
+                                    printf("Decode ok.\r\n");
+                                } else {
+                                    printf("Decode error.\r\n");
+                                }
+                            } else {
+                                printf("File size over.\r\n");
+                            }
+                            fclose(fp);
+
+                            ThisThread::sleep_for(5000);
+                        } else {
+                            printf("File open error.\r\n");
+                        }
+                    } else {
+                        printf("File skip.\r\n");
+                    }
+                }
+            }
+            closedir(d);
+        }
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_07_usb_func_serial.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,50 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 7)
+// SAMPLE_PROGRAM_NO  7 : USBSerial (CDC) sample
+// 
+// USBSerial example
+// Virtual serial port over USB
+// [Attention!] Delete the "OVERRIDE_CONSOLE_USBSERIAL" macro in "mbed_app.json" file if it is set.
+
+#include "mbed.h"
+#include "USBSerial.h"
+
+int main() {
+    USBSerial serial;
+
+    wait(0.1);
+    serial.printf("I am a virtual serial port\r\n");
+
+    // echoback
+    while (1) {
+        if (serial.readable()) {
+            serial._putc(serial._getc());
+        }
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_08_usb_func_mouse.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,53 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 8)
+// SAMPLE_PROGRAM_NO  8 : USBMouse sample
+//
+// The USBMouse interface is used to emulate a mouse over the USB port. 
+// You can choose relative or absolute co-ordinates, and send clicks, button state and scroll wheel movements.
+// [Attention!] Delete the "OVERRIDE_CONSOLE_USBSERIAL" macro in "mbed_app.json" file if it is set.
+
+#include "mbed.h"
+#include "USBMouse.h"
+
+int main() {
+    USBMouse mouse;
+    int16_t x = 0;
+    int16_t y = 0;
+    int32_t radius = 10;
+    int32_t angle = 0;
+
+    while (1) {
+        x = cos((double)angle*3.14/180.0)*radius;
+        y = sin((double)angle*3.14/180.0)*radius;
+
+        mouse.move(x, y);
+        angle += 3;
+        wait(0.001);
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_09_usb_func_keyboard.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,45 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 9)
+// SAMPLE_PROGRAM_NO  9 : USBKeyboard sample
+//
+// The USBKeyboard interface is used to emulate a keyboard over the USB port.
+// You can type strings and send keycodes.
+// [Attention!] Delete the "OVERRIDE_CONSOLE_USBSERIAL" macro in "mbed_app.json" file if it is set.
+
+#include "mbed.h"
+#include "USBKeyboard.h"
+
+int main(void) {
+    USBKeyboard key;
+
+    while (1) {
+        key.printf("Hello World\r\n");
+        wait(1);
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_10_usb_func_midi.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,50 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 10)
+// SAMPLE_PROGRAM_NO 10 : USBMIDI sample
+//
+// The USBMIDI interface can be used to send and receive MIDI messages over USB using the standard USB-MIDI protocol.
+// Using this library, you can do things like send MIDI messages to a computer (such as to record in a sequencer,
+// or trigger a software synthesiser) and receive messages from a computer (such as actuate things based on MIDI events)
+// [Attention!] Delete the "OVERRIDE_CONSOLE_USBSERIAL" macro in "mbed_app.json" file if it is set.
+
+#include "mbed.h"
+#include "USBMIDI.h"
+
+int main() {
+    USBMIDI midi;
+
+    while (1) {
+        for(int i = 48; i < 83; i++) {     // send some messages!
+            midi.write(MIDIMessage::NoteOn(i));
+            wait(0.25);
+            midi.write(MIDIMessage::NoteOff(i));
+            wait(0.5);
+        }
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_11_usb_func_audio_1.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,51 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 11)
+// SAMPLE_PROGRAM_NO 11 : USBAudio sample
+//
+// Audio loopback example use:
+// 1. Select "Mbed Audio" as your sound device
+// 2. Play a song or audio file
+// 3. Record the output using a program such as Audacity
+// [Attention!] Delete the "OVERRIDE_CONSOLE_USBSERIAL" macro in "mbed_app.json" file if it is set.
+
+#include "mbed.h"
+#include "USBAudio.h"
+
+int main() {
+    USBAudio audio(true, 44100, 2, 44100, 2);
+
+    printf("Looping audio\r\n");
+    static uint8_t buf[128];
+    while (true) {
+        if (!audio.read(buf, sizeof(buf))) {
+            memset(buf, 0, sizeof(buf));
+        }
+        audio.write(buf, sizeof(buf));
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_12_usb_func_audio_2.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,103 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 12)
+// SAMPLE_PROGRAM_NO 12 : USBAudio and SSIF sample
+// Sound from PC will be output to SSIF. (speaker)
+// Sound from SSIF will be input to the PC. (microphone)
+// [Attention!] Delete the "OVERRIDE_CONSOLE_USBSERIAL" macro in "mbed_app.json" file if it is set.
+
+#if defined(TARGET_SEMB1402) || defined(TARGET_RZ_A2M_SBEV)
+#error "Audio is not supported."
+#endif
+
+#include "mbed.h"
+#include "USBAudio.h"
+#include "AUDIO_GRBoard.h"
+
+#define AUDIO_OUT_BUFF_NUM     (8)
+#define AUDIO_IN_BUFF_NUM      (8)
+#define AUDIO_BUFF_SIZE        (4096)
+AUDIO_GRBoard i2s_audio(0x80, AUDIO_OUT_BUFF_NUM - 1, AUDIO_IN_BUFF_NUM);
+
+//32 bytes aligned! No cache memory
+static uint8_t audio_out_buff[AUDIO_OUT_BUFF_NUM][AUDIO_BUFF_SIZE] __attribute((section("NC_BSS"),aligned(32)));
+static uint8_t audio_in_buff[AUDIO_IN_BUFF_NUM][AUDIO_BUFF_SIZE] __attribute((section("NC_BSS"),aligned(32)));
+
+Semaphore   mic_in_sem(0);
+
+static void callback_audio_in(void * p_data, int32_t result, void * p_app_data) {
+    mic_in_sem.release();
+}
+
+void mic_task(USBAudio * p_usb_audio) {
+    rbsp_data_conf_t audio_in_cb = {&callback_audio_in, NULL};
+    uint8_t * p_buf;
+    int audio_in_idx = 0;
+
+    // Read buffer setting
+    for (int i = 0; i < AUDIO_IN_BUFF_NUM; i++) {
+        i2s_audio.read(audio_in_buff[i], AUDIO_BUFF_SIZE, &audio_in_cb);
+    }
+
+    while (1) {
+        mic_in_sem.wait();
+        p_buf = audio_in_buff[audio_in_idx++];
+        if (audio_in_idx >= AUDIO_IN_BUFF_NUM) {
+            audio_in_idx = 0;
+        }
+        if (i2s_audio.read(p_buf, AUDIO_BUFF_SIZE, &audio_in_cb) < 0) {
+            memset(p_buf, 0, AUDIO_BUFF_SIZE);
+        }
+        p_usb_audio->write(p_buf, AUDIO_BUFF_SIZE);
+    }
+}
+
+int main() {
+    USBAudio usb_audio(true, 44100, 2, 44100, 2);
+    rbsp_data_conf_t audio_out_cb = {NULL, NULL};
+    uint8_t * p_buf;
+    int audio_out_idx = 0;
+
+    i2s_audio.power();                // For GR-PEACH and GR-LYCHEE
+    i2s_audio.outputVolume(0.5, 0.5); // For GR-PEACH and GR-LYCHEE
+    i2s_audio.micVolume(0.7);         // For GR-PEACH and GR-LYCHEE
+
+    Thread micTask;
+    micTask.start(callback(mic_task, &usb_audio));
+
+    while (1) {
+        p_buf = audio_out_buff[audio_out_idx++];
+        if (audio_out_idx >= AUDIO_OUT_BUFF_NUM) {
+            audio_out_idx = 0;
+        }
+        if (!usb_audio.read(p_buf, AUDIO_BUFF_SIZE)) {
+            memset(p_buf, 0, AUDIO_BUFF_SIZE);
+        }
+        i2s_audio.write(p_buf, AUDIO_BUFF_SIZE, &audio_out_cb);
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_13_ether_http.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,104 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 13)
+// SAMPLE_PROGRAM_NO 13 : Ether HTTP sample
+
+#if defined(TARGET_SEMB1402)
+#error "Ether is not supported."
+#endif
+
+#include "mbed.h"
+#include "http_request.h"
+#include "EthernetInterface.h"
+
+EthernetInterface eth;
+
+void dump_response(HttpResponse* res) {
+    printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
+
+    printf("Headers:\n");
+    for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
+        printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str());
+    }
+    printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
+}
+
+int main() {
+    NetworkInterface* network = &eth;
+
+    printf("\nConnecting...\n");
+    int ret = network->connect();
+    if (ret != 0) {
+        printf("\nConnection error\n");
+        return -1;
+    }
+    printf("Success\n\n");
+    printf("MAC: %s\n", network->get_mac_address());
+    printf("IP: %s\n", network->get_ip_address());
+    printf("Netmask: %s\n", network->get_netmask());
+    printf("Gateway: %s\n", network->get_gateway());
+
+    // Do a GET request to httpbin.org
+    {
+        // By default the body is automatically parsed and stored in a buffer, this is memory heavy.
+        // To receive chunked response, pass in a callback as last parameter to the constructor.
+        HttpRequest* get_req = new HttpRequest(network, HTTP_GET, "http://httpbin.org/status/418");
+
+        HttpResponse* get_res = get_req->send();
+        if (!get_res) {
+            printf("HttpRequest failed (error code %d)\n", get_req->get_error());
+            return 1;
+        }
+
+        printf("\n----- HTTP GET response -----\n");
+        dump_response(get_res);
+
+        delete get_req;
+    }
+
+    // POST request to httpbin.org
+    {
+        HttpRequest* post_req = new HttpRequest(network, HTTP_POST, "http://httpbin.org/post");
+        post_req->set_header("Content-Type", "application/json");
+
+        const char body[] = "{\"hello\":\"world\"}";
+
+        HttpResponse* post_res = post_req->send(body, strlen(body));
+        if (!post_res) {
+            printf("HttpRequest failed (error code %d)\n", post_req->get_error());
+            return 1;
+        }
+
+        printf("\n----- HTTP POST response -----\n");
+        dump_response(post_res);
+
+        delete post_req;
+    }
+
+    wait(osWaitForever);
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_14_ether_https.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,177 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 14)
+// SAMPLE_PROGRAM_NO 14 : Ether HTTPS sample
+
+#if defined(TARGET_SEMB1402)
+#error "Ether is not supported."
+#endif
+
+#include "mbed.h"
+#include "https_request.h"
+#include "EthernetInterface.h"
+
+EthernetInterface eth;
+
+/* List of trusted root CA certificates
+ *
+ * - Amazon, the CA for os.mbed.com
+ * - Let's Encrypt, the CA for httpbin.org
+ * - Comodo, the CA for reqres.in
+ *
+ * To add more root certificates, just concatenate them.
+ */
+const char SSL_CA_PEM[] =  "-----BEGIN CERTIFICATE-----\n"
+    "MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\n"
+    "ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\n"
+    "b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\n"
+    "MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\n"
+    "b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\n"
+    "ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n"
+    "9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw\n"
+    "IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6\n"
+    "VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L\n"
+    "93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm\n"
+    "jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\n"
+    "AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA\n"
+    "A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI\n"
+    "U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs\n"
+    "N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\n"
+    "o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\n"
+    "5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n"
+    "rqXRfboQnoZsG4q5WTP468SQvvG5\n"
+    "-----END CERTIFICATE-----\n"
+    "-----BEGIN CERTIFICATE-----\n"
+    "MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/\n"
+    "MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n"
+    "DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow\n"
+    "SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT\n"
+    "GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC\n"
+    "AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF\n"
+    "q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8\n"
+    "SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0\n"
+    "Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA\n"
+    "a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj\n"
+    "/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T\n"
+    "AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG\n"
+    "CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv\n"
+    "bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k\n"
+    "c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw\n"
+    "VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC\n"
+    "ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz\n"
+    "MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu\n"
+    "Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF\n"
+    "AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo\n"
+    "uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/\n"
+    "wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu\n"
+    "X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG\n"
+    "PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6\n"
+    "KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\n"
+    "-----END CERTIFICATE-----\n"
+    "-----BEGIN CERTIFICATE-----\n"
+    "MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL\n"
+    "MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE\n"
+    "BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT\n"
+    "IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw\n"
+    "MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy\n"
+    "ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N\n"
+    "T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv\n"
+    "biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR\n"
+    "FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J\n"
+    "cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW\n"
+    "BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/\n"
+    "BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm\n"
+    "fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv\n"
+    "GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=\n"
+    "-----END CERTIFICATE-----\n";
+
+void dump_response(HttpResponse* res) {
+    mbedtls_printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
+
+    mbedtls_printf("Headers:\n");
+    for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
+        mbedtls_printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str());
+    }
+    mbedtls_printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
+}
+
+int main() {
+    NetworkInterface* network = &eth;
+
+    printf("\nConnecting...\n");
+    int ret = network->connect();
+    if (ret != 0) {
+        printf("\nConnection error\n");
+        return -1;
+    }
+    printf("Success\n\n");
+    printf("MAC: %s\n", network->get_mac_address());
+    printf("IP: %s\n", network->get_ip_address());
+    printf("Netmask: %s\n", network->get_netmask());
+    printf("Gateway: %s\n", network->get_gateway());
+
+    // GET request to developer.mbed.org
+    {
+        printf("\n----- HTTPS GET request -----\n");
+
+        HttpsRequest* get_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_GET, "https://os.mbed.com/media/uploads/mbed_official/hello.txt");
+
+        HttpResponse* get_res = get_req->send();
+        if (!get_res) {
+            printf("HttpRequest failed (error code %d)\n", get_req->get_error());
+            return 1;
+        }
+        printf("\n----- HTTPS GET response -----\n");
+        dump_response(get_res);
+
+        delete get_req;
+    }
+
+    // POST request to httpbin.org
+    {
+        printf("\n----- HTTPS POST request -----\n");
+
+        HttpsRequest* post_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_POST, "https://httpbin.org/post");
+        post_req->set_header("Content-Type", "application/json");
+
+        const char body[] = "{\"hello\":\"world\"}";
+
+        HttpResponse* post_res = post_req->send(body, strlen(body));
+        if (!post_res) {
+            printf("HttpRequest failed (error code %d)\n", post_req->get_error());
+            return 1;
+        }
+
+        printf("\n----- HTTPS POST response -----\n");
+        dump_response(post_res);
+
+        delete post_req;
+    }
+
+    wait(osWaitForever);
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_15_ceu_lcd_pwm.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,132 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 15)
+// SAMPLE_PROGRAM_NO 15 : CEU, LCD and PWM sample
+//
+// Display camera image on LCD
+// Pressing SW3 changes the LCD backlight. (PWM)
+//
+// Please set the value of "camera-type" in "mbed_app.json" to "CAMERA_MT9V111", "CAMERA_OV7725", "CAMERA_OV5642" or "CAMERA_WIRELESS_CAMERA".
+//
+//        "camera-type":{
+//            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+//            "value": "CAMERA_XXXXXXXX"
+//        },
+//
+// Please set the value of "lcd-type" in "mbed_app.json" to "TF043HV001A0", "ATM0430D25", "FG040346DSSWBG03" or "RSK_TFT".
+//
+//        "lcd-type":{
+//            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+//            "value": "RSK_TFT"
+//        },
+
+#if defined(TARGET_SEMB1402) || defined(TARGET_RZ_A2M_SBEV)
+#error "LCD is not supported."
+#endif
+
+#include "mbed.h"
+#include "EasyAttach_CameraAndLCD.h"
+
+/*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128
+    in accordance with the frame buffer burst transfer mode. */
+#define VIDEO_PIXEL_HW         (640)
+#define VIDEO_PIXEL_VW         (480)
+
+#define DATA_SIZE_PER_PIC      (2u)
+#define FRAME_BUFFER_STRIDE    (((VIDEO_PIXEL_HW * DATA_SIZE_PER_PIC) + 31u) & ~31u)
+#define FRAME_BUFFER_HEIGHT    (VIDEO_PIXEL_VW)
+
+DisplayBase Display;
+
+static uint8_t user_frame_buffer0[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((section("NC_BSS"),aligned(32)));
+
+static void Start_Video_Camera(void) {
+    // Video capture setting (progressive form fixed)
+    Display.Video_Write_Setting(
+        DisplayBase::VIDEO_INPUT_CHANNEL_0,
+        DisplayBase::COL_SYS_NTSC_358,
+        (void *)user_frame_buffer0,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::VIDEO_FORMAT_YCBCR422,
+        DisplayBase::WR_RD_WRSWA_32_16BIT,
+        VIDEO_PIXEL_VW,
+        VIDEO_PIXEL_HW
+    );
+    EasyAttach_CameraStart(Display, DisplayBase::VIDEO_INPUT_CHANNEL_0);
+}
+
+static void Start_LCD_Display(void) {
+    DisplayBase::rect_t rect;
+
+#if (LCD_PIXEL_HEIGHT > VIDEO_PIXEL_VW)
+    rect.vs = (LCD_PIXEL_HEIGHT - VIDEO_PIXEL_VW) / 2;  // centering
+#else
+    rect.vs = 0;
+#endif
+    rect.vw = VIDEO_PIXEL_VW;
+#if (LCD_PIXEL_WIDTH > VIDEO_PIXEL_HW)
+    rect.hs = (LCD_PIXEL_WIDTH - VIDEO_PIXEL_HW) / 2;   // centering
+#else
+    rect.hs = 0;
+#endif
+    rect.hw = VIDEO_PIXEL_HW;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_0,
+        (void *)user_frame_buffer0,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::GRAPHICS_FORMAT_YCBCR422,
+        DisplayBase::WR_RD_WRSWA_32_16BIT,
+        &rect
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_0);
+
+    ThisThread::sleep_for(50);
+    EasyAttach_LcdBacklight(true);
+}
+
+static void button_fall(void) {
+    static uint32_t backlight_val = 10;
+
+    if (backlight_val > 0) {
+        backlight_val--;
+    } else {
+        backlight_val = 10;
+    }
+    EasyAttach_LcdBacklight((float)(0.1f * backlight_val));
+}
+
+int main(void) {
+    EasyAttach_Init(Display);
+    Start_LCD_Display();
+    Start_Video_Camera();
+
+    InterruptIn button(USER_BUTTON0);
+    button.fall(&button_fall);
+
+    wait(osWaitForever);
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_16_usb_func_msd_1.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,51 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 16)
+// SAMPLE_PROGRAM_NO 16 : USBMSD and FlashAPI sample
+//
+// USBMSD and FlashAPI sample.
+// It is a sample program that can read and write serial flash from the PC via Filesystem.
+// By connecting the board and the PC with a USB cable, you can refer inside the device as a mass storage device.
+// (The format is required when connecting for the first time.)
+// Part of the flash address is used as storage.
+// The first 1MB is used as the program area, and the rest is used as the storage.
+// [Attention!] Delete the "OVERRIDE_CONSOLE_USBSERIAL" macro in "mbed_app.json" file if it is set.
+
+#include "mbed.h"
+#include "USBMSD.h"
+#include "FlashIAPBlockDevice.h"
+#include "mbed_drv_cfg.h"
+
+int main() {
+    FlashIAPBlockDevice flashiap_bd(FLASH_BASE + 0x100000, FLASH_SIZE - 0x100000);
+    USBMSD usb(&flashiap_bd);
+
+    while (true) {
+        usb.process();
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_17_usb_func_msd_2.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,305 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 17)
+// SAMPLE_PROGRAM_NO 17 : USBMSD and FlashAPI sample advanced version
+//
+// USBMSD and FlashAPI sample advanced version
+// It is a sample program that can read and write serial flash from the PC via Filesystem.
+// By connecting the board and the PC with a USB cable, you can refer inside the device as a mass storage device.
+// (The format is required when connecting for the first time.)
+// When you write a JPEG file (.jpg) from the PC to the storage, the image is displayed.
+// By pressing SW3, change the save destination to heap memory.
+// [Attention!] Delete the "OVERRIDE_CONSOLE_USBSERIAL" macro in "mbed_app.json" file if it is set.
+
+#include "mbed.h"
+#include "USBMSD.h"
+#include "ObservingBlockDevice.h"
+#include "FlashIAPBlockDevice.h"
+#include "mbed_drv_cfg.h"
+#include "HeapBlockDevice.h"
+#include "dcache-control.h"
+#include "EasyAttach_CameraAndLCD.h"
+#include "FATFileSystem.h"
+#include "JPEG_Converter.h"
+
+#define FILE_NAME_LEN          (64)
+#define FRAME_BUFFER_STRIDE    (((LCD_PIXEL_WIDTH * 2) + 31u) & ~31u)
+#define FRAME_BUFFER_HEIGHT    (LCD_PIXEL_HEIGHT)
+
+static uint8_t user_frame_buffer0[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((aligned(32)));
+static uint8_t JpegBuffer[1024 * 128]__attribute((aligned(32)));
+DisplayBase Display;
+
+typedef enum {
+    BD_FLASHIAP,
+    BD_HEAP,
+    BD_NUM
+} bd_type_t;
+
+static FlashIAPBlockDevice flashiap_bd(FLASH_BASE + 0x100000, FLASH_SIZE - 0x100000);
+static HeapBlockDevice heap_bd(0x100000);
+
+static BlockDevice * base_bd[BD_NUM] = {
+    &flashiap_bd,    // BD_FLASHIAP
+    &heap_bd         // BD_HEAP
+};
+
+static const char * base_bd_str[BD_NUM] = {
+    "FlashIAP",      // BD_FLASHIAP
+    "Heap"           // BD_HEAP
+};
+
+static InterruptIn storage_btn(USER_BUTTON0);
+static int tmp_bd_index = 0;
+static int bd_index = -1;
+static bool storage_change_flg = false;
+static Timer storage_change_timer;
+static FATFileSystem * p_fs = NULL;
+static ObservingBlockDevice * p_observing_bd = NULL;
+static USBMSD * p_usb = NULL;
+static Thread msdTask(osPriorityAboveNormal);
+static Semaphore usb_sem(0);
+static bool heap_bd_format = false;
+static bool image_disp = false;
+
+// Function prototypes
+static void msd_task(void);
+static void storage_change(BlockDevice * p_bd);
+static void chk_storage_change(void);
+static void chk_bd_change(void);
+static void storage_btn_fall(void);
+static void clear_display(void);
+static void Start_LCD_Display(void);
+
+static void usb_callback_func(void) {
+    usb_sem.release();
+}
+
+static void msd_task(void) {
+    while (true) {
+        usb_sem.wait();
+        if (p_usb != NULL) {
+            p_usb->process();
+        }
+    }
+}
+
+static void storage_change(BlockDevice * p_bd) {
+    storage_change_flg = true;
+    storage_change_timer.reset();
+    storage_change_timer.start();
+    if (image_disp) {
+        clear_display();
+        image_disp = false;
+    }
+}
+
+static void chk_storage_change(void) {
+    if (!storage_change_flg) {
+        return;
+    }
+
+    // wait storage change
+    while (storage_change_timer.read_ms() < 1000) {
+        ThisThread::sleep_for(100);
+    }
+    storage_change_timer.stop();
+    storage_change_timer.reset();
+    storage_change_flg = false;
+
+    p_fs->unmount();
+    chk_bd_change();
+    p_fs->mount(base_bd[bd_index]);
+}
+
+static void chk_bd_change(void) {
+    if (bd_index == tmp_bd_index) {
+        return;
+    }
+    if (p_usb != NULL) {
+        USBMSD * wk = p_usb;
+        p_usb = NULL;
+        delete wk;
+    }
+    if (p_observing_bd != NULL) {
+        delete p_observing_bd;
+    }
+    if (p_fs != NULL) {
+        delete p_fs;
+    }
+    bd_index = tmp_bd_index;
+    printf("\r\nconnecting %s\r\n", base_bd_str[bd_index]);
+    if (bd_index == BD_HEAP) {
+        if (!heap_bd_format) {
+            FATFileSystem::format(&heap_bd);
+            heap_bd_format = true;
+        }
+    }
+    p_fs = new FATFileSystem(base_bd_str[bd_index]);
+    p_observing_bd = new ObservingBlockDevice(base_bd[bd_index]);
+    p_observing_bd->attach(&storage_change);
+    p_usb = new USBMSD(p_observing_bd);
+    p_usb->attach(&usb_callback_func);
+}
+
+static void storage_btn_fall(void) {
+    if ((tmp_bd_index + 1) < BD_NUM) {
+        tmp_bd_index++;
+    } else {
+        tmp_bd_index = 0;
+    }
+    storage_change(NULL);
+}
+
+static void clear_display(void) {
+    // Initialize the background to black
+    for (uint32_t i = 0; i < sizeof(user_frame_buffer0); i += 2) {
+        user_frame_buffer0[i + 0] = 0x00;
+        user_frame_buffer0[i + 1] = 0x80;
+    }
+    dcache_clean(user_frame_buffer0, sizeof(user_frame_buffer0));
+}
+
+static void Start_LCD_Display(void) {
+    DisplayBase::rect_t rect;
+
+    rect.vs = 0;
+    rect.vw = LCD_PIXEL_HEIGHT;
+    rect.hs = 0;
+    rect.hw = LCD_PIXEL_WIDTH;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_0,
+        (void *)user_frame_buffer0,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::GRAPHICS_FORMAT_YCBCR422,
+        DisplayBase::WR_RD_WRSWA_32_16BIT,
+        &rect
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_0);
+
+    ThisThread::sleep_for(50);
+    EasyAttach_LcdBacklight(true);
+}
+
+int main() {
+    FILE * fp;
+    DIR  * d;
+    struct dirent * p;
+    char file_path[10 + FILE_NAME_LEN];
+    int file_num;
+    JPEG_Converter  Jcu;
+    long file_size;
+
+    clear_display();
+    EasyAttach_Init(Display);
+    Start_LCD_Display();
+
+    // Start usb task
+    msdTask.start(&msd_task);
+
+    // Set BlockDevice
+    chk_bd_change();
+    p_fs->mount(base_bd[bd_index]);
+
+    // Button setting
+    storage_btn.fall(&storage_btn_fall);
+
+    while (true) {
+        // Confirm storage change
+        chk_storage_change();
+
+        // File search
+        file_num = 0;
+        sprintf(file_path, "/%s/", base_bd_str[bd_index]);
+        d = opendir(file_path);
+        if (d != NULL) {
+            while ((p = readdir(d)) != NULL) {
+                size_t len = strlen(p->d_name);
+                if (len < FILE_NAME_LEN) {
+                    // Make file path
+                    sprintf(file_path, "/%s/%s", base_bd_str[bd_index], p->d_name);
+                    printf("%s\r\n", file_path);
+
+                    char *extension = strstr(file_path, ".");
+                    if ((extension != NULL) && (memcmp(extension, ".jpg", 4) == 0)) {
+                        fp = fopen(file_path, "rb");
+                        if (fp != NULL) {
+                            fseek(fp, 0, SEEK_END);
+                            file_size = ftell(fp);
+                            fseek(fp, 0, SEEK_SET);
+                            if (file_size <= (long)sizeof(JpegBuffer)) {
+                                JPEG_Converter::bitmap_buff_info_t bitmap_buff_info;
+                                JPEG_Converter::decode_options_t   decode_options;
+
+                                bitmap_buff_info.width              = LCD_PIXEL_WIDTH;
+                                bitmap_buff_info.height             = LCD_PIXEL_HEIGHT;
+                                bitmap_buff_info.format             = JPEG_Converter::WR_RD_YCbCr422;
+                                bitmap_buff_info.buffer_address     = (void *)user_frame_buffer0;
+
+                                decode_options.output_swapsetting   = JPEG_Converter::WR_RD_WRSWA_32_16_8BIT;
+
+                                setvbuf(fp, NULL, _IONBF, 0); // unbuffered
+                                fread(JpegBuffer, sizeof(char), file_size, fp);
+                                dcache_clean(JpegBuffer, file_size);
+
+                                if (Jcu.decode((void *)JpegBuffer, &bitmap_buff_info, &decode_options) == JPEG_Converter::JPEG_CONV_OK) {
+                                    image_disp = true;
+                                    file_num++;
+                                } else {
+                                    printf("Decode error.\r\n");
+                                }
+                            } else {
+                                printf("File size over.\r\n");
+                            }
+                            fclose(fp);
+
+                            for (int i = 0; (i < 50) && (storage_change_flg == false); i++) {
+                                ThisThread::sleep_for(100);
+                            }
+                        } else {
+                            printf("File open error.\r\n");
+                        }
+                    }
+                }
+                if (storage_change_flg) {
+                    clear_display();
+                    break;
+                }
+            }
+            closedir(d);
+        }
+
+        // If there is no files, wait until the storage is changed
+        if ((file_num == 0) && (!storage_change_flg)) {
+            printf("No files\r\n");
+            while (!storage_change_flg) {
+                ThisThread::sleep_for(100);
+            }
+        }
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_18_mipi_drp_lcd.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,262 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 18)
+// SAMPLE_PROGRAM_NO 18 : MIPI, DRP and LCD sample
+// If you want to know more about SimpleIsp, please refer to: https://github.com/d-kato/RZ_A2M_WebCamera_MIPI
+//
+// Converts the input image from MIPI camera to YUV image using DRP and outputs to display.
+// Please refer to the document for details. (RZ_A2M_Mbed\drp-for-mbed\r_drp\doc),
+//
+// Please set the value of "camera-type" in "mbed_app.json" to null or "CAMERA_RASPBERRY_PI".
+//
+//        "camera-type":{
+//            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+//            "value": null
+//        },
+//
+//        or
+//
+//        "camera-type":{
+//            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+//            "value": "CAMERA_RASPBERRY_PI"
+//        },
+//
+// Requirements
+//   RZ/A2M Evaluation Board Kit : Display Output Board
+//   SBEV-RZ/A2M                 : LVDS To HDMI Board
+//   SEMB1402                    : LVDS To HDMI Board
+
+#if !defined(TARGET_RZ_A2XX)
+#error "DRP and MIPI are not supported."
+#endif
+#if MBED_CONF_APP_CAMERA_TYPE != CAMERA_RASPBERRY_PI
+#error Please set the value of "camera-type" in "mbed_app.json" to "CAMERA_RASPBERRY_PI" and build.
+#endif
+
+#include "mbed.h"
+#include "EasyAttach_CameraAndLCD.h"
+#include "AsciiFont.h"
+#include "r_dk2_if.h"
+#include "r_drp_simple_isp.h"
+
+/*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128
+    in accordance with the frame buffer burst transfer mode. */
+#define VIDEO_PIXEL_HW         LCD_PIXEL_WIDTH
+#define VIDEO_PIXEL_VW         LCD_PIXEL_HEIGHT
+
+#define FRAME_BUFFER_STRIDE    (((VIDEO_PIXEL_HW * 1) + 31u) & ~31u)
+#define FRAME_BUFFER_STRIDE_2  (((VIDEO_PIXEL_HW * 2) + 31u) & ~31u)
+#define FRAME_BUFFER_HEIGHT    (VIDEO_PIXEL_VW)
+
+#define OVL_WIDTH              (AsciiFont::CHAR_PIX_WIDTH * 2 * 11)
+#define OVL_STRIDE             (((OVL_WIDTH * 1) + 31u) & ~31u)
+#define OVL_HEIGHT             (AsciiFont::CHAR_PIX_HEIGHT * 2)
+
+#define DRP_FLG_CAMER_IN       (0x00000100)
+
+#define WB_DAYLIGHT            (0)
+#define WB_CLOUDY              (1)
+#define WB_FLUORESCENT         (2)
+#define WB_TUNGSTEN            (3)
+
+static DisplayBase Display;
+static uint8_t fbuf_bayer[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((aligned(128)));
+static uint8_t fbuf_yuv[FRAME_BUFFER_STRIDE_2 * FRAME_BUFFER_HEIGHT]__attribute((aligned(32)));
+static uint8_t fbuf_overlay[OVL_STRIDE * OVL_HEIGHT]__attribute((section("NC_BSS"),aligned(32)));
+
+static r_drp_simple_isp_t param_isp __attribute((section("NC_BSS")));
+static uint8_t drp_lib_id[R_DK2_TILE_NUM] = {0};
+static Thread drpTask(osPriorityHigh);
+static uint32_t isp_wb_mode_req;
+static uint32_t isp_wb_mode;
+
+static const uint32_t clut_data_resut[] = {0x00000000, 0xff00ff00};  // ARGB8888
+
+static void IntCallbackFunc_Vfield(DisplayBase::int_type_t int_type) {
+    drpTask.flags_set(DRP_FLG_CAMER_IN);
+}
+
+static void cb_drp_finish(uint8_t id) {
+    // do nothing
+}
+
+static void Start_Video_Camera(void) {
+    // Video capture setting (progressive form fixed)
+    Display.Video_Write_Setting(
+        DisplayBase::VIDEO_INPUT_CHANNEL_0,
+        DisplayBase::COL_SYS_NTSC_358,
+        (void *)fbuf_bayer,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::VIDEO_FORMAT_RAW8,
+        DisplayBase::WR_RD_WRSWA_NON,
+        VIDEO_PIXEL_VW,
+        VIDEO_PIXEL_HW
+    );
+    EasyAttach_CameraStart(Display, DisplayBase::VIDEO_INPUT_CHANNEL_0);
+}
+
+static void Start_LCD_Display(void) {
+    DisplayBase::rect_t rect;
+    DisplayBase::clut_t clut_param;
+
+    rect.vs = 0;
+    rect.vw = VIDEO_PIXEL_VW;
+    rect.hs = 0;
+    rect.hw = VIDEO_PIXEL_HW;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_0,
+        (void *)fbuf_yuv,
+        FRAME_BUFFER_STRIDE_2,
+        DisplayBase::GRAPHICS_FORMAT_YCBCR422,
+        DisplayBase::WR_RD_WRSWA_32_16_8BIT,
+        &rect
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_0);
+
+    memset(fbuf_overlay, 0, sizeof(fbuf_overlay));
+    clut_param.color_num = sizeof(clut_data_resut) / sizeof(uint32_t);
+    clut_param.clut = clut_data_resut;
+
+    rect.vs = 5;
+    rect.vw = OVL_HEIGHT;
+    rect.hs = 5;
+    rect.hw = OVL_WIDTH;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_2,
+        (void *)fbuf_overlay,
+        OVL_STRIDE,
+        DisplayBase::GRAPHICS_FORMAT_CLUT8,
+        DisplayBase::WR_RD_WRSWA_32_16_8BIT,
+        &rect,
+        &clut_param
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_2);
+
+    ThisThread::sleep_for(50);
+    EasyAttach_LcdBacklight(true);
+}
+
+static void button_fall(void) {
+    if (isp_wb_mode_req < WB_TUNGSTEN) {
+        isp_wb_mode_req++;
+    } else {
+        isp_wb_mode_req = WB_DAYLIGHT;
+    }
+}
+
+static void drp_task(void) {
+    AsciiFont ascii_font(fbuf_overlay, OVL_WIDTH, OVL_HEIGHT, OVL_STRIDE, 1);
+    char str[64];
+
+    EasyAttach_Init(Display);
+    Start_LCD_Display();
+    // Interrupt callback function setting (Field end signal for recording function in scaler 0)
+    Display.Graphics_Irq_Handler_Set(DisplayBase::INT_TYPE_S0_VFIELD, 0, IntCallbackFunc_Vfield);
+    Start_Video_Camera();
+
+    R_DK2_Initialize();
+
+    /* Load DRP Library                 */
+    /*        +-----------------------+ */
+    /* tile 0 |                       | */
+    /*        +                       + */
+    /* tile 1 |                       | */
+    /*        +                       + */
+    /* tile 2 |                       | */
+    /*        + SimpleIsp bayer2yuv_6 + */
+    /* tile 3 |                       | */
+    /*        +                       + */
+    /* tile 4 |                       | */
+    /*        +                       + */
+    /* tile 5 |                       | */
+    /*        +-----------------------+ */
+    R_DK2_Load(g_drp_lib_simple_isp_bayer2yuv_6,
+               R_DK2_TILE_0,
+               R_DK2_TILE_PATTERN_6, NULL, &cb_drp_finish, drp_lib_id);
+    R_DK2_Activate(0, 0);
+
+    memset(&param_isp, 0, sizeof(param_isp));
+    param_isp.src    = (uint32_t)fbuf_bayer;
+    param_isp.dst    = (uint32_t)fbuf_yuv;
+    param_isp.width  = VIDEO_PIXEL_HW;
+    param_isp.height = VIDEO_PIXEL_VW;
+    param_isp.gain_r = 0x1266;
+    param_isp.gain_g = 0x0CB0;
+    param_isp.gain_b = 0x1359;
+
+    isp_wb_mode_req = WB_DAYLIGHT;
+    isp_wb_mode = WB_DAYLIGHT;
+    sprintf(str, "Daylight");
+    ascii_font.DrawStr(str, 0, 0 + (AsciiFont::CHAR_PIX_HEIGHT + 1) * 0, 1, 2);
+
+    InterruptIn button(USER_BUTTON0);
+    button.fall(&button_fall);
+
+    while (true) {
+        ThisThread::flags_wait_all(DRP_FLG_CAMER_IN);
+        if (isp_wb_mode_req != isp_wb_mode) {
+            isp_wb_mode = isp_wb_mode_req;
+            switch (isp_wb_mode) {
+                case WB_DAYLIGHT:
+                    param_isp.gain_r = 0x1266;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x1359;
+                    sprintf(str, "Daylight");
+                    break;
+                case WB_CLOUDY:
+                    param_isp.gain_r = 0x1400;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x11CA;
+                    sprintf(str, "Cloudy");
+                    break;
+                case WB_FLUORESCENT:
+                    param_isp.gain_r = 0x1000;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x163D;
+                    sprintf(str, "Fluorescent");
+                    break;
+                case WB_TUNGSTEN:
+                    param_isp.gain_r = 0x0E66;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x1876;
+                    sprintf(str, "Tungsten");
+                    break;
+            }
+            memset(fbuf_overlay, 0, sizeof(fbuf_overlay));
+            ascii_font.DrawStr(str, 0, 0 + (AsciiFont::CHAR_PIX_HEIGHT + 1) * 0, 1, 2);
+        }
+        R_DK2_Start(drp_lib_id[0], (void *)&param_isp, sizeof(r_drp_simple_isp_t));
+    }
+}
+
+int main(void) {
+    // Start DRP task
+    drpTask.start(callback(drp_task));
+
+    wait(osWaitForever);
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_19_mipi_drp_diplayapp.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,228 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 19)
+// SAMPLE_PROGRAM_NO 19 : MIPI, DRP and USBSerial (CDC) sample (use "DisplayApp")
+// If you want to know more about SimpleIsp, please refer to: https://github.com/d-kato/RZ_A2M_WebCamera_MIPI
+//
+// Converts the input image from MIPI camera to YUV image using DRP and outputs to PC display using DisplayApp.
+// DisplayApp (Image display on PC display with USB connection)
+// https://github.com/d-kato/mbed-gr-libs#displayapp-image-display-on-pc-display-with-usb-connection
+// Please refer to the document for details. (RZ_A2M_Mbed\drp-for-mbed\r_drp\doc),
+//
+// Please set the value of "camera-type" in "mbed_app.json" to "CAMERA_RASPBERRY_PI".
+//
+//        "camera-type":{
+//            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+//            "value": "CAMERA_RASPBERRY_PI"
+//        },
+// [Attention!] Delete the "OVERRIDE_CONSOLE_USBSERIAL" macro in "mbed_app.json" file if it is set.
+
+#if !defined(TARGET_RZ_A2XX)
+#error "DRP and MIPI are not supported."
+#endif
+#if MBED_CONF_APP_CAMERA_TYPE != CAMERA_RASPBERRY_PI
+#error Please set the value of "camera-type" in "mbed_app.json" to "CAMERA_RASPBERRY_PI" and build.
+#endif
+
+#include "mbed.h"
+#include "EasyAttach_CameraAndLCD.h"
+#include "AsciiFont.h"
+#include "r_dk2_if.h"
+#include "r_drp_simple_isp.h"
+#include "JPEG_Converter.h"
+#include "DisplayApp.h"
+#include "dcache-control.h"
+
+/*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128
+    in accordance with the frame buffer burst transfer mode. */
+#define VIDEO_PIXEL_HW         (640)
+#define VIDEO_PIXEL_VW         (480)
+
+#define FRAME_BUFFER_STRIDE    (((VIDEO_PIXEL_HW * 1) + 31u) & ~31u)
+#define FRAME_BUFFER_STRIDE_2  (((VIDEO_PIXEL_HW * 2) + 31u) & ~31u)
+#define FRAME_BUFFER_HEIGHT    (VIDEO_PIXEL_VW)
+
+#define DRP_FLG_TILE_ALL       (R_DK2_TILE_0 | R_DK2_TILE_1 | R_DK2_TILE_2 | R_DK2_TILE_3 | R_DK2_TILE_4 | R_DK2_TILE_5)
+#define DRP_FLG_CAMER_IN       (0x00000100)
+
+#define WB_DAYLIGHT            (0)
+#define WB_CLOUDY              (1)
+#define WB_FLUORESCENT         (2)
+#define WB_TUNGSTEN            (3)
+
+static DisplayBase Display;
+static uint8_t fbuf_bayer[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((aligned(128)));
+static uint8_t fbuf_yuv[FRAME_BUFFER_STRIDE_2 * FRAME_BUFFER_HEIGHT]__attribute((aligned(32)));
+static uint8_t JpegBuffer[1024 * 64]__attribute((aligned(32)));
+static DisplayApp  display_app;
+
+static r_drp_simple_isp_t param_isp __attribute((section("NC_BSS")));
+static uint8_t drp_lib_id[R_DK2_TILE_NUM] = {0};
+static Thread drpTask(osPriorityHigh);
+static uint32_t isp_wb_mode_req;
+static uint32_t isp_wb_mode;
+
+static const uint32_t clut_data_resut[] = {0x00000000, 0xff00ff00};  // ARGB8888
+
+static void IntCallbackFunc_Vfield(DisplayBase::int_type_t int_type) {
+    drpTask.flags_set(DRP_FLG_CAMER_IN);
+}
+
+static void cb_drp_finish(uint8_t id) {
+    uint32_t tile_no;
+    uint32_t set_flgs = 0;
+
+    // Change the operation state of the DRP library notified by the argument to finish
+    for (tile_no = 0; tile_no < R_DK2_TILE_NUM; tile_no++) {
+        if (drp_lib_id[tile_no] == id) {
+            set_flgs |= (1 << tile_no);
+        }
+    }
+    drpTask.flags_set(set_flgs);
+}
+
+static void Start_Video_Camera(void) {
+    // Video capture setting (progressive form fixed)
+    Display.Video_Write_Setting(
+        DisplayBase::VIDEO_INPUT_CHANNEL_0,
+        DisplayBase::COL_SYS_NTSC_358,
+        (void *)fbuf_bayer,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::VIDEO_FORMAT_RAW8,
+        DisplayBase::WR_RD_WRSWA_NON,
+        VIDEO_PIXEL_VW,
+        VIDEO_PIXEL_HW
+    );
+    EasyAttach_CameraStart(Display, DisplayBase::VIDEO_INPUT_CHANNEL_0);
+}
+
+static void button_fall(void) {
+    if (isp_wb_mode_req < WB_TUNGSTEN) {
+        isp_wb_mode_req++;
+    } else {
+        isp_wb_mode_req = WB_DAYLIGHT;
+    }
+}
+
+static void drp_task(void) {
+    JPEG_Converter  Jcu;
+    JPEG_Converter::bitmap_buff_info_t bitmap_buff_info;
+    JPEG_Converter::encode_options_t   encode_options;
+    size_t encode_size;
+
+    EasyAttach_Init(Display);
+    // Interrupt callback function setting (Field end signal for recording function in scaler 0)
+    Display.Graphics_Irq_Handler_Set(DisplayBase::INT_TYPE_S0_VFIELD, 0, IntCallbackFunc_Vfield);
+    Start_Video_Camera();
+
+    R_DK2_Initialize();
+
+    /* Load DRP Library                 */
+    /*        +-----------------------+ */
+    /* tile 0 |                       | */
+    /*        +                       + */
+    /* tile 1 |                       | */
+    /*        +                       + */
+    /* tile 2 |                       | */
+    /*        + SimpleIsp bayer2yuv_6 + */
+    /* tile 3 |                       | */
+    /*        +                       + */
+    /* tile 4 |                       | */
+    /*        +                       + */
+    /* tile 5 |                       | */
+    /*        +-----------------------+ */
+    R_DK2_Load(g_drp_lib_simple_isp_bayer2yuv_6,
+               R_DK2_TILE_0,
+               R_DK2_TILE_PATTERN_6, NULL, &cb_drp_finish, drp_lib_id);
+    R_DK2_Activate(0, 0);
+
+    memset(&param_isp, 0, sizeof(param_isp));
+    param_isp.src    = (uint32_t)fbuf_bayer;
+    param_isp.dst    = (uint32_t)fbuf_yuv;
+    param_isp.width  = VIDEO_PIXEL_HW;
+    param_isp.height = VIDEO_PIXEL_VW;
+    param_isp.gain_r = 0x1266;
+    param_isp.gain_g = 0x0CB0;
+    param_isp.gain_b = 0x1359;
+
+    isp_wb_mode_req = WB_DAYLIGHT;
+    isp_wb_mode = WB_DAYLIGHT;
+
+    InterruptIn button(USER_BUTTON0);
+    button.fall(&button_fall);
+
+    bitmap_buff_info.width              = VIDEO_PIXEL_HW;
+    bitmap_buff_info.height             = VIDEO_PIXEL_VW;
+    bitmap_buff_info.format             = JPEG_Converter::WR_RD_YCbCr422;
+    bitmap_buff_info.buffer_address     = (void *)fbuf_yuv;
+    encode_options.encode_buff_size     = sizeof(JpegBuffer);
+    encode_options.input_swapsetting    = JPEG_Converter::WR_RD_WRSWA_32_16BIT;
+
+    while (true) {
+        ThisThread::flags_wait_all(DRP_FLG_CAMER_IN);
+        if (isp_wb_mode_req != isp_wb_mode) {
+            isp_wb_mode = isp_wb_mode_req;
+            switch (isp_wb_mode) {
+                case WB_DAYLIGHT:
+                    param_isp.gain_r = 0x1266;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x1359;
+                    break;
+                case WB_CLOUDY:
+                    param_isp.gain_r = 0x1400;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x11CA;
+                    break;
+                case WB_FLUORESCENT:
+                    param_isp.gain_r = 0x1000;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x163D;
+                    break;
+                case WB_TUNGSTEN:
+                    param_isp.gain_r = 0x0E66;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x1876;
+                    break;
+            }
+        }
+        R_DK2_Start(drp_lib_id[0], (void *)&param_isp, sizeof(r_drp_simple_isp_t));
+
+        ThisThread::flags_wait_all(DRP_FLG_TILE_ALL);
+        dcache_invalid(JpegBuffer, sizeof(JpegBuffer));
+        if (Jcu.encode(&bitmap_buff_info, JpegBuffer, &encode_size, &encode_options) == JPEG_Converter::JPEG_CONV_OK) {
+            display_app.SendJpeg(JpegBuffer, (int)encode_size);
+        }
+    }
+}
+
+int main(void) {
+    // Start DRP task
+    drpTask.start(callback(drp_task));
+
+    wait(osWaitForever);
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_20_drp_dynamic_loading.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,406 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 20)
+// SAMPLE_PROGRAM_NO 20 : DRP Dynamic Loading Sample
+//
+// Detects the edges of the input image from MIPI camera by Canny method using DRP and outputs to display.
+// Please refer to the document for details. (RZ_A2M_Mbed\drp-for-mbed\r_drp\doc)
+//
+// Please set the value of "camera-type" in "mbed_app.json" to null or "CAMERA_RASPBERRY_PI".
+//
+//        "camera-type":{
+//            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+//            "value": null
+//        },
+//
+//        or
+//
+//        "camera-type":{
+//            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+//            "value": "CAMERA_RASPBERRY_PI"
+//        },
+//
+// Requirements
+//   RZ/A2M Evaluation Board Kit : Display Output Board
+//   SBEV-RZ/A2M                 : LVDS To HDMI Board
+//   SEMB1402                    : LVDS To HDMI Board
+
+#if !defined(TARGET_RZ_A2XX)
+#error "DRP and MIPI are not supported."
+#endif
+#if MBED_CONF_APP_CAMERA_TYPE != CAMERA_RASPBERRY_PI
+#error Please set the value of "camera-type" in "mbed_app.json" to "CAMERA_RASPBERRY_PI" and build.
+#endif
+
+#include "mbed.h"
+#include "EasyAttach_CameraAndLCD.h"
+#include "dcache-control.h"
+#include "AsciiFont.h"
+#include "r_dk2_if.h"
+#include "r_drp_bayer2grayscale.h"
+#include "r_drp_median_blur.h"
+#include "r_drp_canny_calculate.h"
+#include "r_drp_canny_hysterisis.h"
+
+#define RAM_TABLE_DYNAMIC_LOADING   1
+
+/*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128
+    in accordance with the frame buffer burst transfer mode. */
+#define VIDEO_PIXEL_HW         (640)
+#define VIDEO_PIXEL_VW         (480)
+
+#define DATA_SIZE_PER_PIC      (1u)
+#define FRAME_BUFFER_STRIDE    (((VIDEO_PIXEL_HW * DATA_SIZE_PER_PIC) + 31u) & ~31u)
+#define FRAME_BUFFER_HEIGHT    (VIDEO_PIXEL_VW)
+
+#define DRP_FLG_TILE_ALL       (R_DK2_TILE_0 | R_DK2_TILE_1 | R_DK2_TILE_2 | R_DK2_TILE_3 | R_DK2_TILE_4 | R_DK2_TILE_5)
+#define DRP_FLG_CAMER_IN       (0x00000100)
+
+static DisplayBase Display;
+static uint8_t fbuf_bayer[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((aligned(128)));
+static uint8_t fbuf_work0[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((aligned(32)));
+static uint8_t fbuf_work1[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((aligned(32)));
+static uint8_t fbuf_clat8[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((aligned(32)));
+static uint8_t fbuf_overlay[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((section("NC_BSS"),aligned(32)));
+static uint8_t drp_work_buf[((FRAME_BUFFER_STRIDE * ((FRAME_BUFFER_HEIGHT / 3) + 2)) * 2) * 3]__attribute((section("NC_BSS")));
+static uint8_t nc_memory[512] __attribute((section("NC_BSS")));
+static uint8_t drp_lib_id[R_DK2_TILE_NUM] = {0};
+static Thread drpTask(osPriorityHigh);
+
+#if RAM_TABLE_DYNAMIC_LOADING
+static uint8_t ram_drp_lib_bayer2grayscale[sizeof(g_drp_lib_bayer2grayscale)]__attribute((aligned(32)));
+static uint8_t ram_drp_lib_median_blur[sizeof(g_drp_lib_median_blur)]__attribute((aligned(32)));
+static uint8_t ram_drp_lib_canny_calculate[sizeof(g_drp_lib_canny_calculate)]__attribute((aligned(32)));
+static uint8_t ram_drp_lib_canny_hysterisis[sizeof(g_drp_lib_canny_hysterisis)]__attribute((aligned(32)));
+#endif
+
+static const uint32_t clut_data_resut[] = {0x00000000, 0xff00ff00};  // ARGB8888
+
+static void IntCallbackFunc_Vfield(DisplayBase::int_type_t int_type) {
+    drpTask.flags_set(DRP_FLG_CAMER_IN);
+}
+
+static void cb_drp_finish(uint8_t id) {
+    uint32_t tile_no;
+    uint32_t set_flgs = 0;
+
+    // Change the operation state of the DRP library notified by the argument to finish
+    for (tile_no = 0; tile_no < R_DK2_TILE_NUM; tile_no++) {
+        if (drp_lib_id[tile_no] == id) {
+            set_flgs |= (1 << tile_no);
+        }
+    }
+    drpTask.flags_set(set_flgs);
+}
+
+static void Start_Video_Camera(void) {
+    // Video capture setting (progressive form fixed)
+    Display.Video_Write_Setting(
+        DisplayBase::VIDEO_INPUT_CHANNEL_0,
+        DisplayBase::COL_SYS_NTSC_358,
+        (void *)fbuf_bayer,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::VIDEO_FORMAT_RAW8,
+        DisplayBase::WR_RD_WRSWA_NON,
+        VIDEO_PIXEL_VW,
+        VIDEO_PIXEL_HW
+    );
+    EasyAttach_CameraStart(Display, DisplayBase::VIDEO_INPUT_CHANNEL_0);
+}
+
+static void Start_LCD_Display(void) {
+    DisplayBase::rect_t rect;
+    DisplayBase::clut_t clut_param;
+
+    rect.vs = 0;
+    rect.vw = VIDEO_PIXEL_VW;
+    rect.hs = 0;
+    rect.hw = VIDEO_PIXEL_HW;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_0,
+        (void *)fbuf_clat8,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::GRAPHICS_FORMAT_CLUT8,
+        DisplayBase::WR_RD_WRSWA_32_16_8BIT,
+        &rect
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_0);
+
+    memset(fbuf_overlay, 0, sizeof(fbuf_overlay));
+    clut_param.color_num = sizeof(clut_data_resut) / sizeof(uint32_t);
+    clut_param.clut = clut_data_resut;
+
+    rect.vs = 0;
+    rect.vw = VIDEO_PIXEL_VW;
+    rect.hs = 0;
+    rect.hw = VIDEO_PIXEL_HW;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_2,
+        (void *)fbuf_overlay,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::GRAPHICS_FORMAT_CLUT8,
+        DisplayBase::WR_RD_WRSWA_32_16_8BIT,
+        &rect,
+        &clut_param
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_2);
+
+    ThisThread::sleep_for(50);
+    EasyAttach_LcdBacklight(true);
+}
+
+static void drp_task(void) {
+    uint32_t idx;
+    uint32_t drp_time[8];
+    char str[64];
+    Timer t;
+    AsciiFont ascii_font(fbuf_overlay, VIDEO_PIXEL_HW, VIDEO_PIXEL_VW, FRAME_BUFFER_STRIDE, DATA_SIZE_PER_PIC);
+
+    EasyAttach_Init(Display);
+    Start_LCD_Display();
+    // Interrupt callback function setting (Field end signal for recording function in scaler 0)
+    Display.Graphics_Irq_Handler_Set(DisplayBase::INT_TYPE_S0_VFIELD, 0, IntCallbackFunc_Vfield);
+    Start_Video_Camera();
+
+#if RAM_TABLE_DYNAMIC_LOADING
+    // Copy to RAM to increase the speed of dynamic loading.
+    memcpy(ram_drp_lib_bayer2grayscale, g_drp_lib_bayer2grayscale, sizeof(ram_drp_lib_bayer2grayscale));
+    memcpy(ram_drp_lib_median_blur, g_drp_lib_median_blur, sizeof(ram_drp_lib_median_blur));
+    memcpy(ram_drp_lib_canny_calculate, g_drp_lib_canny_calculate, sizeof(ram_drp_lib_canny_calculate));
+    memcpy(ram_drp_lib_canny_hysterisis, g_drp_lib_canny_hysterisis, sizeof(ram_drp_lib_canny_hysterisis));
+#endif
+
+    R_DK2_Initialize();
+
+    t.start();
+
+    while (true) {
+        ThisThread::flags_wait_all(DRP_FLG_CAMER_IN);
+
+        /* Load DRP Library            */
+        /*        +------------------+ */
+        /* tile 0 | Bayer2Grayscale  | */
+        /*        +------------------+ */
+        /* tile 1 | Bayer2Grayscale  | */
+        /*        +------------------+ */
+        /* tile 2 | Bayer2Grayscale  | */
+        /*        +------------------+ */
+        /* tile 3 | Bayer2Grayscale  | */
+        /*        +------------------+ */
+        /* tile 4 | Bayer2Grayscale  | */
+        /*        +------------------+ */
+        /* tile 5 | Bayer2Grayscale  | */
+        /*        +------------------+ */
+        /* fbuf_bayer -> fbuf_work0    */
+        t.reset();
+        R_DK2_Load(
+#if RAM_TABLE_DYNAMIC_LOADING
+                   ram_drp_lib_bayer2grayscale,
+#else
+                   g_drp_lib_bayer2grayscale,
+#endif
+                   R_DK2_TILE_0 | R_DK2_TILE_1 | R_DK2_TILE_2 | R_DK2_TILE_3 | R_DK2_TILE_4 | R_DK2_TILE_5,
+                   R_DK2_TILE_PATTERN_1_1_1_1_1_1, NULL, &cb_drp_finish, drp_lib_id);
+        R_DK2_Activate(0, 0);
+        drp_time[0] = t.read_us();
+
+        t.reset();
+        r_drp_bayer2grayscale_t * param_b2g = (r_drp_bayer2grayscale_t *)nc_memory;
+        for (idx = 0; idx < R_DK2_TILE_NUM; idx++) {
+            param_b2g[idx].src    = (uint32_t)fbuf_bayer + (VIDEO_PIXEL_HW * (VIDEO_PIXEL_VW / R_DK2_TILE_NUM) * idx);
+            param_b2g[idx].dst    = (uint32_t)fbuf_work0 + (VIDEO_PIXEL_HW * (VIDEO_PIXEL_VW / R_DK2_TILE_NUM) * idx);
+            param_b2g[idx].width  = VIDEO_PIXEL_HW;
+            param_b2g[idx].height = VIDEO_PIXEL_VW / R_DK2_TILE_NUM;
+            param_b2g[idx].top    = (idx == 0) ? 1 : 0;
+            param_b2g[idx].bottom = (idx == 5) ? 1 : 0;
+            R_DK2_Start(drp_lib_id[idx], (void *)&param_b2g[idx], sizeof(r_drp_bayer2grayscale_t));
+        }
+        ThisThread::flags_wait_all(DRP_FLG_TILE_ALL);
+        R_DK2_Unload(0, drp_lib_id);
+        drp_time[1] = t.read_us();
+
+
+        /* Load DRP Library            */
+        /*        +------------------+ */
+        /* tile 0 | MedianBlur       | */
+        /*        +------------------+ */
+        /* tile 1 | MedianBlur       | */
+        /*        +------------------+ */
+        /* tile 2 | MedianBlur       | */
+        /*        +------------------+ */
+        /* tile 3 | MedianBlur       | */
+        /*        +------------------+ */
+        /* tile 4 | MedianBlur       | */
+        /*        +------------------+ */
+        /* tile 5 | MedianBlur       | */
+        /*        +------------------+ */
+        /* fbuf_work0 -> fbuf_work1    */
+        t.reset();
+        R_DK2_Load(
+#if RAM_TABLE_DYNAMIC_LOADING
+                   ram_drp_lib_median_blur,
+#else
+                   g_drp_lib_median_blur,
+#endif
+                   R_DK2_TILE_0 | R_DK2_TILE_1 | R_DK2_TILE_2 | R_DK2_TILE_3 | R_DK2_TILE_4 | R_DK2_TILE_5,
+                   R_DK2_TILE_PATTERN_1_1_1_1_1_1, NULL, &cb_drp_finish, drp_lib_id);
+        R_DK2_Activate(0, 0);
+        drp_time[2] = t.read_us();
+
+        t.reset();
+        r_drp_median_blur_t * param_median = (r_drp_median_blur_t *)nc_memory;
+        for (idx = 0; idx < R_DK2_TILE_NUM; idx++) {
+            param_median[idx].src    = (uint32_t)fbuf_work0 + (VIDEO_PIXEL_HW * (VIDEO_PIXEL_VW / R_DK2_TILE_NUM) * idx);
+            param_median[idx].dst    = (uint32_t)fbuf_work1 + (VIDEO_PIXEL_HW * (VIDEO_PIXEL_VW / R_DK2_TILE_NUM) * idx);
+            param_median[idx].width  = VIDEO_PIXEL_HW;
+            param_median[idx].height = VIDEO_PIXEL_VW / R_DK2_TILE_NUM;
+            param_median[idx].top    = (idx == 0) ? 1 : 0;
+            param_median[idx].bottom = (idx == 5) ? 1 : 0;
+            R_DK2_Start(drp_lib_id[idx], (void *)&param_median[idx], sizeof(r_drp_median_blur_t));
+        }
+        ThisThread::flags_wait_all(DRP_FLG_TILE_ALL);
+        R_DK2_Unload(0, drp_lib_id);
+        drp_time[3] = t.read_us();
+
+
+        /* Load DRP Library            */
+        /*        +------------------+ */
+        /* tile 0 |                  | */
+        /*        + CannyCalculate   + */
+        /* tile 1 |                  | */
+        /*        +------------------+ */
+        /* tile 2 |                  | */
+        /*        + CannyCalculate   + */
+        /* tile 3 |                  | */
+        /*        +------------------+ */
+        /* tile 4 |                  | */
+        /*        + CannyCalculate   + */
+        /* tile 5 |                  | */
+        /*        +------------------+ */
+        /* fbuf_work1 -> fbuf_work0    */
+        t.reset();
+        R_DK2_Load(
+#if RAM_TABLE_DYNAMIC_LOADING
+                   ram_drp_lib_canny_calculate,
+#else
+                   g_drp_lib_canny_calculate,
+#endif
+                   R_DK2_TILE_0 | R_DK2_TILE_2 | R_DK2_TILE_4,
+                   R_DK2_TILE_PATTERN_2_2_2, NULL, &cb_drp_finish, drp_lib_id);
+        R_DK2_Activate(0, 0);
+        drp_time[4] = t.read_us();
+
+        t.reset();
+        r_drp_canny_calculate_t * param_canny_cal = (r_drp_canny_calculate_t *)nc_memory;
+        for (idx = 0; idx < 3; idx++) {
+            param_canny_cal[idx].src    = (uint32_t)fbuf_work1 + (VIDEO_PIXEL_HW * (VIDEO_PIXEL_VW / 3) * idx);
+            param_canny_cal[idx].dst    = (uint32_t)fbuf_work0 + (VIDEO_PIXEL_HW * (VIDEO_PIXEL_VW / 3) * idx);
+            param_canny_cal[idx].width  = VIDEO_PIXEL_HW;
+            param_canny_cal[idx].height = (VIDEO_PIXEL_VW / 3);
+            param_canny_cal[idx].top    = ((idx * 2) == 0) ? 1 : 0;
+            param_canny_cal[idx].bottom = ((idx * 2) == 4) ? 1 : 0;
+            param_canny_cal[idx].work   = (uint32_t)&drp_work_buf[((VIDEO_PIXEL_HW * ((VIDEO_PIXEL_VW / 3) + 2)) * 2) * idx];
+            param_canny_cal[idx].threshold_high = 0x28;
+            param_canny_cal[idx].threshold_low  = 0x18;
+            R_DK2_Start(drp_lib_id[(idx * 2)], (void *)&param_canny_cal[idx], sizeof(r_drp_canny_calculate_t));
+        }
+        ThisThread::flags_wait_all(DRP_FLG_TILE_ALL);
+        R_DK2_Unload(0, drp_lib_id);
+        drp_time[5] = t.read_us();
+
+
+        /* Load DRP Library            */
+        /*        +------------------+ */
+        /* tile 0 |                  | */
+        /*        +                  + */
+        /* tile 1 |                  | */
+        /*        +                  + */
+        /* tile 2 |                  | */
+        /*        + CannyHysterisis  + */
+        /* tile 3 |                  | */
+        /*        +                  + */
+        /* tile 4 |                  | */
+        /*        +                  + */
+        /* tile 5 |                  | */
+        /*        +------------------+ */
+        /* fbuf_work0 -> fbuf_clat8    */
+        t.reset();
+        R_DK2_Load(
+#if RAM_TABLE_DYNAMIC_LOADING
+                   ram_drp_lib_canny_hysterisis,
+#else
+                   g_drp_lib_canny_hysterisis,
+#endif
+                   R_DK2_TILE_0,
+                   R_DK2_TILE_PATTERN_6, NULL, &cb_drp_finish, drp_lib_id);
+        R_DK2_Activate(0, 0);
+        drp_time[6] = t.read_us();
+
+        t.reset();
+        r_drp_canny_hysterisis_t * param_canny_hyst = (r_drp_canny_hysterisis_t *)nc_memory;
+        param_canny_hyst[0].src    = (uint32_t)fbuf_work0;
+        param_canny_hyst[0].dst    = (uint32_t)fbuf_clat8;
+        param_canny_hyst[0].width  = VIDEO_PIXEL_HW;
+        param_canny_hyst[0].height = VIDEO_PIXEL_VW;
+        param_canny_hyst[0].work   = (uint32_t)drp_work_buf;
+        param_canny_hyst[0].iterations = 2;
+        R_DK2_Start(drp_lib_id[0], (void *)&param_canny_hyst[0], sizeof(r_drp_canny_hysterisis_t));
+        ThisThread::flags_wait_all(DRP_FLG_TILE_ALL);
+        R_DK2_Unload(0, drp_lib_id);
+        drp_time[7] = t.read_us();
+
+
+        // Display DRP time
+        sprintf(str, "Bayer2Grayscale : Load %2.1fms + Run %2.1fms",
+                (float_t)drp_time[0] / 1000, (float_t)drp_time[1] / 1000);
+        ascii_font.DrawStr(str, 5, 5 + (AsciiFont::CHAR_PIX_HEIGHT + 1) * 0, 1, 2);
+        sprintf(str, "MedianBlur      : Load %2.1fms + Run %2.1fms",
+                (float_t)drp_time[2] / 1000, (float_t)drp_time[3] / 1000);
+        ascii_font.DrawStr(str, 5, 5 + (AsciiFont::CHAR_PIX_HEIGHT + 1) * 2, 1, 2);
+        sprintf(str, "CannyCalculate  : Load %2.1fms + Run %2.1fms",
+                (float_t)drp_time[4] / 1000, (float_t)drp_time[5] / 1000);
+        ascii_font.DrawStr(str, 5, 5 + (AsciiFont::CHAR_PIX_HEIGHT + 1) * 4, 1, 2);
+        sprintf(str, "CannyHysterisis : Load %2.1fms + Run %2.1fms",
+                (float_t)drp_time[6] / 1000, (float_t)drp_time[7] / 1000);
+        ascii_font.DrawStr(str, 5, 5 + (AsciiFont::CHAR_PIX_HEIGHT + 1) * 6, 1, 2);
+
+        uint32_t time_sum = 0;
+        for (int i = 0; i < 8; i++) {
+            time_sum += drp_time[i];
+        }
+        sprintf(str, "Total           : %2.1fms", (float_t)time_sum / 1000);
+        ascii_font.DrawStr(str, 5, 5 + (AsciiFont::CHAR_PIX_HEIGHT + 1) * 8, 1, 2);
+    }
+}
+
+int main(void) {
+    // Start DRP task
+    drpTask.start(callback(drp_task));
+
+    wait(osWaitForever);
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_21_deep_standby_alarm.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,85 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 21)
+// SAMPLE_PROGRAM_NO 21 : Deep standby and RTC alarm sample
+//
+// Wake up from deep standby every 5 seconds using RTC alarm interrupt.
+// It also wakes up when BUTTON1(SW2) is pressed.
+
+#include "mbed.h"
+#include "AlarmTimer.h"
+#include "DeepStandby.h"
+
+// On-Chip Data Retention RAM
+#if defined ( __CC_ARM ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
+#define DATA_RETENTION_RAM ".bss.NoInit"
+#else
+#define DATA_RETENTION_RAM "NV_DATA"
+#endif
+static int wake_up_cnt __attribute((section(DATA_RETENTION_RAM)));
+
+int main() {
+    time_t seconds;
+    DeepStandby::cancel_src_simple_t cancel_src;
+
+    if (DeepStandby::GetCancelSourceSimple(&cancel_src) == false) {
+        // Reset start
+        printf("Reset start\r\n");
+        // initialization of On-Chip Data Retention RAM
+        wake_up_cnt = 0;
+    } else {
+        // Deep standby cancel
+        wake_up_cnt++;
+        printf("Deep standby cancel %d :", wake_up_cnt);
+        if (cancel_src.button0) {  // Works with RZ_A2M_EVB and SEMB1402.
+            printf(" BUTTON0");
+        }
+        if (cancel_src.button1) {  // Works with RZ_A2M_EVB and RZ_A2M_SBEV.
+            printf(" BUTTON1");
+        }
+        if (cancel_src.rtc) {      // Works with RZ_A1H, RZ_A2M_EVB, RZ_A2M_SBEV and SEMB1402.
+            printf(" RTC");
+        }
+        printf("\r\n");
+    }
+
+    // RTC time
+    seconds = time(NULL);
+    struct tm *t = localtime(&seconds);
+    printf("RTC time : %02d/%02d/%04d %02d:%02d:%02d\r\n\r\n",
+           t->tm_mon + 1, t->tm_mday, t->tm_year + 1900, t->tm_hour, t->tm_min, t->tm_sec);
+
+    // Set alarm interrupt
+    AlarmTimer::set(seconds + 5);  // 5 seconds later
+
+    // Set deep standby mode
+    cancel_src.button0 = false;    // Works with RZ_A2M_EVB and SEMB1402. (Used with custom boot loader)
+    cancel_src.button1 = true;     // Works with RZ_A2M_EVB and RZ_A2M_SBEV.
+    cancel_src.rtc     = true;     // Works with RZ_A1H, RZ_A2M_EVB, RZ_A2M_SBEV and SEMB1402.
+    DeepStandby::SetDeepStandbySimple(&cancel_src);
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_22_hdmi_disp_ssif.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,182 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+
+#if (SAMPLE_PROGRAM_NO == 22)
+// SAMPLE_PROGRAM_NO 22 : HDMI output & SSIF wav playback Sample
+//
+// Requirements
+//   RZ/A2M Evaluation Board Kit : Display Output Board
+//   SBEV-RZ/A2M                 : LVDS To HDMI Board
+//   SEMB1402                    : LVDS To HDMI Board
+
+#if defined(TARGET_SEMB1402) || defined(TARGET_RZ_A2M_SBEV)
+#error "Audio is not supported."
+#endif
+
+#include "mbed.h"
+#include "FATFileSystem.h"
+#include "SdUsbConnect.h"
+#include "EasyPlayback.h"
+#include "EasyDec_WavCnv2ch.h"
+#include "EasyAttach_CameraAndLCD.h"
+#include "dcache-control.h"
+#include "AsciiFont.h"
+
+static EasyPlayback AudioPlayer;
+
+#define FILE_NAME_LEN          (64)
+#define MOUNT_NAME             "storage"
+
+static InterruptIn skip_btn(USER_BUTTON0);
+
+static void skip_btn_fall(void) {
+    AudioPlayer.skip();
+}
+
+/*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128
+    in accordance with the frame buffer burst transfer mode. */
+#define VIDEO_PIXEL_HW         (640)
+#define VIDEO_PIXEL_VW         (480)
+
+#define DATA_SIZE_PER_PIC      (1u)
+#define FRAME_BUFFER_STRIDE    (((VIDEO_PIXEL_HW * DATA_SIZE_PER_PIC) + 31u) & ~31u)
+#define FRAME_BUFFER_HEIGHT    (VIDEO_PIXEL_VW)
+
+#define DRP_FLG_CAMER_IN       (0x00000100)
+
+static DisplayBase Display;
+static uint8_t fbuf_clat8[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((aligned(32)));
+static uint8_t fbuf_overlay[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((section("NC_BSS"),aligned(32)));
+static Thread drpTask(osPriorityHigh);
+static Thread hdmiTask(osPriorityHigh);
+
+static const uint32_t clut_data_resut[] = {0x00000000, 0xff00ff00};  // ARGB8888
+
+static void IntCallbackFunc_Vfield(DisplayBase::int_type_t int_type) {
+    drpTask.flags_set(DRP_FLG_CAMER_IN);
+}
+
+static void Start_LCD_Display(void) {
+    DisplayBase::rect_t rect;
+    DisplayBase::clut_t clut_param;
+
+    rect.vs = 0;
+    rect.vw = VIDEO_PIXEL_VW;
+    rect.hs = 0;
+    rect.hw = VIDEO_PIXEL_HW;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_0,
+        (void *)fbuf_clat8,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::GRAPHICS_FORMAT_CLUT8,
+        DisplayBase::WR_RD_WRSWA_32_16_8BIT,
+        &rect
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_0);
+
+    memset(fbuf_overlay, 0, sizeof(fbuf_overlay));
+    clut_param.color_num = sizeof(clut_data_resut) / sizeof(uint32_t);
+    clut_param.clut = clut_data_resut;
+
+    rect.vs = 0;
+    rect.vw = VIDEO_PIXEL_VW;
+    rect.hs = 0;
+    rect.hw = VIDEO_PIXEL_HW;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_2,
+        (void *)fbuf_overlay,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::GRAPHICS_FORMAT_CLUT8,
+        DisplayBase::WR_RD_WRSWA_32_16_8BIT,
+        &rect,
+        &clut_param
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_2);
+
+    ThisThread::sleep_for(50);
+    EasyAttach_LcdBacklight(true);
+}
+
+static void drp_task(void) {
+    int i = 0;
+    char str[64];
+
+    AsciiFont ascii_font(fbuf_overlay, VIDEO_PIXEL_HW, VIDEO_PIXEL_VW, FRAME_BUFFER_STRIDE, DATA_SIZE_PER_PIC);
+
+    EasyAttach_Init(Display);
+    Start_LCD_Display();
+    // Interrupt callback function setting (Field end signal for recording function in scaler 0)
+    Display.Graphics_Irq_Handler_Set(DisplayBase::INT_TYPE_S0_VFIELD, 0, IntCallbackFunc_Vfield);
+
+    while (true) {
+        sprintf(str, "HDMI TEST %d", i);
+        ascii_font.DrawStr(str, 5, 5 + (AsciiFont::CHAR_PIX_HEIGHT + 1) * 0, 1, 2);
+        i++;
+        ThisThread::sleep_for(1000);
+    }
+}
+
+int main(void) {
+    DIR  * d;
+    struct dirent * p;
+    char file_path[sizeof("/" MOUNT_NAME "/") + FILE_NAME_LEN];
+    SdUsbConnect storage(MOUNT_NAME);
+
+    // Start DRP task
+    drpTask.start(callback(drp_task));
+
+    // decoder setting
+    AudioPlayer.add_decoder<EasyDec_WavCnv2ch>(".wav");
+    AudioPlayer.add_decoder<EasyDec_WavCnv2ch>(".WAV");
+
+    AudioPlayer.outputVolume(0.5);
+
+    // button setting
+    skip_btn.fall(&skip_btn_fall);
+
+    while (1) {
+        // connect wait
+        storage.wait_connect();
+
+        // file search
+        d = opendir("/" MOUNT_NAME "/");
+        if (d != NULL) {
+            while ((p = readdir(d)) != NULL) {
+                size_t len = strlen(p->d_name);
+                if (len < FILE_NAME_LEN) {
+                    // make file path
+                    sprintf(file_path, "/%s/%s", MOUNT_NAME, p->d_name);
+                    printf("%s\r\n", file_path);
+
+                    // playback
+                    AudioPlayer.play(file_path);
+                }
+            }
+            closedir(d);
+        }
+    }
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_23_mipi_hdmi.cpp	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,262 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#include "sample_select.h"
+#include "mbed.h"
+
+#define DEBUG_BAUDRATE          115200
+
+#if (SAMPLE_PROGRAM_NO == 23)
+// SAMPLE_PROGRAM_NO 23 :  HDMI output & MIPI Sample
+//
+// Please set the value of "camera-type" in "mbed_app.json" to null or "CAMERA_RASPBERRY_PI".
+//
+//        "camera-type":{
+//            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+//            "value": null
+//        },
+//
+//        or
+//
+//        "camera-type":{
+//            "help": "Please see EasyAttach_CameraAndLCD/README.md",
+//            "value": "CAMERA_RASPBERRY_PI"
+//        },
+//
+// Requirements
+//   RZ/A2M Evaluation Board Kit : Display Output Board
+//   SBEV-RZ/A2M                 : LVDS To HDMI Board
+//   SEMB1402                    : LVDS To HDMI Board
+
+#if !defined(TARGET_RZ_A2XX)
+#error "DRP and MIPI are not supported."
+#endif
+#if MBED_CONF_APP_CAMERA_TYPE != CAMERA_RASPBERRY_PI
+#error Please set the value of "camera-type" in "mbed_app.json" to "CAMERA_RASPBERRY_PI" and build.
+#endif
+
+#include "mbed.h"
+#include "EasyAttach_CameraAndLCD.h"
+#include "AsciiFont.h"
+#include "r_dk2_if.h"
+#include "r_drp_simple_isp.h"
+
+/*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128
+    in accordance with the frame buffer burst transfer mode. */
+#define VIDEO_PIXEL_HW         LCD_PIXEL_WIDTH
+#define VIDEO_PIXEL_VW         LCD_PIXEL_HEIGHT
+
+#define FRAME_BUFFER_STRIDE    (((VIDEO_PIXEL_HW * 1) + 31u) & ~31u)
+#define FRAME_BUFFER_STRIDE_2  (((VIDEO_PIXEL_HW * 2) + 31u) & ~31u)
+#define FRAME_BUFFER_HEIGHT    (VIDEO_PIXEL_VW)
+
+#define OVL_WIDTH              (AsciiFont::CHAR_PIX_WIDTH * 2 * 11)
+#define OVL_STRIDE             (((OVL_WIDTH * 1) + 31u) & ~31u)
+#define OVL_HEIGHT             (AsciiFont::CHAR_PIX_HEIGHT * 2)
+
+#define DRP_FLG_CAMER_IN       (0x00000100)
+
+#define WB_DAYLIGHT            (0)
+#define WB_CLOUDY              (1)
+#define WB_FLUORESCENT         (2)
+#define WB_TUNGSTEN            (3)
+
+static DisplayBase Display;
+static uint8_t fbuf_bayer[FRAME_BUFFER_STRIDE * FRAME_BUFFER_HEIGHT]__attribute((aligned(128)));
+static uint8_t fbuf_yuv[FRAME_BUFFER_STRIDE_2 * FRAME_BUFFER_HEIGHT]__attribute((aligned(32)));
+static uint8_t fbuf_overlay[OVL_STRIDE * OVL_HEIGHT]__attribute((section("NC_BSS"),aligned(32)));
+
+static r_drp_simple_isp_t param_isp __attribute((section("NC_BSS")));
+static uint8_t drp_lib_id[R_DK2_TILE_NUM] = {0};
+static Thread drpTask(osPriorityHigh);
+static uint32_t isp_wb_mode_req;
+static uint32_t isp_wb_mode;
+
+static const uint32_t clut_data_resut[] = {0x00000000, 0xff00ff00};  // ARGB8888
+
+static void IntCallbackFunc_Vfield(DisplayBase::int_type_t int_type) {
+    drpTask.flags_set(DRP_FLG_CAMER_IN);
+}
+
+static void cb_drp_finish(uint8_t id) {
+    // do nothing
+}
+
+static void Start_Video_Camera(void) {
+    // Video capture setting (progressive form fixed)
+    Display.Video_Write_Setting(
+        DisplayBase::VIDEO_INPUT_CHANNEL_0,
+        DisplayBase::COL_SYS_NTSC_358,
+        (void *)fbuf_bayer,
+        FRAME_BUFFER_STRIDE,
+        DisplayBase::VIDEO_FORMAT_RAW8,
+        DisplayBase::WR_RD_WRSWA_NON,
+        VIDEO_PIXEL_VW,
+        VIDEO_PIXEL_HW
+    );
+    EasyAttach_CameraStart(Display, DisplayBase::VIDEO_INPUT_CHANNEL_0);
+}
+
+static void Start_LCD_Display(void) {
+    DisplayBase::rect_t rect;
+    DisplayBase::clut_t clut_param;
+
+    rect.vs = 0;
+    rect.vw = VIDEO_PIXEL_VW;
+    rect.hs = 0;
+    rect.hw = VIDEO_PIXEL_HW;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_0,
+        (void *)fbuf_yuv,
+        FRAME_BUFFER_STRIDE_2,
+        DisplayBase::GRAPHICS_FORMAT_YCBCR422,
+        DisplayBase::WR_RD_WRSWA_32_16_8BIT,
+        &rect
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_0);
+
+    memset(fbuf_overlay, 0, sizeof(fbuf_overlay));
+    clut_param.color_num = sizeof(clut_data_resut) / sizeof(uint32_t);
+    clut_param.clut = clut_data_resut;
+
+    rect.vs = 5;
+    rect.vw = OVL_HEIGHT;
+    rect.hs = 5;
+    rect.hw = OVL_WIDTH;
+    Display.Graphics_Read_Setting(
+        DisplayBase::GRAPHICS_LAYER_2,
+        (void *)fbuf_overlay,
+        OVL_STRIDE,
+        DisplayBase::GRAPHICS_FORMAT_CLUT8,
+        DisplayBase::WR_RD_WRSWA_32_16_8BIT,
+        &rect,
+        &clut_param
+    );
+    Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_2);
+
+    ThisThread::sleep_for(50);
+    EasyAttach_LcdBacklight(true);
+}
+
+static void button_fall(void) {
+    if (isp_wb_mode_req < WB_TUNGSTEN) {
+        isp_wb_mode_req++;
+    } else {
+        isp_wb_mode_req = WB_DAYLIGHT;
+    }
+}
+
+static void drp_task(void) {
+    AsciiFont ascii_font(fbuf_overlay, OVL_WIDTH, OVL_HEIGHT, OVL_STRIDE, 1);
+    char str[64];
+
+    EasyAttach_Init(Display);
+    Start_LCD_Display();
+    // Interrupt callback function setting (Field end signal for recording function in scaler 0)
+    Display.Graphics_Irq_Handler_Set(DisplayBase::INT_TYPE_S0_VFIELD, 0, IntCallbackFunc_Vfield);
+    Start_Video_Camera();
+
+    R_DK2_Initialize();
+
+    /* Load DRP Library                 */
+    /*        +-----------------------+ */
+    /* tile 0 |                       | */
+    /*        +                       + */
+    /* tile 1 |                       | */
+    /*        +                       + */
+    /* tile 2 |                       | */
+    /*        + SimpleIsp bayer2yuv_6 + */
+    /* tile 3 |                       | */
+    /*        +                       + */
+    /* tile 4 |                       | */
+    /*        +                       + */
+    /* tile 5 |                       | */
+    /*        +-----------------------+ */
+    R_DK2_Load(g_drp_lib_simple_isp_bayer2yuv_6,
+               R_DK2_TILE_0,
+               R_DK2_TILE_PATTERN_6, NULL, &cb_drp_finish, drp_lib_id);
+    R_DK2_Activate(0, 0);
+
+    memset(&param_isp, 0, sizeof(param_isp));
+    param_isp.src    = (uint32_t)fbuf_bayer;
+    param_isp.dst    = (uint32_t)fbuf_yuv;
+    param_isp.width  = VIDEO_PIXEL_HW;
+    param_isp.height = VIDEO_PIXEL_VW;
+    param_isp.gain_r = 0x1266;
+    param_isp.gain_g = 0x0CB0;
+    param_isp.gain_b = 0x1359;
+
+    isp_wb_mode_req = WB_DAYLIGHT;
+    isp_wb_mode = WB_DAYLIGHT;
+    sprintf(str, "Daylight");
+    ascii_font.DrawStr(str, 0, 0 + (AsciiFont::CHAR_PIX_HEIGHT + 1) * 0, 1, 2);
+
+    InterruptIn button(USER_BUTTON0);
+    button.fall(&button_fall);
+
+    while (true) {
+        ThisThread::flags_wait_all(DRP_FLG_CAMER_IN);
+        if (isp_wb_mode_req != isp_wb_mode) {
+            isp_wb_mode = isp_wb_mode_req;
+            switch (isp_wb_mode) {
+                case WB_DAYLIGHT:
+                    param_isp.gain_r = 0x1266;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x1359;
+                    sprintf(str, "Daylight");
+                    break;
+                case WB_CLOUDY:
+                    param_isp.gain_r = 0x1400;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x11CA;
+                    sprintf(str, "Cloudy");
+                    break;
+                case WB_FLUORESCENT:
+                    param_isp.gain_r = 0x1000;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x163D;
+                    sprintf(str, "Fluorescent");
+                    break;
+                case WB_TUNGSTEN:
+                    param_isp.gain_r = 0x0E66;
+                    param_isp.gain_g = 0x0CB0;
+                    param_isp.gain_b = 0x1876;
+                    sprintf(str, "Tungsten");
+                    break;
+            }
+            memset(fbuf_overlay, 0, sizeof(fbuf_overlay));
+            ascii_font.DrawStr(str, 0, 0 + (AsciiFont::CHAR_PIX_HEIGHT + 1) * 0, 1, 2);
+        }
+        R_DK2_Start(drp_lib_id[0], (void *)&param_isp, sizeof(r_drp_simple_isp_t));
+    }
+}
+
+int main(void) {
+
+// Start DRP task
+    drpTask.start(callback(drp_task));
+
+    ThisThread::sleep_for(osWaitForever);
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample_programs/sample_select.h	Tue Sep 15 10:28:22 2020 +0900
@@ -0,0 +1,54 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2019 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#ifndef SAMPLE_SELECT_H
+#define SAMPLE_SELECT_H
+
+// You can try each sample program by changing the following macro.
+#define SAMPLE_PROGRAM_NO  0
+
+// No.  Program file                   Description
+//
+//  0 : sample_00_led_rtc_analogin     DigitalOut, InterruptIn, RTC, Timer and AnalogIn sample
+//  1 : sample_01_flash_write          FlashAPI sample
+//  2 : sample_02_ssif_loop_back       SSIF loop back sample
+//  4 : sample_04_ssif_wav_playback    SSIF wav playback sample (use USB memory or SD card)
+//  7 : sample_07_usb_func_serial      USBSerial (CDC) sample
+//  8 : sample_08_usb_func_mouse       USBMouse sample
+//  9 : sample_09_usb_func_keyboard    USBKeyboard sample
+// 10 : sample_10_usb_func_midi        USBMIDI sample
+// 11 : sample_11_usb_func_audio_1     USBAudio sample
+// 12 : sample_12_usb_func_audio_2     USBAudio and SSIF sample
+// 13 : sample_13_ether_http           Ether HTTP sample
+// 14 : sample_14_ether_https          Ether HTTPS sample
+// 15 : sample_15_ceu_lcd_pwm          CEU, LCD and PWM sample
+// 16 : sample_16_usb_func_msd_1       USBMSD and FlashAPI sample
+// 17 : sample_17_usb_func_msd_2       USBMSD and FlashAPI sample advanced version
+// 18 : sample_18_mipi_drp_lcd         MIPI, DRP and LCD sample
+// 19 : sample_19_mipi_drp_diplayapp   MIPI, DRP and USBSerial (CDC) sample (use "DisplayApp")
+// 20 : sample_20_drp_dynamic_loading  DRP Dynamic Loading Sample
+// 21 : sample_21_deep_standby_alarm   Deep standby and RTC alarm sample
+// 22 : sample_22_hdmi_disp_ssif       HDMI output and SSIF wav playback Sample
+// 23 : sample_23_mipi_hdmi            HDMI output and MIPI Sample
+
+#endif // SAMPLE_SELECT_H