Renesas
Renesas Electronics Corporation (TSE: 6723), the world's number one supplier of microcontrollers, is a premier supplier of advanced semiconductor solutions including microcontrollers, SoC solutions and a broad range of analog and power devices.
GR PEACH knowhow database
Information
Japanese version is available in lower part of this page.
このページの後半に日本語版が用意されています.
[other]How to run a program stored in the internal SRAM¶
Access performance to internal SRAM is faster than access performance to serial flash memory. By placing the program in the internal RAM, it is possible to improve the program execution performance of GR-PEACH. The way to run a program stored in the internal SRAM is below:
- Delete Mbed library.Then Import mbed-dev library.
- Select "mbed" library and delete it as shown below.
- Import mbed-dev library.
Import librarymbed-dev
mbed library sources. Supersedes mbed-src.
- Check "Update all libraries to the latest version".
- Get the source code by clicking "Import" button.
- Select "mbed" library and delete it as shown below.
- Overwite or add following files of mbed-dev.
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/RZ_A1_Init.c … Beginning file (about line 29)
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/gic.c … Beginning file (about line 36)
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/mmu_Renesas_RZ_A1.c … Beginning file (about line 37)
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/pl310.c … Beginning file (about line 36)
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/system_MBRZA1H.c … Beginning file (about line 37)
Add the following code.
#if defined ( __CC_ARM ) #pragma arm section code = "HANDLER" #endif
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/TOOLCHAIN_ARM_STD/startup_MBRZA1H.S
Change the code as follows.
about line 129
AREA |.text|, CODE, READONLY ↓ AREA HANDLER, CODE, READONLY
line 212 and 213
LDR R0, =InitMemorySubsystem BLX R0 ↓ ;LDR R0, =InitMemorySubsystem ;BLX R0
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/mmu_Renesas_RZ_A1.c
In the following code
about line 95-97
#if defined( __ICCARM__ ) #define VECTORS_SIZE (((uint32_t)Image$$VECTORS$$Limit >> 20) - ((uint32_t)Image$$VECTORS$$Base >> 20) + 1) #define RO_DATA_SIZE (((uint32_t)Image$$RO_DATA$$Limit >> 20) - ((uint32_t)Image$$RO_DATA$$Base >> 20) + 1)
Add the following code on upper line of about line 95.
Add on the upper line of about line 95
#if 1 /* RAM Exe */ extern uint32_t Image$$RO_CODE$$Base; extern uint32_t Image$$RO_CODE$$Limit; #if defined( __ICCARM__ ) #define RO_CODE_SIZE (((uint32_t)Image$$RO_CODE$$Limit >> 20) - ((uint32_t)Image$$RO_CODE$$Base >> 20) + 1) #else #define RO_CODE_SIZE (((uint32_t)&Image$$RO_CODE$$Limit >> 20) - ((uint32_t)&Image$$RO_CODE$$Base >> 20) + 1) #endif #endif
In the following code
about line 199-211
#if defined( __ICCARM__ ) //Define Image __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$RO_DATA$$Base, RO_DATA_SIZE, Sect_Normal_RO); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$RW_DATA$$Base, RW_DATA_SIZE, Sect_Normal_RW); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$ZI_DATA$$Base, ZI_DATA_SIZE, Sect_Normal_RW); #endif
Add the following code on upper line of about line 199.
Add on the upper line of about line 199
#if 1 /* RAM Exe */ #if defined( __ICCARM__ ) //Define Image __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$VECTORS$$Base, VECTORS_SIZE, Sect_Normal_Cod); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$RO_DATA$$Base, RO_DATA_SIZE, Sect_Normal_RO); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$RO_CODE$$Base, RO_CODE_SIZE, Sect_Normal_Cod); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$RW_DATA$$Base, RW_DATA_SIZE, Sect_Normal_RW); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$ZI_DATA$$Base, ZI_DATA_SIZE, Sect_Normal_RW); #else //Define Image __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$VECTORS$$Base, VECTORS_SIZE, Sect_Normal_Cod); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$RO_DATA$$Base, RO_DATA_SIZE, Sect_Normal_RO); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$RO_CODE$$Base, RO_CODE_SIZE, Sect_Normal_Cod); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$RW_DATA$$Base, RW_DATA_SIZE, Sect_Normal_RW); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$ZI_DATA$$Base, ZI_DATA_SIZE, Sect_Normal_RW); #endif #else
Add the following code on lower line of about line 211.
Add on the lower line of about line 211
#endif
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/TOOLCHAIN_ARM_STD/MBRZA1H.sct
- targets/hal/TARGET_RENESAS/TARGET_RZ_A1H/mbed_overrides.c
Overwite or add the following file.
Packed zip file
Note¶
Program code is stored in address below. Do not allocate variables to these address.
0x20020000 - 0x200FFFFF
[other]How to change sct file in Mbed online compiler¶
You can not edit scr file in Mbed online compiler. Please import sct file by the way shown below.
- Click "import" button on Mbed compiler.
- Click "Upload" tag.
- Click "browse" button, and select file to upload.
- Select file to import on Mbed compiler.
- Click "Import!" button.
Note¶
- Please use mbed-dev lib instead of Mbed lib.
sct file path : targets\cmsis\TARGET_RENESAS\TARGET_RZ_A1H\TOOLCHAIN_ARM_STD\MBRZA1H.sct
- Relationship of 60000000 address and 20000000 address(mirror address) are as follows.
Address | Mirror address |
---|---|
H'20000000 - H'200FFFFF | H'60000000 - H'600FFFFF |
H'20500000 - H'205FFFFF | H'60100000 - H'601FFFFF |
H'20600000 - H'206FFFFF | H'60200000 - H'602FFFFF |
H'20100000 - H'201FFFFF | H'60300000 - H'603FFFFF |
H'20200000 - H'202FFFFF | H'60400000 - H'604FFFFF |
H'20700000 - H'207FFFFF | H'60500000 - H'605FFFFF |
H'20800000 - H'208FFFFF | H'60600000 - H'606FFFFF |
H'20300000 - H'203FFFFF | H'60700000 - H'607FFFFF |
H'20400000 - H'204FFFFF | H'60800000 - H'608FFFFF |
H'20900000 - H'209FFFFF | H'60900000 - H'609FFFFF |
If you compile by using ARMCC, GR-PEACH decleare H'60900000-H'609FFFFF as non-cache area.
If you change the scattter file and increase the non-cache area, you must be careful.
(If you compile by using GCC, GR-PEACH decleare H'20900000-H'209FFFFF as non-cache area.)
For more information, please refer to the Hardware manual.
[USB]How to change the USB Speed¶
You can switch Hi-Speed or Full-speed by the procedure below.
(define 1:Hi-Speed, define 0:Full Speed)
USBHost
USBHost\USBHost\TARGET_RENESAS\TARGET_RZ_A1H\usb_host_setting.h
#define USB_HOST_HISPEED 1 ↓ #define USB_HOST_HISPEED 0
USBDevice
\USBDevice\USBDevice\TARGET_RENESAS\TARGET_RZ_A1H\usb_function_setting.h
#define USB_FUNCTION_HISPEED 1 ↓ #define USB_FUNCTION_HISPEED 0
[USB]How to use the USB1 function of GR-PEACH rev.C¶
You can use the USB1 connector by the procedure below.
(define 0:USB0、define 1:USB1)
USBHost
USBHost\USBHost\TARGET_RENESAS\TARGET_RZ_A1H\usb_host_setting.h
#define USB_HOST_CH 0 ↓ #define USB_HOST_CH 1
USBDevice
\USBDevice\USBDevice\TARGET_RENESAS\TARGET_RZ_A1H\usb_function_setting.h
#define USB_FUNCTION_CH 0 ↓ #define USB_FUNCTION_CH 1
Usable settings please refer to the following.
No | USB0 | USB1 | usable |
---|---|---|---|
1 | Host | Device | OK |
2 | Device | Host | OK |
3 | Host | Host | NG |
4 | Device | Device | NG |
If you use the USB0 as USB Host, please close JP3.
If you use the USB1 as USB Host, please supply 5V to USB1 VBUS.
[USB]USBHost Isochronous transfer¶
In board-dependent part of USBHost, GR-PEACH supports isochronous transfer.
USBHost library by Mbed official does not support isochronous transfer.
If you use isochronous transfer, please import following library.
Import libraryUSBHost_AddIso
I added the Isochronous to USBHost library. The Isochronous code based on the following. http://developer.mbed.org/users/va009039/code/USBHostC270_example/
Two samples below are the sample of use of the library above.
- USB camera
This program converts the camera image in JPEG image, and save it to a USB flash memory. Note: USBHostC270 is the C270 dedicated driver.
Note: This porgram set the baud rate of serial to 921600bps.
Target device:C270
Import programUSBHostC270_example_GR-PEACH
supported GR-PEACH original: http://developer.mbed.org/users/va009039/code/USBHostC270_example/ The function of Isochronous has moved to USBHost_AddIso library.
- USB DAC sample
This program will play the file with the extension "abc" in the root directory of the USB flash memory.
(This program supports only file with RIFF format, 48kHz, 16bit, and 2ch.)
Target device:BSHSAU01BK
Import programUSBHostDac_example
This sample will play a ".wav" file of the USB root folder. Only RIFF format, 48kHz, 16bit, 2ch.
[other]内蔵RAMに格納されたプログラムを実行する方法¶
プログラムを、GR-PEACH標準のシリアルフラッシュメモリよりもアクセス性能の良い内蔵RAMに配置することで、GR-PEACHのプログラム実行性能を向上させることができます。
- Mbedライブラリを削除し、mbed-devライブラリをimportしてください
- Mbedライブラリを選択して削除して下さい.
- mbed-devライブラリをimportしてください.
Import librarymbed-dev
mbed library sources. Supersedes mbed-src.
- "Update all libraries to the latest version"にチェックを入れてください
- "Import" ボタンをクリックしてください
- Mbedライブラリを選択して削除して下さい.
- 以下に示すmbed-dev内のファイルを変更または追加してください
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/RZ_A1_Init.c … ファイル冒頭(29行目辺り)
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/gic.c … ファイル冒頭(36行目辺り)
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/mmu_Renesas_RZ_A1.c … ファイル冒頭(37行目辺り)
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/pl310.c … ファイル冒頭(36行目辺り)
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/system_MBRZA1H.c … ファイル冒頭(37行目辺り)
以下のコードを追記してください。
#if defined ( __CC_ARM ) #pragma arm section code = "HANDLER" #endif
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/TOOLCHAIN_ARM_STD/startup_MBRZA1H.S
以下のようにコードを変更してください。
129行目辺り
AREA |.text|, CODE, READONLY ↓ AREA HANDLER, CODE, READONLY
212,213行目
LDR R0, =InitMemorySubsystem BLX R0 ↓ ;LDR R0, =InitMemorySubsystem ;BLX R0
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/mmu_Renesas_RZ_A1.c
95~97行目辺りにある以下のコードにて
#if defined( __ICCARM__ ) #define VECTORS_SIZE (((uint32_t)Image$$VECTORS$$Limit >> 20) - ((uint32_t)Image$$VECTORS$$Base >> 20) + 1) #define RO_DATA_SIZE (((uint32_t)Image$$RO_DATA$$Limit >> 20) - ((uint32_t)Image$$RO_DATA$$Base >> 20) + 1)
95行目辺りの上に以下のコードを追加してください。
95行目辺りの上に追加
#if 1 /* RAM Exe */ extern uint32_t Image$$RO_CODE$$Base; extern uint32_t Image$$RO_CODE$$Limit; #if defined( __ICCARM__ ) #define RO_CODE_SIZE (((uint32_t)Image$$RO_CODE$$Limit >> 20) - ((uint32_t)Image$$RO_CODE$$Base >> 20) + 1) #else #define RO_CODE_SIZE (((uint32_t)&Image$$RO_CODE$$Limit >> 20) - ((uint32_t)&Image$$RO_CODE$$Base >> 20) + 1) #endif #endif
また、199~211行目辺りにある以下のコードにて
199~211行目辺り
#if defined( __ICCARM__ ) //Define Image __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$RO_DATA$$Base, RO_DATA_SIZE, Sect_Normal_RO); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$RW_DATA$$Base, RW_DATA_SIZE, Sect_Normal_RW); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$ZI_DATA$$Base, ZI_DATA_SIZE, Sect_Normal_RW); #endif
199行目の上にコードを追加してください。
199行目辺りの上に追加
#if 1 /* RAM Exe */ #if defined( __ICCARM__ ) //Define Image __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$VECTORS$$Base, VECTORS_SIZE, Sect_Normal_Cod); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$RO_DATA$$Base, RO_DATA_SIZE, Sect_Normal_RO); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$RO_CODE$$Base, RO_CODE_SIZE, Sect_Normal_Cod); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$RW_DATA$$Base, RW_DATA_SIZE, Sect_Normal_RW); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)Image$$ZI_DATA$$Base, ZI_DATA_SIZE, Sect_Normal_RW); #else //Define Image __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$VECTORS$$Base, VECTORS_SIZE, Sect_Normal_Cod); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$RO_DATA$$Base, RO_DATA_SIZE, Sect_Normal_RO); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$RO_CODE$$Base, RO_CODE_SIZE, Sect_Normal_Cod); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$RW_DATA$$Base, RW_DATA_SIZE, Sect_Normal_RW); __TTSection (&Image$$TTB$$ZI$$Base, (uint32_t)&Image$$ZI_DATA$$Base, ZI_DATA_SIZE, Sect_Normal_RW); #endif #else
211行目の下にコードを追加してください。
211行目辺りの下に追加
#endif
- targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/TOOLCHAIN_ARM_STD/MBRZA1H.sct
- targets/hal/TARGET_RENESAS/TARGET_RZ_A1H/mbed_overrides.c
以下のファイルを上書きまたは追加してください。
Packed zip file
注意:¶
RAM実行時、以下のRAM領域はコード領域となります。
変数などのデータは配置しないでください。
0x20020000 - 0x200FFFFF
[other]sctファイルの変更方法¶
sctファイルはMbedコンパイラ上で編集することができません。以下の手法でインポートしてください。
- Mbed compiler 上で 「import」をクリックします
- 「Upload」タグをクリックします
- 「参照」をクリックし、アップロードするファイルを選択します
- Mbed compiler上でインポートするファイルを選択します
- 「Import!」ボタンをクリックします
注意:¶
- mbed libの代わりにmbed-dev libを使用してください。
sct file path : targets\cmsis\TARGET_RENESAS\TARGET_RZ_A1H\TOOLCHAIN_ARM_STD\MBRZA1H.sct
- 20000000番地とミラーアドレスである60000000番地の関係は以下のようになっております。
アドレス | ミラーアドレス |
---|---|
H'20000000 - H'200FFFFF | H'60000000 - H'600FFFFF |
H'20500000 - H'205FFFFF | H'60100000 - H'601FFFFF |
H'20600000 - H'206FFFFF | H'60200000 - H'602FFFFF |
H'20100000 - H'201FFFFF | H'60300000 - H'603FFFFF |
H'20200000 - H'202FFFFF | H'60400000 - H'604FFFFF |
H'20700000 - H'207FFFFF | H'60500000 - H'605FFFFF |
H'20800000 - H'208FFFFF | H'60600000 - H'606FFFFF |
H'20300000 - H'203FFFFF | H'60700000 - H'607FFFFF |
H'20400000 - H'204FFFFF | H'60800000 - H'608FFFFF |
H'20900000 - H'209FFFFF | H'60900000 - H'609FFFFF |
GR-PEACHではARMCCでコンパイルする場合、H'60900000 - H'609FFFFFを非キャッシュ領域として宣言しております。
sctファイルを変更して非キャッシュ領域を増やす場合には、注意が必要です。
(GCCでコンパイルする場合、H'20900000 - H'209FFFFFを非キャッシュ領域として宣言しております)
詳細はハードウェアマニュアルを参照下さい。
[USB]USB Speedの切り替え¶
以下の手順でHi-SpeedとFull Speedの切り替えができます。
(define 1:Hi-Speed、define 0:Full Speed)
USBHost
USBHost\USBHost\TARGET_RENESAS\TARGET_RZ_A1H\usb_host_setting.h
#define USB_HOST_HISPEED 1 ↓ #define USB_HOST_HISPEED 0
USBDevice
\USBDevice\USBDevice\TARGET_RENESAS\TARGET_RZ_A1H\usb_function_setting.h
#define USB_FUNCTION_HISPEED 1 ↓ #define USB_FUNCTION_HISPEED 0
[USB]rev.Cボード USB 2ポート設定方法¶
以下の手順で使用するUSBのポートを指定できます。
(define 0:USB0、define 1:USB1)
注意:rev.Cボードのみの機能です。rev.B以前のボードではUSBポートの変更はできません。
USBHost
USBHost\USBHost\TARGET_RENESAS\TARGET_RZ_A1H\usb_host_setting.h
#define USB_HOST_CH 0 ↓ #define USB_HOST_CH 1
USBDevice
\USBDevice\USBDevice\TARGET_RENESAS\TARGET_RZ_A1H\usb_function_setting.h
#define USB_FUNCTION_CH 0 ↓ #define USB_FUNCTION_CH 1
Host、Deviceの組み合わせは下記を参照ください。
No | USB0 | USB1 | 設定可否 |
---|---|---|---|
1 | Host | Device | 可(OK) |
2 | Device | Host | 可(OK) |
3 | Host | Host | 不可(NG) |
4 | Device | Device | 不可(NG) |
USB0をUSB Hostとして使用する場合はJP3をcloseしてください。
USB1をUSB Hostとして使用する場合はUSB1 VBUSに5Vを供給してください。
[USB]USBHost アイソクロナス転送¶
USBHostのボード依存部において、アイソクロナス転送に対応しています。
MbedオフィシャルのUSBHostではアイソクロナス転送のインターフェースが存在しないため、以下のライブラリをご用意しました。
Import libraryUSBHost_AddIso
I added the Isochronous to USBHost library. The Isochronous code based on the following. http://developer.mbed.org/users/va009039/code/USBHostC270_example/
また、上記ライブラリの使用例として、USBカメラとUSB Dacのサンプルを公開しました。
- USBカメラサンプル
カメラの画像をjpegに変換し、USBメモリに保存します。
注意:USBHostC270はc270専用ドライバです。
注意:printfを表示させるためには、PCとのシリアルポート ボー・レートを921600に変更する必要があります。
動作確認デバイス:c270
Import programUSBHostC270_example_GR-PEACH
supported GR-PEACH original: http://developer.mbed.org/users/va009039/code/USBHostC270_example/ The function of Isochronous has moved to USBHost_AddIso library.
- USB Dacサンプル
USBルートフォルダにある拡張子".wav"のファイルを再生します。(RIFF形式、48kHZ、16bit、2chのみ対応)
動作確認デバイス:BSHSAU01BK
Import programUSBHostDac_example
This sample will play a ".wav" file of the USB root folder. Only RIFF format, 48kHz, 16bit, 2ch.