なんとかなるさね

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


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

RX62Nグループ用USBカスタムクラスファームウェアのソースコード
http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an0492jj_rx_usb.jsp
製品名: RX62N グループ Peripheral LibUSB Demo
ファイル名: an_r01an0492jj_rx_usb.zip
ファイルサイズ: 2,374,346 bytes (2.26 Mbytes)

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

(1) RX600シリーズ用USBカスタムクラスファームウェアのソースコードをダウンロードして解凍する
(2) 同梱されているドキュメント(日本語)に目を通す
(3) 動作確認用のアプリケーションとデバイスドライバをダウンロードして解凍/インストールする
(4) 同梱されているHEWのワークスペース(Fw.hws)をCubeSuite+で開く
(5) RX62N基板でUSBカスタムクラスファームウェアを試せるようにソースコードを修正する
(6) CubeSite+でリビルドする
(7) RX62N基板のJPP1をショートしてUSBケーブルを差してRFPでUSB Direct方式書き込みを行う
(8) RX62N基板のJPP1をオープンしてUSBケーブルを差してUSBカスタムクラスファームウェアを試す

動作確認用のアプリケーションやデバイスドライバなどは、以下のものを使用しました。

(3-1) RSK_LibUSB.exe と INFファイル の入手

RX62Nグループ アプリケーションノート ルネサススタータキットのサンプルコード
http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an0318jg_rx62n_rsk.jsp

これをダウンロードして解凍した後、以下のフォルダをコピーしました。

Samples\LibUSB\Host\Driver
Samples\LibUSB\Host\RSK_LibUSB





(3-2) libusb0.sys / libusb0.dll の入手

libusb-win32-devel-filter
http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/1.2.6.0/libusb-win32-devel-filter-1.2.6.0.exe/download

これをダウンロードしてインストールした後、以下のファイルを先程のHost\Driverフォルダにコピーしました。

Windows\System32\Drivers\libusb0.sys
Windows\System32\libusb0.dll



ソースコードは、以下のように修正しました。(今回、USBのVIDとPIDは、ソースコードの値をそのまま使用
しました。)

(5) WorkSpace\SmplMain\RX62NRSK.c の修正

ダウンロードしたソースコードは、RX62N Renesas Starter Kitでデモプログラムを試せるように作られて
います。RX62N Renesas Starter KitにはLEDが5つあるようですが、そのうちの1つのLEDの割り当てポート
を、RX62N基板のLEDのポートに割り当てなおすようにしました。具体的には、以下の置換を行いました。

PORT0.DR.BIT.B2  → PORT1.DR.BIT.B5
PORT0.DDR.BIT.B2 → PORT1.DDR.BIT.B5

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
























なお、ビルドログは以下の通りでした。(今回、プロジェクト変換に失敗してしまっているのか、ソースコードを
全く変更していないのに、多くのソースがコンパイルされてしまう現象が発生しました。試しに、CubeSuite+の
メニュー[ビルド]→[依存関係の更新]を実行してみましたが、症状は改善されませんでした。)

========== 全リビルドの開始(2013年7月15日 19:17:11) ==========
------ ビルド開始(NonOS_LibUsbFw, PORT0_P) ------
>..\..\..\HwResourceForUSB\dbsct.c
>..\..\..\HwResourceForUSB\hwsetup.c
>..\..\..\HwResourceForUSB\lowsrc.c
>..\..\..\HwResourceForUSB\resetprg.c
E:\work\workspace\RX62N_USB_LibUSB_FW_Rev1.00\WorkSpace\HwResourceForUSB\resetprg.c(71):W0520167:Argument of type "int" is incompatible with parameter of type "void *"
E:\work\workspace\RX62N_USB_LibUSB_FW_Rev1.00\WorkSpace\HwResourceForUSB\resetprg.c(71):W0520152:Conversion of nonzero integer to pointer
E:\work\workspace\RX62N_USB_LibUSB_FW_Rev1.00\WorkSpace\HwResourceForUSB\resetprg.c(72):W0520167:Argument of type "int" is incompatible with parameter of type "void *"
E:\work\workspace\RX62N_USB_LibUSB_FW_Rev1.00\WorkSpace\HwResourceForUSB\resetprg.c(72):W0520152:Conversion of nonzero integer to pointer
E:\work\workspace\RX62N_USB_LibUSB_FW_Rev1.00\WorkSpace\HwResourceForUSB\resetprg.c(73):W0520167:Argument of type "unsigned int" is incompatible with parameter of type "void *"
E:\work\workspace\RX62N_USB_LibUSB_FW_Rev1.00\WorkSpace\HwResourceForUSB\resetprg.c(73):W0520152:Conversion of nonzero integer to pointer
>..\..\..\HwResourceForUSB\sbrk.c
>..\..\APL\r_usb_LibUSB_apl.c
>..\..\APL\r_usb_LibUSB_data.c
>..\..\APL\r_usb_cdata.c
>..\..\RX62NRSK.c
>..\..\main.c
>..\..\..\USBSTDFW\class\SMPL\r_usb_pClassVendor.c
>..\..\..\USBSTDFW\class\SMPL\r_usb_smp_cSub.c
>..\..\..\USBSTDFW\USB20\LIB\r_usb_cDataIO.c
>..\..\..\USBSTDFW\USB20\LIB\r_usb_cIntFIFO.c
>..\..\..\USBSTDFW\USB20\LIB\r_usb_cIntHandler.c
>..\..\..\USBSTDFW\USB20\LIB\r_usb_cLibUSBIP.c
>..\..\..\USBSTDFW\USB20\LIB\r_usb_cSignal.c
>..\..\..\USBSTDFW\USB20\LIB\r_usb_cStdFunction.c
>..\..\..\USBSTDFW\USB20\PCD\r_usb_pControlRW.c
>..\..\..\USBSTDFW\USB20\PCD\r_usb_pDriver.c
>..\..\..\USBSTDFW\USB20\PCD\r_usb_pDriverAPI.c
>..\..\..\USBSTDFW\USB20\PCD\r_usb_pIntFIFO.c
>..\..\..\USBSTDFW\USB20\PCD\r_usb_pLibUSBIP.c
>..\..\..\USBSTDFW\USB20\PCD\r_usb_pSignal.c
>..\..\..\USBSTDFW\USB20\PCD\r_usb_pStdFunction.c
>..\..\..\USBSTDFW\USB20\PCD\r_usb_pStdRequest.c
>..\..\..\USBCSTDFW\r_usbc_cScheduler.c
>..\..\..\HwResourceForUSB\lowlvl.src
>..\..\..\HwResourceForUSB\ritable.src
>PORT0_P\NonOS_LibUsbFw.abs PORT0_P\NonOS_LibUsbFw.mot
Renesas Optimizing Linker Completed
------ ビルド終了(エラー:0個, 警告:6個) ------
========== 終了しました(成功:1プロジェクト, 失敗:0プロジェクト)(2013年7月15日 19:18:34) ==========


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

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

追記 : メモ

libusb
http://www.libusb.org/

libusb-win32
http://sourceforge.net/apps/trac/libusb-win32/wiki

WinUSB (日本語サイトと英語サイトでMSDNの階層構造が異なっている箇所もあるのですね)
http://msdn.microsoft.com/ja-jp/library/ff540196.aspx
http://msdn.microsoft.com/en-us/library/ff540196.aspx
http://msdn.microsoft.com/ja-jp/library/windows/hardware/gg487341.aspx
http://msdn.microsoft.com/en-us/library/windows/hardware/gg487341.aspx

PyUSB
http://sourceforge.net/apps/trac/pyusb/

追記 : メモ

その後、別のプロジェクトを試していて気付いたのですが、CubeSuite+には以下の不具合があるようですので、
ビルドログのところで、プロジェクト変換に失敗してしまっているのかも、と書きましたが、こちらの問題かも
しれません。

* 条件コンパイルでコンパイルされないようになっている部分に存在しないヘッダファイルを#includeする
 記述があるプロジェクトで、メニュー[ビルド]→[依存関係の更新]を実行すると、ソースファイルを全く
 変更していなくても、それ以後、そのような記述を含むソースファイルが必ず再コンパイルされてしまう。

例1) 以下のような記述があって、include.hが存在しない場合

#if 0
#include "include.h"
#endif

例2) 以下のような記述があって、iodefine_rx62n.hやyrdkrx62n.hが存在しない場合

#define PLATFORM_RSK62N 1

#if PLATFORM_RDK62N==1
    #include "iodefine_rx62n.h"
    #include "yrdkrx62n.h"
#elif PLATFORM_RSK62N==1
    #include "iodefine.h"
#else
    #error INVALID PLATFORM!
#endif

追記 : メモ

その後、このビルドの件は、ビルドツールのプロパティで[インクルードファイルが存在しないソースの扱い]を
[再コンパイル/アセンブルしない]に設定することで、とりあえず、回避出来ることが分かりました。



関連記事

2013/07/15   blog-entry-308   category: RX /* 32bit CISC */

go page top