なんとかなるさね

マイコンをネタにブログを始めてみました


RXマイコン基板(RX62N) | Renesas MCU Software LibraryのHIDファームウェアを試す 

RenesasのMCU Software Libraryのウェブページでソースコードが公開されているRXマイコン用HIDファーム
ウェアを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シリーズ用HIDファームウェアのソースコード
http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an0401jj_usb.jsp
製品名: Renesas USB MCU and USB ASSP  USB Peripheral Human Interface Devices Class Driver (PHID)
ファイル名: an_r01an0401jj0210_usb.zip
ファイルサイズ: 3,620,471 bytes (3.45 Mbytes)

私がやったことの概要は、以下の通りです。

(1) RX600シリーズ用HIDファームウェアのソースコードをダウンロードして解凍する
(2) 同梱されているドキュメント(日本語)に目を通す
(3) WorkSpace\HwResourceForUSB_RX62N\ を WorkSpace\HwResourceForUSB\ へコピーする
(4) 同梱されているHEWのワークスペース(Fw.hws)をCubeSuite+で開く
(5) RX62N基板からメモ帳へのHIDキー入力を試せるようにソースコードを修正する
(6) CubeSuite+でリビルドする
(7) RX62N基板のJPP1をショートしてUSBケーブルを差してRFPでUSB Direct方式書き込みを行う
(8) Windowsのデバイスマネージャとメモ帳と開き、他のアプリケーションを閉じ、メモ帳をアクティブにする
(9) RX62N基板のJPP1をオープンしてUSBケーブルを差してRX62N基板からメモ帳へのHIDキー入力を試す

ソースコードの修正内容には、以下の2種類があります。

(5-1) USBのVIDとPIDを書き換える
(5-2) Renesas Starter Kit固有のハードウェア(LCDやSW)を参照しないようにする

具体的には、以下の通りです。

(5-1) USBのVIDとPIDを書き換える

78K0/USBマイコンのHIDファームウェアのアプリケーションノートのVIDとPIDを流用しました。(HIDにしか
使われないVIDとPIDにしたかったからです。なお、INFファイルは何も用意しませんでした。)

ファイル: WorkSpace\SmplMain\APL\r_usb_phid_descriptor.c

/******************************************************************************
User define macro definitions
******************************************************************************/
#define USB_VENDORID    0x0409 // 0x0000
#if USB_PHID_APL_MODE == USB_PHID_DEMO_MODE
#define USB_PRODUCTID   0x0003
#endif  /* Peripheral HID Application demo mode */

#if USB_PHID_APL_MODE == USB_PHID_KEYBOARD_MODE
#define USB_PRODUCTID   0x01CE // 0x0013
#endif  /* Peripheral HID Application keyboard mode */

#if USB_PHID_APL_MODE == USB_PHID_MOUSE_MODE
#define USB_PRODUCTID   0x0023
#endif  /* Peripheral HID Application mouse mode */


(5-2) Renesas Starter Kit固有のハードウェア(LCDやSW)を参照しないようにする

ダウンロードしたソースコードは、まず第一にRenesas Starter Kitでデモプログラムを試せるように作られて
いますが、Renesas Starter Kit以外でも試せるように、カスタマイズ出来るデファインが用意されていました。
ただ、それらのデファインをカスタマイズしただけでは、思うように確認が出来ませんでしたので、ちょっと
ベタにソースコードに手を入れました。

ファイル: 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\HIDFW\include\r_usb_class_usrcfg.h (プロジェクトに登録されていない)

/* Select HID Demo sample Application mode */
//#define USB_PHID_APL_MODE       USB_PHID_DEMO_MODE      /* Peripheral HID Application demo mode */
//削除#define USB_PHID_APL_MODE       USB_PHID_KEYBOARD_MODE  /* Peripheral HID Application keyboard mode */
//#define USB_PHID_APL_MODE       USB_PHID_MOUSE_MODE     /* Peripheral HID Application mouse mode */

ファイル: WorkSpace\SmplMain\APL\r_usb_phid_apl.c

/******************************************************************************
Function Name   : usb_phid_apl_kbd_data_set
Description     : Keyborad mode data update by the RSK Switch input.
Arguments       : uint8_t key_data      : RSK Switch input
                : uint8_t *data         : Keyboard mode data set address.
Return value    : uint16_t USB_YES : Keyboard mode data set. , USB_NO : Not data set.
******************************************************************************/
uint16_t usb_phid_apl_kbd_data_set( uint8_t key_data, uint8_t *data )
{
    uint16_t    ret;
#if 1
    uint32_t wait;
    /* ゆっくりとキーコードを送信する */
    for( wait = 0; wait < 10000000; wait++ )
    {
        _builtin_nop();
    }
    key_data = SW2_PUSH;
#endif  /* #if 1 */

    
。。。元々のソースコード。。。
#if 1
    /* Enterキーのキーコードは送信しない */
    if( usb_sphid_keyboard_key == USB_PHID_KBD_CODE_ENTER )
    {
        ret = USB_NO;
    }
#endif  /* #if 1 */

    return  ret;
}   /* eof usb_phid_apl_kbd_data_set() */


なお、_builtin_nop()をヘッダファイルをインクルードせずに直に使用したので、CubeSuite+でのビルド時に
以下の警告が出ますが、そのままにしました。

>..\..\APL\r_usb_phid_apl.c
E:\work\workspace\RX600_USB_PhidFW_nonOS_Rev210_BasicRev210\WorkSpace\SmplMain\APL\r_usb_phid_apl.c(975):W0520223:Function "_builtin_nop" declared implicitly


ビルドして書き込んで試したところ、無事、動作しました。












なお、ビルドログは以下の通りでした。

========== 全リビルドの開始(2013年7月11日 20:18:25) ==========
------ ビルド開始(NonOS_HidFw, PERI) ------
>..\..\..\ANSI\r_usb_ansi.c
>..\..\..\ANSI\r_usb_ansi_peri.c
>..\..\..\ANSI\r_usb_otherclass.c
>..\..\..\HwResourceForUSB\src\adcdriver.c
>..\..\..\HwResourceForUSB\src\keydriver.c
>..\..\..\HwResourceForUSB\src\lcddriver.c
>..\..\..\HwResourceForUSB\src\leddriver.c
>..\..\..\HwResourceForUSB\src\scidriver.c
>..\..\..\HIDFW\PHID\r_usb_phid_ansi.c
>..\..\..\HIDFW\PHID\r_usb_phid_driver.c
>..\..\..\HwResourceForUSB\src\dbsct_phid.c
>..\..\..\HwResourceForUSB\src\hwsetup.c
>..\..\..\HwResourceForUSB\src\lowsrc.c
>..\..\..\HwResourceForUSB\src\resetprg.c
>..\..\..\HwResourceForUSB\src\rx_mcu.c
>..\..\..\HwResourceForUSB\src\sbrk.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
>..\..\main.c
>..\..\APL\r_usb_phid_apl.c
E:\work\workspace\RX600_USB_PhidFW_nonOS_Rev210_BasicRev210\WorkSpace\SmplMain\APL\r_usb_phid_apl.c(975):W0520223:Function "_builtin_nop" declared implicitly
>..\..\APL\r_usb_phid_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_HidFw.abs PERI\NonOS_HidFw.mot
Renesas Optimizing Linker Completed
------ ビルド終了(エラー:0個, 警告:1個) ------
========== 終了しました(成功:1プロジェクト, 失敗:0プロジェクト)(2013年7月11日 20:20:22) ==========


私が使用したツールのバージョンは、以下の通りです。

CubeSuite+       V2.00.00a
CC-RX V2.00.01
RFP V2.01.01

追記 : メモ

もうちょっと単純な構成のHIDファームウェアのソースコードも発見しました。(こちらの方が開発された時期が
古いかも知れません。もしかすると、バグが放置されたままになっているかもしれません。)

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)

こちらの方には、今回試したHIDファームウェアのドキュメントに記載のあったWindowsアプリケーション
RSK_HID.exe が Samples\HID\Host\RSK_HID\ にありました。(VC++ 6.0時代のソースコードとワーク
スペース/プロジェクトファイルも一緒に含まれていました。)

ちなみに、IAR RX 統合開発環境に含まれるサンプルプロジェクトフォルダを見直すと、両方のタイプのソース
コードとRSK_HID.exe(ソースコード付き)が含まれていました。

追記 : メモ

同系統の単純なタイプのソースコードとして、以下のものもありました。こちらは、YRDKRX62N用のようです。
(IAR RX 統合開発環境には、こちらも含まれていました。) RSK_HID.exe(ソースコード付き)もありました。

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)

追記 : メモ

アプリケーションノート
μPD78F0730 8ビットシングルチップマイクロコントローラ USB HIDクラスドライバ編
http://documentation.renesas.com/doc/DocumentServer/U19661JJ1V0AN00.pdf
VID=0x0409
PID=0x01CE
Windows側デバイスドライバは、Windows標準ドライバ

アプリケーションノート
μPD78F0730 8ビットシングルチップマイクロコントローラ USB-シリアル変換ソフトウエア編
http://documentation.renesas.com/doc/DocumentServer/U19660JJ2V0AN00.pdf
VID=0x0409
PID=0x01CD
Windows側デバイスドライバは、ルネサス独自ドライバ

μPD78F0730(78K0/USB) アプリケーションノート一覧
http://japan.renesas.com/products/mpumcu/78k/78f07xx/78f073x/app_notes.jsp

追記 : メモ

アプリケーションノート
V850シリーズマイクロコンピュータ (USBファンクション内蔵品) 32ビットシングルチップマイクロコントローラ
USB HID(ヒューマンインタフェースデバイスクラス)ドライバ編
http://documentation.renesas.com/doc/DocumentServer/r01an0007jj0100_v850.pdf
VID=0x0409
PID=0x01D2

アプリケーションノート
V850ES/JG3-H, V850ES/JH3-H 32ビットシングルチップマイクロコントローラ
USB プリンタクラスドライバ編
http://documentation.renesas.com/doc/DocumentServer/r01an0002jj0100_v850es_jxh.pdf
VID=0x0409
PID=0x01D2

アプリケーションノート
V850シリーズマイクロコンピュータ (USBファンクション内蔵品)
USB CDC(コミュニケーションデバイスクラス)ドライバ編
http://documentation.renesas.com/doc/products/mpumcu/apn/v850/r01an0684jj0200_usbf.pdf
VID=0x045B
PID=0x01DA, 0x01DE, 0x01D2, 0x01D1, 0x01DB

アプリケーションノート
V850E2/MN4マイクロコンピュータ USB CDC(コミュニケーションデバイスクラス)ドライバ編
http://documentation.renesas.com/doc/products/mpumcu/apn/v850/r01an0010jj0101_v850e2mx.pdf
VID=0x045B
PID=0x0200

アプリケーションノート
V850E2/MN4マイクロコンピュータ USB MSC(マスストレージクラス)ドライバ編
http://documentation.renesas.com/doc/products/mpumcu/apn/v850/r01an0011jj0102_v850e2mx.pdf
VID=0x045B
PID=0x0200

アプリケーションノート
V850E2/ML4マイクロコンピュータ USB マルチファンクション動作例
http://documentation.renesas.com/doc/products/mpumcu/apn/v850/r01an1037jj0100_v850e2ml4.pdf
VID=0x045B
PID=0x0218

アプリケーションノート
V850E2/ML4マイクロコンピュータ Peripheral LibUSB Demo
http://documentation.renesas.com/doc/products/mpumcu/apn/v850/r01an1098jj0100_v850e2ml4.pdf
VID=0x045B
PID=0x0217

V850 USB関連アプリケーションノート/サンプルコード一覧
http://japan.renesas.com/products/mpumcu/v850/Application_Notes.jsp?event=searchFunctions&logo=0&productName=V850+%E3%83%95%E3%82%A1%E3%83%9F%E3%83%AA®ion=jp&hiddenFunctionsKey=&hiddenProductsId=114958&hiddenApplicationsKey=&sort=&pageNo=1&redirectEvent=searchFunctions&documentUrl=http%3A%2F%2Fjapan.renesas.com%2Fproducts%2Fmpumcu%2Fv850%2FApplication_Notes.jsp&functionsKey=452&.x=44&.y=3

関連記事

2013/07/11   blog-entry-306   category: RX /* 32bit CISC */

go page top