RXマイコン基板(RX62N) | Renesas MCU Software Libraryのマスストレージファームウェアを試す
RenesasのMCU Software Libraryのウェブページでソースコードが公開されているRXマイコン用USBマススト
レージファームウェアをInterface誌の付録RX62N基板で試してみました。(ちょっと好奇心から試してみました、
というところで、ソースコードの内容を理解するのは、たぶん、ずっと先のことになるでしょうが。)
Renesas MCU Software Library トップページ
http://japan.renesas.com/support/software/index.jsp
RX62Nグループで使用可能な各種USBファームウェアのソースコード
http://japan.renesas.com/req/sample_code.do?event=searchFunctions&productName=RX62N%2C+RX621&hiddenProductsId=3011&functionsKey=452
RX600シリーズ用USBマスストレージファームウェアのソースコード
http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an0514jj_usb.jsp
製品名: Renesas USB MCU and USB ASSP USB Peripheral Mass Storage Class Driver (PMSC)
ファイル名: an_r01an0514jj0210_usb.zip
ファイルサイズ: 3,792,599 bytes (3.61 Mbytes)
私がやったことの概要は、以下の通りです。
(1) RX600シリーズ用USBマスストレージファームウェアのソースコードをダウンロードして解凍する
(2) 同梱されているドキュメント(日本語)に目を通す
(3) WorkSpace\HwResourceForUSB_RX62N\ を WorkSpace\HwResourceForUSB\ へコピーする
(4) 同梱されているHEWのワークスペース(Fw.hws)をCubeSuite+で開く
(5) RX62N基板でUSBマスストレージを試せるようにソースコードを修正する
(6) CubeSite+でリビルドする
(7) RX62N基板のJPP1をショートしてUSBケーブルを差してRFPでUSB Direct方式書き込みを行う
(8) RX62N基板のJPP1をオープンしてUSBケーブルを差してUSBマスストレージを試す
ソースコードの修正内容には、以下の2種類があります。
(5-1) USBのVIDとPIDを書き換える
(5-2) Renesas Starter Kit固有のハードウェア(LCDやSWやSDRAM)を参照しないようにする
具体的には、以下の通りです。
(5-1) USBのVIDとPIDを書き換える
今回、使い回すことで手抜きが出来そうなVIDとPIDが思い付きませんでしたので、それぞれ0000にしました。
(なお、INFファイルは何も用意しませんでした。)
ファイル: WorkSpace\SmplMain\APL\r_usb_pmsc_descriptor.c
/******************************************************************************
User define macro definitions
******************************************************************************/
#define USB_VENDORID 0x0000
#define USB_PRODUCTID 0x0000 // 0x0008
(5-2) Renesas Starter Kit固有のハードウェア(LCDやSWやSDRAM)を参照しないようにする
ダウンロードしたソースコードは、まず第一にRenesas Starter Kitでデモプログラムを試せるように作られて
いますが、Renesas Starter Kit以外でも試せるように、カスタマイズ出来るデファインが用意されていました。
(今回、RX62Nの内蔵RAMの内の32Kバイト分を使用したマスストレージになるようにカスタマイズしました。)
ファイル: WorkSpace\HwResourceForUSB\inc\hw_resource.h (プロジェクトに登録されていない)
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RSK USE IO SELECT
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
//#define USB_LCD_ENABLE
//#define USB_LED_ENABLE
//#define USB_KEY_ENABLE
//#define USB_UART_ENABLE
//#define USB_ADC_ENABLE
ファイル: WorkSpace\HwResourceForUSB\USRCFG\r_usb_usrconfig.h (プロジェクトに登録されていない)
/*****************************************************************************
Macro definitions (USER DEFINE)
******************************************************************************/
/* Select USB mode(Host or Periphera) per each USB IP */
// #define USB_FUNCSEL_USBIP0_PP USB_HOST_PP // Host Mode
#define USB_FUNCSEL_USBIP0_PP USB_PERI_PP // Peripheral Mode
// #define USB_FUNCSEL_USBIP0_PP USB_NOUSE_PP
// #define USB_FUNCSEL_USBIP1_PP USB_HOST_PP // Host Mode
// #define USB_FUNCSEL_USBIP1_PP USB_PERI_PP // Peripheral Mode
#define USB_FUNCSEL_USBIP1_PP USB_NOUSE_PP
/* CPU byte endian select */
#define USB_CPUBYTE_PP USB_BYTE_LITTLE_PP
// #define USB_CPUBYTE_PP USB_BYTE_BIG_PP
/* Select CPU Low Power Mode */
#define USB_CPU_LPW_PP USB_LPWR_NOT_USE_PP
// #define USB_CPU_LPW_PP USB_LPWR_USE_PP
/* Select using SD RAM */
// #define USB_SDRAM_USE_PP
ビルドして書き込んで試したところ、chkdskでエラーが発生してしまいましたが、Windowsでフォーマットした
ところ、それ以後、chkdskでエラーが発生することはなくなりました。














なお、ビルドログは以下の通りでした。
========== 全リビルドの開始(2013年7月13日 19:30:44) ==========
------ ビルド開始(NonOS_MscFw, PERI) ------
>..\..\..\ANSI\r_usb_ansi.c
>..\..\..\ANSI\r_usb_ansi_peri.c
>..\..\..\ANSI\r_usb_otherclass.c
>..\..\..\HwResourceForUSB\src\adcdriver.c
>..\..\..\HwResourceForUSB\src\dbsct_pmsc.c
>..\..\..\HwResourceForUSB\src\hwsetup.c
>..\..\..\HwResourceForUSB\src\keydriver.c
>..\..\..\HwResourceForUSB\src\lcddriver.c
>..\..\..\HwResourceForUSB\src\leddriver.c
>..\..\..\HwResourceForUSB\src\lowsrc.c
>..\..\..\HwResourceForUSB\src\resetprg.c
>..\..\..\HwResourceForUSB\src\rx_mcu.c
>..\..\..\HwResourceForUSB\src\sbrk.c
>..\..\..\HwResourceForUSB\src\scidriver.c
>..\..\..\HwResourceForUSB\src\vecttbl.c
>..\..\..\HwResourceForUSB\USBHW\REG\r_usb_creg_abs.c
>..\..\..\HwResourceForUSB\USBHW\REG\r_usb_creg_access.c
>..\..\..\HwResourceForUSB\USBHW\REG\r_usb_creg_dmadtc.c
>..\..\..\HwResourceForUSB\USBHW\REG\r_usb_preg_abs.c
>..\..\..\HwResourceForUSB\USBHW\REG\r_usb_preg_access.c
>..\..\..\media_driver\r_media_driver_api.c
>..\..\..\media_driver\ram_disk\r_ram_disk.c
>..\..\..\media_driver\ram_disk\r_ram_disk_format_data.c
>..\..\..\MSCFW\MEDIA\r_usb_atapi_driver.c
>..\..\..\MSCFW\PMSC\r_usb_pmsc_ddi.c
>..\..\..\MSCFW\PMSC\r_usb_pmsc_driver.c
>..\..\..\MSCFW\PMSC\r_usb_pmsc_pci.c
>..\..\..\MSCFW\PMSC\r_usb_pmsc_request.c
>..\..\main.c
>..\..\APL\r_usb_pmsc_apl.c
>..\..\APL\r_usb_pmsc_descriptor.c
>..\..\..\USBSTDFW\nonOS\class\SMPL\r_usb_smp_csub.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cdataio.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cintfifo.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cinthandler_usbip0.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cinthandler_usbip1.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_clibusbip.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cscheduler.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cstdapi.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cstdfunction.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pcontrolrw.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pdriver.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pdriverapi.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pintfifo.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_psignal.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pstdfunction.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pstdrequest.c
>..\..\..\HwResourceForUSB\src\endian.src
>..\..\..\HwResourceForUSB\src\lowlvl.src
>PERI\NonOS_MscFw.abs PERI\NonOS_MscFw.mot
Renesas Optimizing Linker Completed
------ ビルド終了(エラー:0個, 警告:0個) ------
========== 終了しました(成功:1プロジェクト, 失敗:0プロジェクト)(2013年7月13日 19:32:16) ==========
私が使用したツールのバージョンは、以下の通りです。
追記 : メモ
もうちょっと単純な構成のUSBマスストレージファームウェアのソースコードも発見しました。(こちらの方が
開発された時期が古いかも知れません。もしかすると、バグが放置されたままになっているかもしれません。)
http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an0318jg_rx62n_rsk.jsp
製品名: RX62Nグループ アプリケーションノート ルネサススタータキットのサンプルコード
ファイル名: an_r01an0318jg_rx62n_rsk.zip
ファイルサイズ: 20,865,389 bytes (19.89 Mbytes)
ちなみに、IAR RX 統合開発環境に含まれるサンプルプロジェクトフォルダを見直すと、今回試したタイプの
ソースコードがありませんでした。(こちらの単純なタイプのソースコードはありました。)
追記 : メモ
なお、2つ前と1つ前のエントリの追記に書いた以下のYRDKRX62N用のソースコードには、USBマスストレージ
ファームウェアのソースコードがありませんでした。(IAR RX 統合開発環境に含まれるYRDKRX62N用のソース
コードにも、USBマスストレージファームウェアのソースコードはありませんでした。)
http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an0586ju_rx_code_example.jsp
製品名: RX62N サンプルコードおよびワークスペースプロジェクトガイド
ファイル名: an_r01an0586ju_rx_code_example.zip
ファイルサイズ: 9,765,186 bytes (9.31 Mbytes)
レージファームウェアをInterface誌の付録RX62N基板で試してみました。(ちょっと好奇心から試してみました、
というところで、ソースコードの内容を理解するのは、たぶん、ずっと先のことになるでしょうが。)
Renesas MCU Software Library トップページ
http://japan.renesas.com/support/software/index.jsp
RX62Nグループで使用可能な各種USBファームウェアのソースコード
http://japan.renesas.com/req/sample_code.do?event=searchFunctions&productName=RX62N%2C+RX621&hiddenProductsId=3011&functionsKey=452
RX600シリーズ用USBマスストレージファームウェアのソースコード
http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an0514jj_usb.jsp
製品名: Renesas USB MCU and USB ASSP USB Peripheral Mass Storage Class Driver (PMSC)
ファイル名: an_r01an0514jj0210_usb.zip
ファイルサイズ: 3,792,599 bytes (3.61 Mbytes)
私がやったことの概要は、以下の通りです。
(1) RX600シリーズ用USBマスストレージファームウェアのソースコードをダウンロードして解凍する
(2) 同梱されているドキュメント(日本語)に目を通す
(3) WorkSpace\HwResourceForUSB_RX62N\ を WorkSpace\HwResourceForUSB\ へコピーする
(4) 同梱されているHEWのワークスペース(Fw.hws)をCubeSuite+で開く
(5) RX62N基板でUSBマスストレージを試せるようにソースコードを修正する
(6) CubeSite+でリビルドする
(7) RX62N基板のJPP1をショートしてUSBケーブルを差してRFPでUSB Direct方式書き込みを行う
(8) RX62N基板のJPP1をオープンしてUSBケーブルを差してUSBマスストレージを試す
ソースコードの修正内容には、以下の2種類があります。
(5-1) USBのVIDとPIDを書き換える
(5-2) Renesas Starter Kit固有のハードウェア(LCDやSWやSDRAM)を参照しないようにする
具体的には、以下の通りです。
(5-1) USBのVIDとPIDを書き換える
今回、使い回すことで手抜きが出来そうなVIDとPIDが思い付きませんでしたので、それぞれ0000にしました。
(なお、INFファイルは何も用意しませんでした。)
ファイル: WorkSpace\SmplMain\APL\r_usb_pmsc_descriptor.c
/******************************************************************************
User define macro definitions
******************************************************************************/
#define USB_VENDORID 0x0000
#define USB_PRODUCTID 0x0000 // 0x0008
(5-2) Renesas Starter Kit固有のハードウェア(LCDやSWやSDRAM)を参照しないようにする
ダウンロードしたソースコードは、まず第一にRenesas Starter Kitでデモプログラムを試せるように作られて
いますが、Renesas Starter Kit以外でも試せるように、カスタマイズ出来るデファインが用意されていました。
(今回、RX62Nの内蔵RAMの内の32Kバイト分を使用したマスストレージになるようにカスタマイズしました。)
ファイル: WorkSpace\HwResourceForUSB\inc\hw_resource.h (プロジェクトに登録されていない)
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RSK USE IO SELECT
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
//#define USB_LCD_ENABLE
//#define USB_LED_ENABLE
//#define USB_KEY_ENABLE
//#define USB_UART_ENABLE
//#define USB_ADC_ENABLE
ファイル: WorkSpace\HwResourceForUSB\USRCFG\r_usb_usrconfig.h (プロジェクトに登録されていない)
/*****************************************************************************
Macro definitions (USER DEFINE)
******************************************************************************/
/* Select USB mode(Host or Periphera) per each USB IP */
// #define USB_FUNCSEL_USBIP0_PP USB_HOST_PP // Host Mode
#define USB_FUNCSEL_USBIP0_PP USB_PERI_PP // Peripheral Mode
// #define USB_FUNCSEL_USBIP0_PP USB_NOUSE_PP
// #define USB_FUNCSEL_USBIP1_PP USB_HOST_PP // Host Mode
// #define USB_FUNCSEL_USBIP1_PP USB_PERI_PP // Peripheral Mode
#define USB_FUNCSEL_USBIP1_PP USB_NOUSE_PP
/* CPU byte endian select */
#define USB_CPUBYTE_PP USB_BYTE_LITTLE_PP
// #define USB_CPUBYTE_PP USB_BYTE_BIG_PP
/* Select CPU Low Power Mode */
#define USB_CPU_LPW_PP USB_LPWR_NOT_USE_PP
// #define USB_CPU_LPW_PP USB_LPWR_USE_PP
/* Select using SD RAM */
// #define USB_SDRAM_USE_PP
ビルドして書き込んで試したところ、chkdskでエラーが発生してしまいましたが、Windowsでフォーマットした
ところ、それ以後、chkdskでエラーが発生することはなくなりました。














なお、ビルドログは以下の通りでした。
========== 全リビルドの開始(2013年7月13日 19:30:44) ==========
------ ビルド開始(NonOS_MscFw, PERI) ------
>..\..\..\ANSI\r_usb_ansi.c
>..\..\..\ANSI\r_usb_ansi_peri.c
>..\..\..\ANSI\r_usb_otherclass.c
>..\..\..\HwResourceForUSB\src\adcdriver.c
>..\..\..\HwResourceForUSB\src\dbsct_pmsc.c
>..\..\..\HwResourceForUSB\src\hwsetup.c
>..\..\..\HwResourceForUSB\src\keydriver.c
>..\..\..\HwResourceForUSB\src\lcddriver.c
>..\..\..\HwResourceForUSB\src\leddriver.c
>..\..\..\HwResourceForUSB\src\lowsrc.c
>..\..\..\HwResourceForUSB\src\resetprg.c
>..\..\..\HwResourceForUSB\src\rx_mcu.c
>..\..\..\HwResourceForUSB\src\sbrk.c
>..\..\..\HwResourceForUSB\src\scidriver.c
>..\..\..\HwResourceForUSB\src\vecttbl.c
>..\..\..\HwResourceForUSB\USBHW\REG\r_usb_creg_abs.c
>..\..\..\HwResourceForUSB\USBHW\REG\r_usb_creg_access.c
>..\..\..\HwResourceForUSB\USBHW\REG\r_usb_creg_dmadtc.c
>..\..\..\HwResourceForUSB\USBHW\REG\r_usb_preg_abs.c
>..\..\..\HwResourceForUSB\USBHW\REG\r_usb_preg_access.c
>..\..\..\media_driver\r_media_driver_api.c
>..\..\..\media_driver\ram_disk\r_ram_disk.c
>..\..\..\media_driver\ram_disk\r_ram_disk_format_data.c
>..\..\..\MSCFW\MEDIA\r_usb_atapi_driver.c
>..\..\..\MSCFW\PMSC\r_usb_pmsc_ddi.c
>..\..\..\MSCFW\PMSC\r_usb_pmsc_driver.c
>..\..\..\MSCFW\PMSC\r_usb_pmsc_pci.c
>..\..\..\MSCFW\PMSC\r_usb_pmsc_request.c
>..\..\main.c
>..\..\APL\r_usb_pmsc_apl.c
>..\..\APL\r_usb_pmsc_descriptor.c
>..\..\..\USBSTDFW\nonOS\class\SMPL\r_usb_smp_csub.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cdataio.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cintfifo.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cinthandler_usbip0.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cinthandler_usbip1.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_clibusbip.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cscheduler.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cstdapi.c
>..\..\..\USBSTDFW\nonOS\USB20\LIB\r_usb_cstdfunction.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pcontrolrw.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pdriver.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pdriverapi.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pintfifo.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_psignal.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pstdfunction.c
>..\..\..\USBSTDFW\nonOS\USB20\PCD\r_usb_pstdrequest.c
>..\..\..\HwResourceForUSB\src\endian.src
>..\..\..\HwResourceForUSB\src\lowlvl.src
>PERI\NonOS_MscFw.abs PERI\NonOS_MscFw.mot
Renesas Optimizing Linker Completed
------ ビルド終了(エラー:0個, 警告:0個) ------
========== 終了しました(成功:1プロジェクト, 失敗:0プロジェクト)(2013年7月13日 19:32:16) ==========
私が使用したツールのバージョンは、以下の通りです。
CubeSuite+ | V2.00.00a |
CC-RX | V2.00.01 |
RFP | V2.01.01 |
追記 : メモ
もうちょっと単純な構成のUSBマスストレージファームウェアのソースコードも発見しました。(こちらの方が
開発された時期が古いかも知れません。もしかすると、バグが放置されたままになっているかもしれません。)
http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an0318jg_rx62n_rsk.jsp
製品名: RX62Nグループ アプリケーションノート ルネサススタータキットのサンプルコード
ファイル名: an_r01an0318jg_rx62n_rsk.zip
ファイルサイズ: 20,865,389 bytes (19.89 Mbytes)
ちなみに、IAR RX 統合開発環境に含まれるサンプルプロジェクトフォルダを見直すと、今回試したタイプの
ソースコードがありませんでした。(こちらの単純なタイプのソースコードはありました。)
追記 : メモ
なお、2つ前と1つ前のエントリの追記に書いた以下のYRDKRX62N用のソースコードには、USBマスストレージ
ファームウェアのソースコードがありませんでした。(IAR RX 統合開発環境に含まれるYRDKRX62N用のソース
コードにも、USBマスストレージファームウェアのソースコードはありませんでした。)
http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an0586ju_rx_code_example.jsp
製品名: RX62N サンプルコードおよびワークスペースプロジェクトガイド
ファイル名: an_r01an0586ju_rx_code_example.zip
ファイルサイズ: 9,765,186 bytes (9.31 Mbytes)
- 関連記事
-
- RXマイコン基板(RX62N) | USBマルチファンクションファームウェアを作るには? (6)
- RXマイコン基板(RX62N) | USBマルチファンクションファームウェアを作るには? (5)
- RXマイコン基板(RX62N) | USBマルチファンクションファームウェアを作るには? (4)
- RXマイコン基板(RX62N) | USBマルチファンクションファームウェアを作るには? (3)
- RXマイコン基板(RX62N) | USBマルチファンクションファームウェアを作るには? (2)
- RXマイコン基板(RX62N) | USBマルチファンクションファームウェアを作るには? (1)
- RXマイコン基板(RX62N) | Renesas MCU Software Libraryのカスタムクラスファームウェアを試す
- RXマイコン基板(RX62N) | Renesas MCU Software Libraryのマスストレージファームウェアを試す
- RXマイコン基板(RX62N) | Renesas MCU Software LibraryのHIDファームウェアを試す
- RXマイコン基板(RX62N) | Renesas MCU Software Libraryの仮想COMポートファームウェアを試す
- USB | マスストレージと仮想COMポートを1本のUSBケーブルで同時に使用出来るらしい
- RXマイコン | HEW接続シリアルモニタのダウンロードページ(モニタのソースコードは無い)
- RXマイコン基板(RX62N) | RXduino(TM)をInterface誌の付属RX62Nマイコン基板で試す (10)
- RXマイコン基板(RX62N) | RXduino(TM)をInterface誌の付属RX62Nマイコン基板で試す (9)
- RXマイコン基板(RX62N) | RXduino(TM)をInterface誌の付属RX62Nマイコン基板で試す (8)
2013/07/13 blog-entry-307 category: RX /* 32bit CISC */
| h o m e |