Index: rc_autosar_rh850/trunk/driver/can_if.c
===================================================================
--- rc_autosar_rh850/trunk/driver/can_if.c	(revision 113)
+++ rc_autosar_rh850/trunk/driver/can_if.c	(revision 113)
@@ -0,0 +1,172 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ *
+ *  本ソフトウェアは，AUTOSAR（AUTomotive Open System ARchitecture）仕
+ *  様に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するもので
+ *  はない．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利
+ *  用する者に対して，AUTOSARパートナーになることを求めている．
+ *  
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ *
+ *  $Id: target_rc_car.c 20 2015-04-20 14:29:19Z honda $
+ */
+#include "Os.h"
+#include "can_if.h"
+#include "hsbrh850f1l_device.h"
+#include "prc_sil.h"
+
+/*
+ *  Port 0 Configration for RSCAN0
+ *   P10_1 : RSCAN0_TX : 第2兼用
+ *   P10_0 : RSCAN0_RX : 第2兼用
+ */
+#define RSCAN0_P10_MASK			((uint16) 0x0003)
+#define RSCAN0_PMC10_INIT		((uint16) 0x0003)
+#define RSCAN0_PFCAE10_INIT		((uint16) 0x0000)
+#define RSCAN0_PFCE10_INIT		((uint16) 0x0000)
+#define RSCAN0_PFC10_INIT		((uint16) 0x0003)
+#define RSCAN0_PM10_INIT		((uint16) 0x0001)
+#define RSCAN0_PIBC10_INIT		((uint16) 0x0001)
+
+/*
+ *   rscan_port_init();
+ */
+static void
+rscan_port_init(void) {
+	uint16 wk;
+
+	/*
+	 *  CAN0
+	 *   RX : P10_1
+	 *   TX : P10_0
+	 */
+	/* PFCAE0 設定 */
+	wk = sil_reh_mem((void *) PFCAE(10));
+	wk &= ~RSCAN0_P10_MASK;
+	wk |= (RSCAN0_PFCAE10_INIT & RSCAN0_P10_MASK);
+	sil_wrh_mem((void *) PFCAE(10), wk);
+
+	/* PFCE0 設定 */
+	wk = sil_reh_mem((void *) PFCE(10));
+	wk &= ~RSCAN0_P10_MASK;
+	wk |= (RSCAN0_PFCE10_INIT & RSCAN0_P10_MASK);
+	sil_wrh_mem((void *) PFCE(10), wk);
+
+	/* PFC0 設定 */
+	wk = sil_reh_mem((void *) PFC(10));
+	wk &= ~RSCAN0_P10_MASK;
+	wk |= (RSCAN0_PFC10_INIT & RSCAN0_P10_MASK);
+	sil_wrh_mem((void *) PFC(10), wk);
+
+	/* PMC0 設定 */
+	wk = sil_reh_mem((void *) PMC(10));
+	wk &= ~RSCAN0_P10_MASK;
+	wk |= (RSCAN0_PMC10_INIT & RSCAN0_P10_MASK);
+	sil_wrh_mem((void *) PMC(10), wk);
+
+	/* PM0 設定 */
+	wk = sil_reh_mem((void *) PM(10));
+	wk &= ~RSCAN0_P10_MASK;
+	wk |= (RSCAN0_PM10_INIT & RSCAN0_P10_MASK);
+	sil_wrh_mem((void *) PM(10), wk);
+
+	/* PIBC0 設定 */
+	wk = sil_reh_mem((void *) PIBC(10));
+	wk &= ~RSCAN0_P10_MASK;
+	wk |= (RSCAN0_PIBC10_INIT & RSCAN0_P10_MASK);
+	sil_wrh_mem((void *) PIBC(10), wk);
+
+	/* CANトランシーバポート初期化(現状CanTrcvが存在しないため，ここで初期化する) */
+	sil_wrh_mem((void *) P(9U), sil_reh_mem((void *) P(9U)) & 0xFFFDU);
+	sil_wrh_mem((void *) PM(9U), sil_reh_mem((void *) PM(9U)) & 0xFFFDU);
+	sil_wrh_mem((void *) PMC(9U), sil_reh_mem((void *) PMC(9U)) & 0xFFFDU);
+}
+
+/* C_ISO_CANOSCクロック分周レジスタ */
+#define CKSC_ICANOSCD_CTL			0xFFF8AA00U
+
+static void
+rscan_clock_init() {
+	/* CANで使用するクロック(C_ISO_CANOSC)に メインクロック(MainOsc)を設定する */
+	sil_wrw_mem((void *) PROTCMD1, 0x000000A5U);
+	sil_wrw_mem((void *) CKSC_ICANOSCD_CTL, 0x00000001U);
+	sil_wrw_mem((void *) CKSC_ICANOSCD_CTL, 0xFFFFFFFEU);
+	sil_wrw_mem((void *) CKSC_ICANOSCD_CTL, 0x00000001U);
+}
+
+/*
+ *  CANの初期化
+ */
+void
+tCanInit(void)
+{
+	rscan_clock_init();
+
+	rscan_port_init();
+
+	/* CAM初期化 */
+	RsCanInit(0);
+}
+
+void
+tCanSetMailBoxInfo(uint8 mb_id, uint8 direction,
+								uint32 id, uint8 mask)
+{
+	RsCanSetMailBoxInfo(0, mb_id, direction, 0, id, mask, 0);
+}
+
+/*
+ *  CANの有効化
+ */
+void
+tCanEnable(void)
+{
+	RsCanEnable(0);
+}
+
+/*
+ *  CANデータの受信
+ */
+uint8
+tCanGetRxData(uint8 mb_id, uint8 id, uint8 *p_data, uint8 *p_len){
+	return RsCanGetRxData(0, mb_id, p_data, p_len);
+}
+
+/*
+ *  CANデータの送信
+ */
+uint8
+tCanSetTxData(uint8 mb_id, uint8 id, uint8 *p_data, uint8 len){
+	return RsCanSetTxData(0, mb_id, id, p_data, len);
+}
Index: rc_autosar_rh850/trunk/driver/can_if.h
===================================================================
--- rc_autosar_rh850/trunk/driver/can_if.h	(revision 113)
+++ rc_autosar_rh850/trunk/driver/can_if.h	(revision 113)
@@ -0,0 +1,90 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ *
+ *  本ソフトウェアは，AUTOSAR（AUTomotive Open System ARchitecture）仕
+ *  様に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するもので
+ *  はない．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利
+ *  用する者に対して，AUTOSARパートナーになることを求めている．
+ *  
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ *
+ *  $Id: target_rc_car.h 20 2015-04-20 14:29:19Z honda $
+ */
+
+/*
+ *		CANドライバのインタフェース
+ */
+
+#ifndef TARGET_CAN_IF_H
+#define TARGET_CAN_IF_H
+
+/*
+ *  CAN関連 : ボディ系コマンド用CAN送受信メールボックスID
+ */
+#define BODYCMD_CANMSG_TXMBOX_ID		0
+#define BODYCMD_CANMSG_RXMBOX_ID		0
+
+/*
+ *  CAN関連 : 制御系コマンド用CANメッセージ用CAN送受信メールボックスID
+ */
+#define CONTCMD_CANMSG_TXMBOX_ID		2 
+#define CONTCMD_CANMSG_RXMBOX_ID		1
+
+/*
+ *  CANの初期化
+ */
+extern void tCanInit(void);
+
+/*
+ *  メールボックスの設定
+ */
+extern void tCanSetMailBoxInfo(uint8 mb_id, uint8 direction,
+							   uint32 id, uint8 mask);
+
+/*
+ *  CAN通信の有効化
+ */
+extern void tCanEnable(void);
+
+/*
+ *  CANデータの送信
+ */
+extern uint8 tCanGetRxData(uint8 mb_id, uint8 id, uint8 *p_data, uint8 *p_len);
+
+/*
+ *  CANデータの受信
+ */
+extern uint8 tCanSetTxData(uint8 mb_id, uint8 id, uint8 *p_data, uint8 len);
+
+#endif /* TARGET_CAN_IF_H */
Index: rc_autosar_rh850/trunk/driver/driver_if.c
===================================================================
--- rc_autosar_rh850/trunk/driver/driver_if.c	(revision 113)
+++ rc_autosar_rh850/trunk/driver/driver_if.c	(revision 113)
@@ -0,0 +1,254 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ *
+ *  本ソフトウェアは，AUTOSAR（AUTomotive Open System ARchitecture）仕
+ *  様に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するもので
+ *  はない．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利
+ *  用する者に対して，AUTOSARパートナーになることを求めている．
+ *  
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ *
+ *  $Id: target_rc_car.c 20 2015-04-20 14:29:19Z honda $
+ */
+#include "Os.h"
+#include "driver_if.h"
+#include "rlin3x.h"
+#include "hsbrh850f1l_device.h"
+#include "taub_pwm.h"
+#include "prc_sil.h"
+
+/*
+ *  IOポート経由で接続されたTLU01の制御
+ */
+
+/*
+ * TLU01-1 : P10_11
+ * TLU01-2 : P10_10
+ * TLU01-3 : P10_9
+ * TLU01-4 : P10_8
+ * TLU01-5 : P10_7
+ * TLU01-6 : P10_6
+ * TLU01-7 : P9_6
+ * TLU01-8 : P9_5
+ */
+
+#define TLU01_P10  0x0FC0 /* P10_11, P10_10, P10_9, P10_8, P10_7, P10_6 */
+#define TLU01_P9   0x0060 /* P9_6, P9_5 */
+
+/*
+ *  ボディー系の初期化
+ */
+void
+tInitBody(void)
+{
+	uint16 wk;
+
+	/* PMC10 設定 */
+	wk = sil_reh_mem((void *) PMC(10));
+	wk &= ~TLU01_P10;
+	sil_wrh_mem((void *) PMC(10), wk);
+
+	/* PM10 設定 */
+	wk = sil_reh_mem((void *) PM(10));
+	wk &= ~TLU01_P10;
+	sil_wrh_mem((void *) PM(10), wk);
+
+	wk = sil_reh_mem((void *) P(10));
+	wk &= ~TLU01_P10;
+	sil_wrh_mem((void *) P(10), wk);
+
+	/* PMC9 設定 */
+	wk = sil_reh_mem((void *) PMC(9));
+	wk &= ~TLU01_P9;
+	sil_wrh_mem((void *) PMC(9), wk);
+
+	/* PM9 設定 */
+	wk = sil_reh_mem((void *) PM(9));
+	wk &= ~TLU01_P9;
+	sil_wrh_mem((void *) PM(9), wk);
+
+	wk = sil_reh_mem((void *) P(9));
+	wk &= ~TLU01_P9;
+	sil_wrh_mem((void *) P(9), wk);
+}
+
+#define TLU01_PORT_MIN 0
+#define TLU01_PORT_MAX 7
+
+static const uint32 tlu01_pinfo[8] ={
+	0x0A0200, /* WINKER_L   */
+	0x0A0400, /* WINKER_R   */
+	0x0A0080, /* BREAK_LAMP */
+	0x0A0800, /* HEAD_LAMP  */
+	0x0A0100, /* FOG_LAMP   */
+	0x0A0040, /* BACK_LAMP  */
+	0x090040, /* BUZZER     */
+	0x090020, /* Reserve    */
+};
+
+void
+tlu01_set(uint8 no, boolean on)
+{
+	uint16 wk;
+	uint16 pattern;
+	uint32 pinfo;
+	uint8  portno;
+
+	if (!(no <= TLU01_PORT_MAX)) {
+		return;
+	}
+
+	pinfo = tlu01_pinfo[no];
+	pattern =  pinfo & 0xffff;
+	portno  =  (tlu01_pinfo[no] >> 16);
+
+	wk = sil_reh_mem((void *) P(portno));
+	if (on) {
+		wk |=  pattern;
+	}
+	else {
+		wk &= ~pattern;
+	}
+	sil_wrh_mem((void *) P(portno), wk);
+}
+
+/*
+ *  個別のLEDの設定
+ */
+void
+tSetEachLED(uint8 no, boolean on)
+{
+	tlu01_set(no, on);
+}
+
+/*
+ *  接続LEDの最大数
+ */
+#define MAX_LED_NO		6
+
+/*
+ *  LEDの設定
+ */
+void
+tSetLED(uint32 pattern)
+{
+	int loop;
+
+	for(loop = 0; loop <= MAX_LED_NO; loop++){
+		if((pattern & (1 << loop)) != 0){
+			tlu01_set(loop, TRUE);
+		}
+		else{
+			tlu01_set(loop, FALSE);
+		}
+	}
+}
+
+void
+tSetBuzzer(boolean onoff){
+	uint16 wk;
+
+	wk = sil_reh_mem((void *) P(9));
+	if(onoff == TRUE){
+		wk |= 1 << 6;
+	}
+	else {
+		wk &= ~(1 << 6);
+	}
+	sil_wrh_mem((void *) P(9), wk);
+}
+
+/*
+ *  SDBDT接続のUARTの初期化
+ */
+void
+tInitSBDBTUart(void)
+{
+	rlin3x_init();
+}
+
+/*
+ *  SDBDT接続のUARTからの受信
+ */
+boolean
+tReceiveSBDBTUart(unsigned char *p_str, uint32 len)
+{
+	return rlin3x_receive(p_str, len);
+}
+
+/*
+ *  SDBDT接続のUARTへ送信
+ */
+boolean
+tSendSBDBTUart(unsigned char *p_str)
+{
+	uint16	len = strlen(p_str);
+	return rlin3x_send(p_str, len);
+}
+
+/*
+ *  PWM関連の初期化
+ */
+void
+tInitPWM(uint32 cycle_us, uint32 servo_duty_us, uint32 esc_duty_us)
+{
+	taub_init_pwm(cycle_us, servo_duty_us, esc_duty_us);
+}
+
+/*
+ *  サーボのデューティ比の変更
+ */
+void
+tChangeServoDuty(uint32 servo_duty_us)
+{
+	taub_change_servo_duty(servo_duty_us);
+}
+
+/*
+ *  ESCのデューティ比の変更
+ */
+void
+tChangeESCDuty(uint32 esc_duty_us)
+{
+	taub_change_esc_duty(esc_duty_us);
+}
+
+/*
+ *  ESCのデューティ比の変更
+ */
+void
+tChangeESCDuty100NS(uint32 esc_duty_100ns)
+{
+	taub_change_esc_duty_100ns(esc_duty_100ns);
+}
Index: rc_autosar_rh850/trunk/driver/driver_if.h
===================================================================
--- rc_autosar_rh850/trunk/driver/driver_if.h	(revision 113)
+++ rc_autosar_rh850/trunk/driver/driver_if.h	(revision 113)
@@ -0,0 +1,129 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ *
+ *  本ソフトウェアは，AUTOSAR（AUTomotive Open System ARchitecture）仕
+ *  様に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するもので
+ *  はない．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利
+ *  用する者に対して，AUTOSARパートナーになることを求めている．
+ *  
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ *
+ *  $Id: target_rc_car.h 20 2015-04-20 14:29:19Z honda $
+ */
+
+/*
+ *		ドライバへのインタフェース
+ */
+
+#ifndef TARGET_DRIVER_IF_H
+#define TARGET_DRIVER_IF_H
+
+#include "hsbrh850f1l_device.h"
+
+/*
+ *  ボディー系の初期化
+ */
+extern void tInitBody(void);
+
+/*
+ *  tSetEachLEDで指示する値
+ */
+#define WINKER_L_NO		0
+#define WINKER_R_NO		1
+#define BREAK_LAMP_NO	2
+#define HEAD_LAMP_NO	3
+#define FOG_LAMP_NO		4
+#define BACK_LAMP_NO	5
+
+/*
+ *  個別のLEDの設定用マクロ
+ */
+#define WINKER_L_SET(on)		tSetEachLED(WINKER_L_NO, (on))
+#define WINKER_R_SET(on)		tSetEachLED(WINKER_R_NO, (on))
+#define HEAD_LAMP_SET(on)		tSetEachLED(HEAD_LAMP_NO,  (on))
+#define FOG_LAMP_SET(on)		tSetEachLED(FOG_LAMP_NO, (on))
+#define BRAKE_LAMP_SET(on)		tSetEachLED(BREAK_LAMP_NO, (on))
+#define BACK_LAMP_SET(on)		tSetEachLED(BACK_LAMP_NO, (on))
+
+/*
+ *  個別のLEDの設定
+ */
+extern void tSetEachLED(uint8 no, boolean on);
+
+/*
+ *  LEDの設定
+ */
+extern void tSetLED(uint32 pattern);
+
+/*
+ *  ブザーのセット
+ */
+extern void tSetBuzzer(boolean onoff);
+
+/*
+ *  SDBDT接続のUARTの初期化
+ */
+extern void tInitSBDBTUart(void);
+
+/*
+ *  SDBDT接続のUARTからの受信
+ */
+extern boolean tReceiveSBDBTUart(unsigned char *p_str, uint32 len);
+
+/*
+ *  SDBDT接続のUARTへの送信
+ */
+extern boolean tSendSBDBTUart(unsigned char *p_str);
+
+/*
+ *  PWM関連の初期化
+ */
+extern void tInitPWM(uint32 cycle_us, uint32 servo_duty_us, uint32 esc_duty_us);
+
+/*
+ *  サーボのデューティ比の変更
+ */
+extern void tChangeServoDuty(uint32 servo_duty_us);
+
+/*
+ *  ESCのデューティ比の変更
+ */
+extern void tChangeESCDuty(uint32 esc_duty_us);
+
+/*
+ *  ESCのデューティ比の変更
+ */
+extern void tChangeESCDuty100NS(uint32 esc_duty_100ns);
+
+#endif /* TARGET_DRIVER_IF_H */
Index: rc_autosar_rh850/trunk/driver/hsbrh850f1l_device.c
===================================================================
--- rc_autosar_rh850/trunk/driver/hsbrh850f1l_device.c	(revision 113)
+++ rc_autosar_rh850/trunk/driver/hsbrh850f1l_device.c	(revision 113)
@@ -0,0 +1,277 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *      Software
+ *
+ *  Copyright (C) 2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ *
+ *  本ソフトウェアは，AUTOSAR（AUTomotive Open System ARchitecture）仕
+ *  様に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するもので
+ *  はない．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利
+ *  用する者に対して，AUTOSARパートナーになることを求めている．
+ *  
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ *
+ *  $Id: hsbrh850f1l_device.c 20 2015-04-20 14:29:19Z honda $
+ */
+
+/*
+ * HSBRH850F1Lボード上のデバイス操作関数群
+ */
+#include "Os.h"
+#include "hsbrh850f1l_device.h"
+#include "prc_sil.h"
+
+/*
+ * LED接続ポート
+ * 
+ * 拡張I/OボードのLED1-3はプログラマブル入出力ポート4に
+ * 次のように接続されている．
+ *  D1 : P8_4
+ *  D2 : P8_5
+ *  D3 : P8_6
+ *  D4 : P8_7
+ */
+
+#define LED1_PORT  0x10
+#define LED2_PORT  0x20
+#define LED3_PORT  0x40
+#define LED4_PORT  0x80
+
+#define LED_PORT_MASK (LED4_PORT|LED3_PORT|LED2_PORT|LED1_PORT)
+
+/*
+ *  LED接続ポート初期化
+ */ 
+void
+led_init(void){
+	uint16 wk;
+
+	/* PMC8 設定 */
+	wk = sil_reh_mem((void *) PMC(8));
+	wk &= ~LED_PORT_MASK;
+	sil_wrh_mem((void *) PMC(8), wk);
+
+	/* PM8 設定 */
+	wk = sil_reh_mem((void *) PM(8));
+	wk &= ~LED_PORT_MASK;
+	sil_wrh_mem((void *) PM(8), wk);
+
+	/* All Off */
+	led_out(LED_OFF);
+}
+
+/*
+ *  LED接続ポート書き込み
+ */ 
+void
+led_out(uint8 led_data){
+	uint16 wk;
+	uint16 ptn = 0;
+
+	if (led_data & LED1){
+		ptn |= LED1_PORT;
+	}
+	if (led_data & LED2){
+		ptn |= LED2_PORT;
+	}
+	if (led_data & LED3){
+		ptn |= LED3_PORT;
+	}
+	if (led_data & LED4){
+		ptn |= LED4_PORT;
+	}
+
+	ptn = ~ptn & LED_PORT_MASK;
+	wk = sil_reh_mem((void *) P(8));
+	wk &= ~LED_PORT_MASK;
+	wk |= ptn;
+	sil_wrh_mem((void *) P(8), wk);
+}
+
+/*
+ * DIPスイッチ接続ポート
+ * 
+ * 拡張I/OボードのSW1-4はプログラマブル入出力ポート
+ * にインバータを介して接続されている．
+ *  DSW1 : P0_7
+ *  DSW2 : P0_8
+ *  DSW3 : P0_9
+ *  DSW4 : P0_10
+ */
+
+#define DSW1_PORT  0x0080
+#define DSW2_PORT  0x0100
+#define DSW3_PORT  0x0200
+#define DSW4_PORT  0x0400
+
+#define DSW_PORT_MASK (DSW4_PORT|DSW3_PORT|DSW2_PORT|DSW1_PORT)
+
+/*
+ * DIPスイッチ接続ポート初期化
+ */
+void
+switch_dip_init(void)
+{
+	uint16 wk;
+
+	/* PMC0 設定 */
+	wk = sil_reh_mem((void *) PMC(0));
+	wk &= ~DSW_PORT_MASK;
+	sil_wrh_mem((void *) PMC(0), wk);
+
+	/* PM0 設定 */
+	wk = sil_reh_mem((void *) PM(0));
+	wk |= DSW_PORT_MASK;
+	sil_wrh_mem((void *) PM(0), wk);
+
+	/* PIBC0 設定 */
+	wk = sil_reh_mem((void *) PIBC(0));
+	wk |= DSW_PORT_MASK;
+	sil_wrh_mem((void *) PIBC(0), wk);
+}
+
+/*
+ * DIPスイッチ状態の読み込み
+ */
+uint8
+switch_dip_sense(void)
+{
+	uint16 wk;
+	uint16 ptn = 0;
+
+	wk = sil_reh_mem((void *) PPR(0));
+
+	if (!(wk & DSW1_PORT)){
+		ptn |= DSW1;
+	}
+	if (!(wk & DSW2_PORT)){
+		ptn |= DSW2;
+	}
+	if (!(wk & DSW3_PORT)){
+		ptn |= DSW3;
+	}
+	if (!(wk & DSW4_PORT)){
+		ptn |= DSW4;
+	}
+
+	return(ptn);
+}
+
+/*
+ * PUSHスイッチ接続ポート
+ * 
+ *  PSW2 : P8_0 (INTP4) : 第3兼用
+ *  PSW1 : P8_1 (INTP5) : 第3兼用
+ */
+#define PSW2_PORT  0x0002
+#define PSW1_PORT  0x0001
+#define PSW_PORT_MASK  0x0003
+
+#define PSW_PORT_PFCAE_INIT  0x0000
+#define PSW_PORT_PFCE_INIT   0x0003
+#define PSW_PORT_PFC_INIT    0x0000
+#define PSW_PORT_PMC_INIT    0x0003
+#define PSW_PORT_PM_INIT     0x0003
+#define PSW_PORT_PIBC_INIT   0x0003
+
+#define FCLA0CTL4_INTPL 0xFFC34030
+#define FCLA0CTL5_INTPL 0xFFC34034
+
+/*
+ * PUSHスイッチ接続ポート初期化
+ */
+void
+switch_push_init(void)
+{
+	uint16 wk;
+
+	/* PFCAE8 設定 */
+	wk = sil_reh_mem((void *) PFCAE(8));
+	wk &= ~PSW_PORT_MASK;
+	wk |= (PSW_PORT_PFCAE_INIT & PSW_PORT_MASK);
+	sil_wrh_mem((void *) PFCAE(8), wk);
+
+	/* PFCE8 設定 */
+	wk = sil_reh_mem((void *) PFCE(8));
+	wk &= ~PSW_PORT_MASK;
+	wk |= (PSW_PORT_PFCE_INIT & PSW_PORT_MASK);
+	sil_wrh_mem((void *) PFCE(8), wk);
+
+	/* PFC8 設定 */
+	wk = sil_reh_mem((void *) PFC(8));
+	wk &= ~PSW_PORT_MASK;
+	wk |= (PSW_PORT_PFC_INIT & PSW_PORT_MASK);
+	sil_wrh_mem((void *) PFC(8), wk);
+
+	/* PMC8 設定 */
+	wk = sil_reh_mem((void *) PMC(8));
+	wk &= ~PSW_PORT_MASK;
+	wk |= (PSW_PORT_PMC_INIT & PSW_PORT_MASK);
+	sil_wrh_mem((void *) PMC(8), wk);
+
+	/* PM8 設定 */
+	wk = sil_reh_mem((void *) PM(8));
+	wk &= ~PSW_PORT_MASK;
+	wk |= (PSW_PORT_PM_INIT & PSW_PORT_MASK);
+	sil_wrh_mem((void *) PM(8), wk);
+
+	/* PIBC8 設定 */
+	wk = sil_reh_mem((void *) PIBC(8));
+	wk &= ~PSW_PORT_MASK;
+	wk |= (PSW_PORT_PIBC_INIT & PSW_PORT_MASK);
+	sil_wrh_mem((void *) PIBC(8), wk);
+
+	/* エッジ検出立ち下がり */
+	sil_wrb_mem((void *)FCLA0CTL4_INTPL, 0x02);
+	sil_wrb_mem((void *)FCLA0CTL5_INTPL, 0x02);
+}
+
+/*
+ * PUSHスイッチ状態の読み込み
+ */
+uint8
+switch_push_sense(void)
+{
+	uint16 wk;
+	uint16 mask;
+
+	wk = sil_reh_mem((void *) PPR(8));
+	mask =0;
+	if(!(wk & PSW1_PORT)) {
+		mask |= PSW1;
+	}
+	if(!(wk & PSW2_PORT)) {
+		mask |= PSW2;
+	}
+
+	return(mask);
+}
Index: rc_autosar_rh850/trunk/driver/hsbrh850f1l_device.h
===================================================================
--- rc_autosar_rh850/trunk/driver/hsbrh850f1l_device.h	(revision 113)
+++ rc_autosar_rh850/trunk/driver/hsbrh850f1l_device.h	(revision 113)
@@ -0,0 +1,113 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ *
+ *  本ソフトウェアは，AUTOSAR（AUTomotive Open System ARchitecture）仕
+ *  様に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するもので
+ *  はない．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利
+ *  用する者に対して，AUTOSARパートナーになることを求めている．
+ *  
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ *
+ *  $Id: hsbrh850f1l_device.h 20 2015-04-20 14:29:19Z honda $
+ */
+
+/*
+ * HSBRH850F1Lボード上のデバイス操作関数群の外部宣言
+ */
+
+#ifndef _RH850F1L_DEVICE_H_
+#define _RH850F1L_DEVICE_H_
+
+#include "Os.h"
+
+/*
+ * LEDのON/OFFパターン
+ */
+#define LED1		0x01
+#define LED2		0x02
+#define LED3		0x04
+#define LED4		0x08
+#define LED_OFF		0x00
+
+/*
+ *  LED接続ポート初期化
+ */ 
+extern void led_init(void);
+
+/*
+ *  LED接続ポート書き込み
+ */ 
+extern void led_out(uint8 led_data);
+
+/*
+ * DIPスイッチ接続ビット
+ */
+#define DSW1		0x01
+#define DSW2		0x02
+#define DSW3		0x04
+#define DSW4		0x08
+
+/*
+ * DIPスイッチ接続ポート初期化
+ */
+extern void switch_dip_init(void);
+
+/*
+ * DIPスイッチ状態の読み込み
+ */
+extern uint8 switch_dip_sense(void);
+
+/*
+ * ポート1のPUSHスイッチ接続ビット
+ */
+#define PSW1		0x02
+#define PSW2		0x01
+
+/*
+ * PUSHスイッチ接続ポート初期化
+ */
+extern void switch_push_init(void);
+
+/*
+ * PUSHスイッチ状態の読み込み
+ */
+extern uint8 switch_push_sense(void);
+
+/*
+ * LEDとスイッチの状態マクロ
+ */
+#define ON		1	/* LEDやスイッチON状態  */
+#define OFF		0	/* LEDやスイッチOFF状態 */
+
+#endif /* _RH850F1L_DEVICE_H_ */
Index: rc_autosar_rh850/trunk/driver/rc.h
===================================================================
--- rc_autosar_rh850/trunk/driver/rc.h	(revision 113)
+++ rc_autosar_rh850/trunk/driver/rc.h	(revision 113)
@@ -0,0 +1,104 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ *
+ *  本ソフトウェアは，AUTOSAR（AUTomotive Open System ARchitecture）仕
+ *  様に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するもので
+ *  はない．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利
+ *  用する者に対して，AUTOSARパートナーになることを求めている．
+ *  
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ *
+ *  $Id: target_rc_car.h 20 2015-04-20 14:29:19Z honda $
+ */
+
+/*
+ *		ESC(スピードコントローラ)及びサーボのパラメータ定義
+ */
+
+#ifndef ESC_H
+#define ESC_H
+
+/*
+ *  ESCのパラメータ
+ */
+
+/*
+ *  使用するESCの選択
+ */
+#define ESC_TLU104BK
+//#define ESC_TLU105BK
+
+
+/*
+ *  各ESCのパラメータ
+ */
+
+/* TLU104BK用のパラメータ */
+#ifdef ESC_TLU104BK
+#define ESC_N_100NS				15000
+#define ESC_DMAX_100NS			14000
+#define ESC_RMAX_100NS			17000
+#define ESC_DTH_100NS			14500 
+#define ESC_RTH_100NS			15300
+#define ESC_D2R_100NS			16500
+#define ESC_BREAK_100NS			18000
+#define ESC_WAIT_N2R_WAIT_10MS	4  /* ニュートラルからリバースまでの待ち時間(10MS単位) */
+#define ESC_WAIT_D2B_WAIT_10MS	10 /* ドライブからブレーキまでの待ち時間(10MS単位)     */
+#define ESC_WAIT_D2NR_WAIT_10MS	8  /* ドライブからリバースする際のニュートラルまでの待ち時間(10MS単位) */
+#endif /* ESC_TLU104BK */
+
+
+/* TLU105BK用のパラメータ */
+#ifdef ESC_TLU105BK
+#define ESC_N_US				1550
+#define ESC_DMAX_100NS			14000
+#define ESC_RMAX_100NS			17000
+#define ESC_DTH_100NS			14900 
+#define ESC_RTH_100NS			15500
+#define ESC_D2R_100NS			16500
+#define ESC_BREAK_100NS			20000
+#define ESC_WAIT_N2R_WAIT_10MS	4  /* ニュートラルからリバースまでの待ち時間(10MS単位) */
+#define ESC_WAIT_D2B_WAIT_10MS	8  /* ドライブからブレーキまでの待ち時間(10MS単位)     */
+#define ESC_WAIT_D2NR_WAIT_10MS	8  /* ドライブからリバースする際のニュートラルまでの待ち時間(10MS単位) */
+#endif /* ESC_TLU105BK */
+
+
+/*
+ *  パワトレ関連 : サーボのパラメータ
+ */
+#define SERVO_N_US		1570
+#define SERVO_RMAX_US	1870 
+#define SERVO_LMAX_US	1200
+
+#endif /* ESC_H */
Index: rc_autosar_rh850/trunk/driver/rcb3.c
===================================================================
--- rc_autosar_rh850/trunk/driver/rcb3.c	(revision 113)
+++ rc_autosar_rh850/trunk/driver/rcb3.c	(revision 113)
@@ -0,0 +1,243 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *      Software
+ *
+ *  Copyright (C) 2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ *
+ *  本ソフトウェアは，AUTOSAR（AUTomotive Open System ARchitecture）仕
+ *  様に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するもので
+ *  はない．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利
+ *  用する者に対して，AUTOSARパートナーになることを求めている．
+ *  
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ *
+ *  $Id: rcb3.c 20 2015-04-20 14:29:19Z honda $
+ */
+/*
+ *		RCB3電文解析処理
+ */
+#include "Os.h"
+#include "rcb3.h"
+
+/*
+ *  PS3コントローラのボタンの数
+ */
+#define PS3_NUM_OF_BUTTON 14
+#define PS3_NUM_OF_ANALOG 4
+
+/*
+ *  電文フォーマットのタイプ
+ */
+enum rcb3_st {
+	RCB3_ST_HEADER_1,
+	RCB3_ST_BUTTON_1,
+	RCB3_ST_BUTTON_2, 
+	RCB3_ST_ANALOG_1,
+	RCB3_ST_ANALOG_2,
+	RCB3_ST_ANALOG_3,
+	RCB3_ST_ANALOG_4,
+	RCB3_ST_SUM, 
+};
+
+/*
+ *  受信メッセージ解析用グローバル変数
+ */
+static enum rcb3_st s_rcb3_st = RCB3_ST_HEADER_1;
+static int			s_rcb3_rmsg_cnt;
+uint8				g_rcb3_rmsg[RCB3_MSG_LEN];
+
+/*
+ *  ボタンメッセージ判別用グローバル変数
+ */
+static const uint16 msg_button_pattern[PS3_NUM_OF_BUTTON] = {
+	RCB3_MSG_BUTTON_UP,
+	RCB3_MSG_BUTTON_DOWN,
+	RCB3_MSG_BUTTON_LEFT,
+	RCB3_MSG_BUTTON_RIGHT,
+	RCB3_MSG_BUTTON_TRIANGLE,
+	RCB3_MSG_BUTTON_CROSS,
+	RCB3_MSG_BUTTON_NOUGHT,
+	RCB3_MSG_BUTTON_SQUARE,
+	RCB3_MSG_BUTTON_L1,
+	RCB3_MSG_BUTTON_L2,
+	RCB3_MSG_BUTTON_R1,
+	RCB3_MSG_BUTTON_R2,
+	RCB3_MSG_BUTTON_START,
+	RCB3_MSG_BUTTON_SELECT
+};
+
+/*
+ *  ボタン状態保持用グローバル変数
+ *   ダブルバッファとして前状態と現在状態を保存する
+ */
+static boolean	s_ps3button[2][PS3_NUM_OF_BUTTON];
+static sint8	 s_ps3analog[2][PS3_NUM_OF_ANALOG];
+
+/*
+ * 前状態と現在状態を示すポインタ
+ */
+boolean	*p_g_pre_ps3button;
+boolean	*p_g_cur_ps3button;
+sint8	*p_g_pre_ps3analog;
+sint8	*p_g_cur_ps3analog;
+
+
+void
+rcb3_Init(void)
+{
+	/* Init button */
+	p_g_pre_ps3button = s_ps3button[0];
+	p_g_cur_ps3button = s_ps3button[1];
+	p_g_pre_ps3analog = s_ps3analog[0];
+	p_g_cur_ps3analog = s_ps3analog[1];
+}
+
+/*
+ *  ボタン情報は2バイトとなっているため2バイトデータとして戻す
+ */
+static uint16
+rcb3_GetReceivedButton()
+{
+	uint16 button_cmd;
+
+	button_cmd = (g_rcb3_rmsg[RCB3_MSG_OFFSET_BUTTON_H] << 8) | g_rcb3_rmsg[RCB3_MSG_OFFSET_BUTTON_L];
+
+	return button_cmd;
+}
+
+/*
+ *  ボタン状態の更新
+ */
+static void
+rcb3_UpdateStatus(void)
+{
+	boolean *tmp_button;
+	sint8 *tmp_analog;
+	int i;
+	uint16 button = rcb3_GetReceivedButton();
+
+	/*
+	 *  前状態と現在状態のポインタを更新
+	 */
+	tmp_button = p_g_pre_ps3button;
+	tmp_analog = p_g_pre_ps3analog;
+
+	p_g_pre_ps3button = p_g_cur_ps3button;
+	p_g_pre_ps3analog = p_g_cur_ps3analog;
+
+	p_g_cur_ps3button = tmp_button;
+	p_g_cur_ps3analog = tmp_analog;
+
+	/*
+	 *  現在のデジタルボタンの状態を更新
+	 */
+	for(i = 0; i < PS3_NUM_OF_BUTTON; i++) {
+		if ((button & msg_button_pattern[i])) {
+			p_g_cur_ps3button[i] = TRUE;
+		}
+		else {
+			p_g_cur_ps3button[i] = FALSE;
+		}
+	}
+
+	/*
+	 *  現在のアナログボタンの状態を更新
+	 */
+	for(i = 0; i < PS3_NUM_OF_ANALOG; i++) {
+		uint8 val = g_rcb3_rmsg[RCB3_MSG_OFFSET_L_ANALOG_LR + i];
+		p_g_cur_ps3analog[i] = ((sint8)val - RCB3_MSG_ANALOG_NEUTRAL);
+	}
+}
+
+/*
+ *  RCB3コマンドの解析
+ * 
+ *  受信した1バイト毎に引数に指定して呼び出す．
+ *  電文の最後でTRUEを返す．
+ */
+boolean
+rcb3_AddReceivedByte(uint8 c)
+{
+	boolean rval = FALSE;
+	int i;
+	uint8 sum = 0;
+
+	switch (s_rcb3_st) {
+	case RCB3_ST_HEADER_1:
+		if (c == RCB3_MSG_HEADER_1) {
+			s_rcb3_rmsg_cnt = 0;
+			g_rcb3_rmsg[s_rcb3_rmsg_cnt++] = c;
+			s_rcb3_st = RCB3_ST_BUTTON_1;
+		}
+		break;
+	case RCB3_ST_BUTTON_1:
+		g_rcb3_rmsg[s_rcb3_rmsg_cnt++] = c;
+		s_rcb3_st = RCB3_ST_BUTTON_2;
+		break;
+	case RCB3_ST_BUTTON_2:
+		g_rcb3_rmsg[s_rcb3_rmsg_cnt++] = c;
+		s_rcb3_st = RCB3_ST_ANALOG_1;
+		break;
+	case RCB3_ST_ANALOG_1:
+		g_rcb3_rmsg[s_rcb3_rmsg_cnt++] = c;
+		s_rcb3_st = RCB3_ST_ANALOG_2;
+		break;
+	case RCB3_ST_ANALOG_2:
+		g_rcb3_rmsg[s_rcb3_rmsg_cnt++] = c;
+		s_rcb3_st = RCB3_ST_ANALOG_3;
+		break;
+	case RCB3_ST_ANALOG_3:
+		g_rcb3_rmsg[s_rcb3_rmsg_cnt++] = c;
+		s_rcb3_st = RCB3_ST_ANALOG_4;
+		break;
+	case RCB3_ST_ANALOG_4:
+		g_rcb3_rmsg[s_rcb3_rmsg_cnt++] = c;
+		s_rcb3_st = RCB3_ST_SUM;
+		break;
+	case RCB3_ST_SUM:
+		g_rcb3_rmsg[s_rcb3_rmsg_cnt++] = c;
+		for(i = 1; i < (RCB3_MSG_LEN - 1); i++) {
+			sum += g_rcb3_rmsg[i];
+		}
+		sum &= 0x7f;
+		if (c == sum) {
+			rcb3_UpdateStatus();
+			rval = TRUE;
+		}
+		else{
+			rcb3_ErrorCb(sum, c, g_rcb3_rmsg);
+		}
+		s_rcb3_st = RCB3_ST_HEADER_1;
+		break;
+	}
+	return rval;
+}
Index: rc_autosar_rh850/trunk/driver/rcb3.h
===================================================================
--- rc_autosar_rh850/trunk/driver/rcb3.h	(revision 113)
+++ rc_autosar_rh850/trunk/driver/rcb3.h	(revision 113)
@@ -0,0 +1,133 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ *
+ *  本ソフトウェアは，AUTOSAR（AUTomotive Open System ARchitecture）仕
+ *  様に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するもので
+ *  はない．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利
+ *  用する者に対して，AUTOSARパートナーになることを求めている．
+ *  
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ *
+ *  $Id: rcb3.h 20 2015-04-20 14:29:19Z honda $
+ */
+/*
+ *		RCB3電文解析処理外部宣言
+ */
+#ifndef _RCB3_H_
+#define _RCB3_H_
+
+/*
+ *  RCB3 Message format
+ */
+#define RCB3_MSG_LEN 8
+#define RCB3_MSG_HEADER_1 0x80
+
+#define RCB3_MSG_OFFSET_BUTTON_H 1
+#define RCB3_MSG_OFFSET_BUTTON_L 2
+#define RCB3_MSG_OFFSET_L_ANALOG_LR  3
+#define RCB3_MSG_OFFSET_L_ANALOG_UD  4
+#define RCB3_MSG_OFFSET_R_ANALOG_LR  5
+#define RCB3_MSG_OFFSET_R_ANALOG_UD  6
+
+#define RCB3_MSG_BUTTON_UP        0x0001
+#define RCB3_MSG_BUTTON_DOWN      0x0002
+#define RCB3_MSG_BUTTON_RIGHT     0x0004
+#define RCB3_MSG_BUTTON_LEFT      0x0008
+#define RCB3_MSG_BUTTON_TRIANGLE  0x0010
+#define RCB3_MSG_BUTTON_CROSS     0x0020
+#define RCB3_MSG_BUTTON_NOUGHT    0x0040
+#define RCB3_MSG_BUTTON_SQUARE    0x0100
+#define RCB3_MSG_BUTTON_L1        0x0200
+#define RCB3_MSG_BUTTON_L2        0x0400
+#define RCB3_MSG_BUTTON_R1        0x0800
+#define RCB3_MSG_BUTTON_R2        0x1000
+#define RCB3_MSG_BUTTON_START     0x0003
+#define RCB3_MSG_BUTTON_SELECT    0x000C
+
+#define RCB3_MSG_ANALOG_MAX      127
+#define RCB3_MSG_ANALOG_MIN        1
+#define RCB3_MSG_ANALOG_NEUTRAL   64
+
+
+/*
+ * 前状態と現在状態を示すポインタ
+ */
+extern boolean  *p_g_pre_ps3button;
+extern boolean  *p_g_cur_ps3button;
+extern sint8    *p_g_pre_ps3analog;
+extern sint8    *p_g_cur_ps3analog;
+extern uint8     g_rcb3_rmsg[RCB3_MSG_LEN];
+
+/*
+ *  各ボタン状態の番号
+ */
+#define NO_PS3BUTTON_UP        0
+#define NO_PS3BUTTON_DOWN      1
+#define NO_PS3BUTTON_LEFT      3
+#define NO_PS3BUTTON_RIGHT     2
+#define NO_PS3BUTTON_TRIANGLE  4
+#define NO_PS3BUTTON_CROSS     5
+#define NO_PS3BUTTON_NOUGHT    6
+#define NO_PS3BUTTON_SQUARE    7
+#define NO_PS3BUTTON_L1        8
+#define NO_PS3BUTTON_L2        9
+#define NO_PS3BUTTON_R1        10
+#define NO_PS3BUTTON_R2        11
+#define NO_PS3BUTTON_START     12
+#define NO_PS3BUTTON_SELECT    13
+
+#define NO_PS3ANALOG_L_LR  0
+#define NO_PS3ANALOG_L_UD  1
+#define NO_PS3ANALOG_R_LR  2
+#define NO_PS3ANALOG_R_UD  3
+
+/*
+ *  初期化処理 
+ */
+void rcb3_Init(void);
+
+/*
+ *  RCB3コマンドの解析
+ * 
+ *  受信した1バイト毎に引数に指定して呼び出す．
+ *  電文の最後でTRUEを返す．
+ */
+extern boolean rcb3_AddReceivedByte(uint8 c);
+
+/*
+ *  エラー時のコールバック関数（ユーザーファイルで定義）
+ */
+extern void rcb3_ErrorCb(uint8 calc_sum, uint8 recv_sum, uint8 *p_rcb3_rmsg);
+
+#endif /* _RCB3_H_ */
Index: rc_autosar_rh850/trunk/driver/rlin3x.arxml
===================================================================
--- rc_autosar_rh850/trunk/driver/rlin3x.arxml	(revision 113)
+++ rc_autosar_rh850/trunk/driver/rlin3x.arxml	(revision 113)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="EUC-JP"?>
+<!-- Generated by ABREX Ver. 1.1.0 -->
+<AUTOSAR xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-0-3_STRICT.xsd">
+	<AR-PACKAGES>
+		<AR-PACKAGE>
+			<SHORT-NAME>Ecuc</SHORT-NAME>
+			<ELEMENTS>
+				<ECUC-MODULE-CONFIGURATION-VALUES>
+					<SHORT-NAME>Os</SHORT-NAME>
+					<DEFINITION-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/Os</DEFINITION-REF>
+					<ECUC-DEF-EDITION>4.2.0</ECUC-DEF-EDITION>
+					<IMPLEMENTATION-CONFIG-VARIANT>VARIANT-PRE-COMPILE</IMPLEMENTATION-CONFIG-VARIANT>
+					<CONTAINERS>
+						<ECUC-CONTAINER-VALUE>
+							<SHORT-NAME>OsInclude</SHORT-NAME>
+							<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/EcucDefs/Os/OsInclude</DEFINITION-REF>
+							<PARAMETER-VALUES>
+								<ECUC-TEXTUAL-PARAM-VALUE>
+									<DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">/AUTOSAR/EcucDefs/Os/OsInclude/OsIncludeFileName</DEFINITION-REF>
+									<VALUE>rlin3x.h</VALUE>
+								</ECUC-TEXTUAL-PARAM-VALUE>
+							</PARAMETER-VALUES>
+						</ECUC-CONTAINER-VALUE>
+						<ECUC-CONTAINER-VALUE>
+							<SHORT-NAME>RLIN3x_TX_ISR</SHORT-NAME>
+							<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/EcucDefs/Os/OsIsr</DEFINITION-REF>
+							<PARAMETER-VALUES>
+								<ECUC-NUMERICAL-PARAM-VALUE>
+									<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/AUTOSAR/EcucDefs/Os/OsIsr/OsIsrInterruptNumber</DEFINITION-REF>
+									<VALUE>INTNO_RLIN3x_TX</VALUE>
+								</ECUC-NUMERICAL-PARAM-VALUE>
+								<ECUC-NUMERICAL-PARAM-VALUE>
+									<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/AUTOSAR/EcucDefs/Os/OsIsr/OsIsrInterruptPriority</DEFINITION-REF>
+									<VALUE>INTPRI_RLIN3x_TX</VALUE>
+								</ECUC-NUMERICAL-PARAM-VALUE>
+								<ECUC-TEXTUAL-PARAM-VALUE>
+									<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">/AUTOSAR/EcucDefs/Os/OsIsr/OsIsrCategory</DEFINITION-REF>
+									<VALUE>CATEGORY_2</VALUE>
+								</ECUC-TEXTUAL-PARAM-VALUE>
+								<ECUC-NUMERICAL-PARAM-VALUE>
+									<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/AUTOSAR/EcucDefs/Os/OsIsr/OsIsrStackSize</DEFINITION-REF>
+									<VALUE>592</VALUE>
+								</ECUC-NUMERICAL-PARAM-VALUE>
+							</PARAMETER-VALUES>
+						</ECUC-CONTAINER-VALUE>
+						<ECUC-CONTAINER-VALUE>
+							<SHORT-NAME>RLIN3x_RX_ISR</SHORT-NAME>
+							<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/EcucDefs/Os/OsIsr</DEFINITION-REF>
+							<PARAMETER-VALUES>
+								<ECUC-NUMERICAL-PARAM-VALUE>
+									<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/AUTOSAR/EcucDefs/Os/OsIsr/OsIsrInterruptNumber</DEFINITION-REF>
+									<VALUE>INTNO_RLIN3x_RX</VALUE>
+								</ECUC-NUMERICAL-PARAM-VALUE>
+								<ECUC-NUMERICAL-PARAM-VALUE>
+									<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/AUTOSAR/EcucDefs/Os/OsIsr/OsIsrInterruptPriority</DEFINITION-REF>
+									<VALUE>INTPRI_RLIN3x_RX</VALUE>
+								</ECUC-NUMERICAL-PARAM-VALUE>
+								<ECUC-TEXTUAL-PARAM-VALUE>
+									<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">/AUTOSAR/EcucDefs/Os/OsIsr/OsIsrCategory</DEFINITION-REF>
+									<VALUE>CATEGORY_2</VALUE>
+								</ECUC-TEXTUAL-PARAM-VALUE>
+								<ECUC-NUMERICAL-PARAM-VALUE>
+									<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">/AUTOSAR/EcucDefs/Os/OsIsr/OsIsrStackSize</DEFINITION-REF>
+									<VALUE>592</VALUE>
+								</ECUC-NUMERICAL-PARAM-VALUE>
+							</PARAMETER-VALUES>
+						</ECUC-CONTAINER-VALUE>
+					</CONTAINERS>
+				</ECUC-MODULE-CONFIGURATION-VALUES>
+			</ELEMENTS>
+		</AR-PACKAGE>
+	</AR-PACKAGES>
+</AUTOSAR>
Index: rc_autosar_rh850/trunk/driver/rlin3x.c
===================================================================
--- rc_autosar_rh850/trunk/driver/rlin3x.c	(revision 113)
+++ rc_autosar_rh850/trunk/driver/rlin3x.c	(revision 113)
@@ -0,0 +1,341 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *      Software
+ *
+ *  Copyright (C) 2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍCAUTOSARiAUTomotive Open System ARchitecturejd
+ *  lÉîÃ¢Ä¢éDãLÌøÍCAUTOSARÌmIàY ðø·éàÌÅ
+ *  ÍÈ¢DAUTOSARÍCAUTOSARdlÉîÃ¢½\tgEFAð¤pÚIÅ
+ *  p·éÒÉÎµÄCAUTOSARp[gi[ÉÈé±ÆðßÄ¢éD
+ *  
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  $Id: rlin3x.c 20 2015-04-20 14:29:19Z honda $
+ */
+/*
+ *		ÊMW
+[pUART(RLIN)hCo
+ */
+#include "Os.h"
+#include "t_stdlib.h"
+#include "target_sysmod.h"
+#include "rlin3x.h"
+
+#undef RLIN3x_BASE
+#define RLIN3x_BASE	RLIN32_BASE
+
+#define RLIN3xLWBR_B		0x00000001
+#define RLIN3xLBRP01_H		0x00000002
+#define RLIN3xLBRP0_B		0x00000002
+#define RLIN3xLBRP1_B		0x00000003
+#define RLIN3xLSTC_B		0x00000004
+#define RLIN3xLMD_B			0x00000008
+#define RLIN3xLBFC_B		0x00000009
+#define RLIN3xLSC_B			0x0000000a
+#define RLIN3xLWUP_B		0x0000000b
+#define RLIN3xLIE_B			0x0000000c
+#define RLIN3xLEDE_B		0x0000000d
+#define RLIN3xLCUC_B		0x0000000e
+#define RLIN3xLTRC_B		0x00000010
+#define RLIN3xLMST_B		0x00000011
+#define RLIN3xLST_B			0x00000012
+#define RLIN3xLEST_B		0x00000013
+#define RLIN3xLDFC_B		0x00000014
+#define RLIN3xLIDB_B		0x00000015
+#define RLIN3xLCBR_B		0x00000016
+#define RLIN3xLUDB0_B		0x00000017
+#define RLIN3xLDBR1_B		0x00000018
+#define RLIN3xLDBR2_B		0x00000019
+#define RLIN3xLDBR3_B		0x0000001a
+#define RLIN3xLDBR4_B		0x0000001b
+#define RLIN3xLDBR5_B		0x0000001c
+#define RLIN3xLDBR6_B		0x0000001d
+#define RLIN3xLDBR7_B		0x0000001e
+#define RLIN3xLDBR8_B		0x0000001f
+#define RLIN3xLUOER_B		0x00000020
+#define RLIN3xLUOR1_B		0x00000021
+#define RLIN3xLUTDR_H		0x00000024
+#define RLIN3xLUTDRL_B		0x00000024
+#define RLIN3xLUTDRH_B		0x00000025
+#define RLIN3xLURDR_H		0x00000026
+#define RLIN3xLURDRL_B		0x00000026
+#define RLIN3xLURDRH_B		0x00000027
+#define RLIN3xLUWTDR_H		0x00000028
+#define RLIN3xLUWTDRL_B		0x00000028
+#define RLIN3xLUWTDRH_B		0x00000029
+
+/*
+ *  7 : TX
+ *  8 : RX
+ */
+
+/*
+ *  Port 0 Configration for RLIN32
+ *   P10_13 : RLIN32RX : æ2p
+ *   P10_14 : RLIN32TX : æ2p 
+ */
+#define RLIN32_P10_MASK			((uint16) 0x6000)
+#define RLIN32_PMC10_INIT		((uint16) 0x6000)
+#define RLIN32_PFCAE10_INIT		((uint16) 0x0000)
+#define RLIN32_PFCE10_INIT		((uint16) 0x0000)
+#define RLIN32_PFC10_INIT		((uint16) 0x6000)
+#define RLIN32_PM10_INIT		((uint16) 0x2000)
+#define RLIN32_PIBC10_INIT		((uint16) 0x2000)
+
+/*
+ *  RLIN32p|[gÌú»
+ */
+void
+rlin3x_portinit(void)
+{
+	uint16 wk;
+
+	/*
+	 * PORT10(RLIN32)
+	 */
+	/* PFCAE10 Ýè */
+	wk = sil_reh_mem((void *) PFCAE(10));
+	wk &= ~RLIN32_P10_MASK;
+	wk |= (RLIN32_PFCAE10_INIT & RLIN32_P10_MASK);
+	sil_wrh_mem((void *) PFCAE(10), wk);
+
+	/* PFCE10 Ýè */
+	wk = sil_reh_mem((void *) PFCE(10));
+	wk &= ~RLIN32_P10_MASK;
+	wk |= (RLIN32_PFCE10_INIT & RLIN32_P10_MASK);
+	sil_wrh_mem((void *) PFCE(10), wk);
+
+	/* PFC10 Ýè */
+	wk = sil_reh_mem((void *) PFC(10));
+	wk &= ~RLIN32_P10_MASK;
+	wk |= (RLIN32_PFC10_INIT & RLIN32_P10_MASK);
+	sil_wrh_mem((void *) PFC(10), wk);
+
+	/* PMC10 Ýè */
+	wk = sil_reh_mem((void *) PMC(10));
+	wk &= ~RLIN32_P10_MASK;
+	wk |= (RLIN32_PMC10_INIT & RLIN32_P10_MASK);
+	sil_wrh_mem((void *) PMC(10), wk);
+
+	/* PM10 Ýè */
+	wk = sil_reh_mem((void *) PM(10));
+	wk &= ~RLIN32_P10_MASK;
+	wk |= (RLIN32_PM10_INIT & RLIN32_P10_MASK);
+	sil_wrh_mem((void *) PM(10), wk);
+
+	/* PIBC10 Ýè */
+	wk = sil_reh_mem((void *) PIBC(10));
+	wk &= ~RLIN32_P10_MASK;
+	wk |= (RLIN32_PIBC10_INIT & RLIN32_P10_MASK);
+	sil_wrh_mem((void *) PIBC(10), wk);
+}
+
+/*
+ *   {[[gWX^ÖÌÝèl PCLK=40MHz, 115200bps
+ */
+#define RLIN3xLWBR_VAL		0xf2
+#define RLIN3xLBRP01_VAL	10
+
+#define RxBUFF_SIZE 256
+#define TxBUFF_SIZE 256
+
+static uint8 s_rxbuff[RxBUFF_SIZE];
+static uint8 s_txbuff[TxBUFF_SIZE];
+
+static int s_rxbuff_tail;
+static int s_rxbuff_head;
+static int s_rxbuff_cnt;
+static int s_txbuff_tail;
+static int s_txbuff_head;
+static int s_txbuff_cnt;
+static boolean s_do_tx;
+
+/*
+ * ú»
+ */
+void
+rlin3x_init(void)
+{
+	s_rxbuff_tail = 0;
+	s_rxbuff_head = 0;
+	s_rxbuff_cnt  = 0;
+	s_txbuff_tail = 0;
+	s_txbuff_head = 0;
+	s_txbuff_cnt  = 0;
+	s_do_tx = FALSE;
+
+	/* Uart Mode ðLø(mCYtB^àLø) */
+	sil_wrb_mem((void *) (RLIN3x_BASE + RLIN3xLMD_B), 0x31);
+
+	/* {[[gÝè */
+	sil_wrb_mem((void *) (RLIN3x_BASE + RLIN3xLWBR_B), RLIN3xLWBR_VAL);
+	sil_wrh_mem((void *) (RLIN3x_BASE + RLIN3xLBRP01_H), RLIN3xLBRP01_VAL);
+
+	/* G[oÂ */
+	sil_wrb_mem((void *) (RLIN3x_BASE + RLIN3xLEDE_B), 0x0d);
+
+	/* f[^ tH[}bg */
+	sil_wrb_mem((void *) (RLIN3x_BASE + RLIN3xLBFC_B), 0x00);
+
+	/* Zbgð */
+	sil_wrb_mem((void *) (RLIN3x_BASE + RLIN3xLCUC_B), 0x01);
+
+	/* ZbgðÒ¿ */
+	while (sil_reb_mem((void *) (RLIN3x_BASE + RLIN3xLMST_B)) == 0x00) {
+	}
+
+	/* óM®ìÂ */
+	sil_wrb_mem((void *) (RLIN3x_BASE + RLIN3xLUOER_B), 0x03);
+
+	/* óMÝÂ */
+	sil_wrb_mem((void *) (RLIN3x_BASE + RLIN3xLIE_B), 0x03);
+
+	/* |[gÌú» */
+	rlin3x_portinit();
+}
+
+
+/*
+ * óMµ½f[^· 
+ */
+int
+rlin3x_get_rxcnt(void)
+{
+	return s_rxbuff_cnt;
+}
+
+/*
+ *  RLIN32óM 
+ */
+boolean
+rlin3x_receive(unsigned char *data, int len)
+{
+	boolean result = TRUE;
+	int loop;
+
+	SuspendOSInterrupts();
+	if (s_rxbuff_cnt < len) {
+		result = FALSE;
+	}else {
+		for(loop = 0; loop < len; loop++) {
+			*data++ = s_rxbuff[s_rxbuff_head++];
+			s_rxbuff_head = s_rxbuff_head % RxBUFF_SIZE;
+			s_rxbuff_cnt--;
+		}
+	}
+	ResumeOSInterrupts();
+
+	return result;
+}
+
+/*
+ *  RLIN32M
+ */
+boolean
+rlin3x_send(const unsigned char *data, int len)
+{
+	int loop;
+	char c;
+
+	/* ó«ª³¯êÎG[ */
+	if (s_txbuff_cnt + len > TxBUFF_SIZE) {
+		return FALSE;
+	}
+
+	/* Oobt@ÉRs[ */
+	for(loop = 0; loop < len; loop++){
+		s_txbuff[s_txbuff_tail++] = *data++;
+		s_txbuff_tail = s_txbuff_tail % TxBUFF_SIZE;
+		s_txbuff_cnt++;
+	}
+
+	if (!(s_do_tx)) {
+		SuspendOSInterrupts();
+		/* Oobt@©çæèoµM */
+		c = s_txbuff[s_txbuff_head++];
+		s_txbuff_head = s_txbuff_head % TxBUFF_SIZE;
+		s_txbuff_cnt--;
+		s_do_tx = TRUE;
+		sil_wrb_mem((void *) (RLIN3x_BASE + RLIN3xLUTDRL_B), c);
+		ResumeOSInterrupts();
+	}
+
+	return TRUE;
+}
+
+void
+rlin3x_tx_interrupt(void)
+{
+	char c;
+
+	if (s_txbuff_cnt == 0) {
+		/* obt@ªó */
+		s_do_tx = FALSE;
+	}
+	else {
+		/* obt@©çf[^ðæèoµoÍ */
+		c = s_txbuff[s_txbuff_head++];
+		s_txbuff_head = s_txbuff_head % TxBUFF_SIZE;
+		s_txbuff_cnt--;
+		sil_wrb_mem((void *) (RLIN3x_BASE + RLIN3xLUTDRL_B), c);
+		s_do_tx = TRUE;
+	}
+}
+
+ISR(RLIN3x_TX_ISR)
+{
+	rlin3x_tx_interrupt();
+}
+
+void
+rlin3x_rx_interrupt(void)
+{
+	char c;
+
+	c = sil_reb_mem((void *) (RLIN3x_BASE + RLIN3xLURDRL_B));
+
+	if (s_rxbuff_cnt < RxBUFF_SIZE) {
+		s_rxbuff[s_rxbuff_tail++] = c;
+		s_rxbuff_tail = s_rxbuff_tail % RxBUFF_SIZE;
+		s_rxbuff_cnt++;
+	}
+}
+
+ISR(RLIN3x_RX_ISR)
+{
+	rlin3x_rx_interrupt();
+}
Index: rc_autosar_rh850/trunk/driver/rlin3x.h
===================================================================
--- rc_autosar_rh850/trunk/driver/rlin3x.h	(revision 113)
+++ rc_autosar_rh850/trunk/driver/rlin3x.h	(revision 113)
@@ -0,0 +1,74 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍCAUTOSARiAUTomotive Open System ARchitecturejd
+ *  lÉîÃ¢Ä¢éDãLÌøÍCAUTOSARÌmIàY ðø·éàÌÅ
+ *  ÍÈ¢DAUTOSARÍCAUTOSARdlÉîÃ¢½\tgEFAð¤pÚIÅ
+ *  p·éÒÉÎµÄCAUTOSARp[gi[ÉÈé±ÆðßÄ¢éD
+ *  
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  $Id: rlin3x.h 20 2015-04-20 14:29:19Z honda $
+ */
+/*
+ *		ÊMW
+[pUART(RLIN)hCoÌOé¾
+ */
+#ifndef _RLIN3X_H_
+#define _RLIN3X_H_
+
+#include "rh850_f1l.h"
+
+/*
+ *  RLIN32ðÎÛÆ·é
+ */
+#define INTNO_RLIN3x_TX   157
+#define INTNO_RLIN3x_RX   158
+
+#define INTPRI_RLIN3x_TX  4
+#define INTPRI_RLIN3x_RX  4
+
+extern void rlin3x_init(void);
+extern int rlin3x_get_rxcnt(void);
+extern boolean rlin3x_receive(unsigned char *data, int len);
+extern boolean rlin3x_send(const unsigned char *data, int len);
+extern void WaitRLIN3xEvent(void);
+extern void rlin3x_tx_interrupt(void);
+extern void rlin3x_rx_interrupt(void);
+
+#endif  /* _RLIN3X_H_ */
Index: rc_autosar_rh850/trunk/driver/rlin3x.yaml
===================================================================
--- rc_autosar_rh850/trunk/driver/rlin3x.yaml	(revision 113)
+++ rc_autosar_rh850/trunk/driver/rlin3x.yaml	(revision 113)
@@ -0,0 +1,60 @@
+#
+#  TOPPERS ATK2
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+#      Automotive Kernel Version 2
+#
+#  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+#
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+#
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+#
+#  $Id: rlin3x.yaml 19 2015-04-20 13:25:00Z honda $
+#
+
+Ecuc:
+  Os:
+    OsInclude:
+      OsIncludeFileName: rlin3x.h
+    RLIN3x_TX_ISR:
+      DefinitionRef: OsIsr
+      OsIsrInterruptNumber: INTNO_RLIN3x_TX
+      OsIsrInterruptPriority: INTPRI_RLIN3x_TX
+      OsIsrCategory: CATEGORY_2
+      OsIsrStackSize: 0x250
+    RLIN3x_RX_ISR:
+      DefinitionRef: OsIsr
+      OsIsrInterruptNumber: INTNO_RLIN3x_RX
+      OsIsrInterruptPriority: INTPRI_RLIN3x_RX
+      OsIsrCategory: CATEGORY_2
+      OsIsrStackSize: 0x250
Index: rc_autosar_rh850/trunk/driver/rscan.c
===================================================================
--- rc_autosar_rh850/trunk/driver/rscan.c	(revision 113)
+++ rc_autosar_rh850/trunk/driver/rscan.c	(revision 113)
@@ -0,0 +1,389 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *      Software
+ *
+ *  Copyright (C) 2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍCAUTOSARiAUTomotive Open System ARchitecturejd
+ *  lÉîÃ¢Ä¢éDãLÌøÍCAUTOSARÌmIàY ðø·éàÌÅ
+ *  ÍÈ¢DAUTOSARÍCAUTOSARdlÉîÃ¢½\tgEFAð¤pÚIÅ
+ *  p·éÒÉÎµÄCAUTOSARp[gi[ÉÈé±ÆðßÄ¢éD
+ *  
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  $Id: fcan.c 330 2013-08-14 14:12:18Z honda $
+ */
+
+/*
+ * î{ûj
+ * EÝðgpµÈ¢
+ * E`lÌobt@Í[{bNXÆ\»µÄ0©çÌÔÆµÄµ¤
+ *  
+ * M
+ * EMobt@(16Â)ðp¢ÄÊM
+ *
+ * óM 
+ * EóMobt@(16Â)ðp¢ÄÊM
+ * EóM[Í16Â 
+ */
+#include "Os.h"
+#include "rscan.h"
+#include "t_syslog.h"
+#include "t_stdlib.h"
+#include "sysmod/serial.h"
+#include "sysmod/syslog.h"
+
+
+/*
+ *  èè`
+ */
+#define TNUM_RX_BUFF		16U
+
+/* Mobt@Ô */
+#define CAN_TX_BUFF_NO(ch, id)	((ch) * 16U + id)
+
+/* óMobt@Ô */
+#define CAN_RX_BUFF_NO(ch, id)	((ch) * TNUM_RX_BUFF + id)
+
+/* óM[ */
+#define TNUM_RXRULE			16U
+
+
+/* rbgìp */
+#define CAN_BIT0	0x00000001U
+#define CAN_BIT1	0x00000002U
+#define CAN_BIT2	0x00000004U
+#define CAN_BIT3	0x00000008U
+#define CAN_BIT4	0x00000010U
+#define CAN_BIT5	0x00000020U
+#define CAN_BIT6	0x00000040U
+#define CAN_BIT7	0x00000080U
+#define CAN_BIT8	0x00000100U
+#define CAN_BIT9	0x00000200U
+#define CAN_BIT10	0x00000400U
+#define CAN_BIT11	0x00000800U
+#define CAN_BIT12	0x00001000U
+#define CAN_BIT13	0x00002000U
+#define CAN_BIT14	0x00004000U
+#define CAN_BIT15	0x00008000U
+#define CAN_BIT16	0x00010000U
+#define CAN_BIT17	0x00020000U
+#define CAN_BIT18	0x00040000U
+#define CAN_BIT19	0x00080000U
+#define CAN_BIT20	0x00100000U
+#define CAN_BIT21	0x00200000U
+#define CAN_BIT22	0x00400000U
+#define CAN_BIT23	0x00800000U
+#define CAN_BIT24	0x01000000U
+#define CAN_BIT25	0x02000000U
+#define CAN_BIT26	0x04000000U
+#define CAN_BIT27	0x08000000U
+#define CAN_BIT28	0x10000000U
+#define CAN_BIT29	0x20000000U
+#define CAN_BIT30	0x40000000U
+#define CAN_BIT31	0x80000000U
+
+/* O[o */
+#define RSCAN0GCFG					(*(volatile uint32 *) (RSCAN0_BASE + 0x0084U))
+#define RSCAN0GCTR					(*(volatile uint32 *) (RSCAN0_BASE + 0x0088U))
+#define RSCAN0GSTS					(*(volatile uint32 *) (RSCAN0_BASE + 0x008CU))
+#define RSCAN0GAFLCFG0				(*(volatile uint32 *) (RSCAN0_BASE + 0x009CU))
+#define RSCAN0GAFLCFG1				(*(volatile uint32 *) (RSCAN0_BASE + 0x00A0U))
+#define RSCAN0GAFLECTR				(*(volatile uint32 *) (RSCAN0_BASE + 0x0098U))
+
+/* óMobt@ */
+#define RSCAN0RMNB					(*(volatile uint32 *) (RSCAN0_BASE + 0x00A4U))
+#define RSCAN0RMND(y)				(*(volatile uint32 *) (RSCAN0_BASE + 0x00A8U + ((y) * 0x04)))
+#define RSCAN0RMID(id)				(*(volatile uint32 *) (RSCAN0_BASE + 0x0600U + ((id) * 0x10)))
+#define RSCAN0RMPTQ(id)				(*(volatile uint32 *) (RSCAN0_BASE + 0x0604U + ((id) * 0x10)))
+#define RSCAN0RMDF0(id, byte)		(*(volatile uint8 *) (RSCAN0_BASE + 0x0608U + ((id) * 0x10) + (byte)))
+#define RSCAN0RMDF1(id, byte)		(*(volatile uint8 *) (RSCAN0_BASE + 0x060CU + ((id) * 0x10) + (byte)))
+
+/* `l */
+#define RSCAN0CmCFG(ch)				(*(volatile uint32 *) (RSCAN0_BASE + 0x0000U + ((ch) * 0x10U)))
+#define RSCAN0CmCTR(ch)				(*(volatile uint32 *) (RSCAN0_BASE + 0x0004U + ((ch) * 0x10U)))
+#define RSCAN0CmSTS(ch)				(*(volatile uint32 *) (RSCAN0_BASE + 0x0008U + ((ch) * 0x10U)))
+#define RSCAN0THLCC(ch)				(*(volatile uint32 *) (RSCAN0_BASE + 0x0400U + ((ch) * 0x04U)))
+
+/* óM[ */
+#define RSCAN0GAFLID(rule)			(*(volatile uint32 *) (RSCAN0_BASE + 0x0500U + ((rule) * 0x10U)))
+#define RSCAN0GAFLM(rule)			(*(volatile uint32 *) (RSCAN0_BASE + 0x0504U + ((rule) * 0x10U)))
+#define RSCAN0GAFLP0(rule)			(*(volatile uint32 *) (RSCAN0_BASE + 0x0508U + ((rule) * 0x10U)))
+#define RSCAN0GAFLP1(rule)			(*(volatile uint32 *) (RSCAN0_BASE + 0x050CU + ((rule) * 0x10U)))
+
+/* óMFIFOobt@(óMp) */
+#define RSCAN0CFCC(buf_no)			(*(volatile uint32 *) (RSCAN0_BASE + 0x0118U + ((buf_no) * 0x04U)))
+#define RSCAN0CFSTS(buf_no)			(*(volatile uint32 *) (RSCAN0_BASE + 0x0178U + ((buf_no) * 0x04U)))
+#define RSCAN0CFPCTR(buf_no)		(*(volatile uint32 *) (RSCAN0_BASE + 0x01D8U + ((buf_no) * 0x04U)))
+#define RSCAN0CFID(buf_no)			(*(volatile uint32 *) (RSCAN0_BASE + 0x0E80U + ((buf_no) * 0x10U)))
+#define RSCAN0CFPTR(buf_no)			(*(volatile uint32 *) (RSCAN0_BASE + 0x0E84U + ((buf_no) * 0x10U)))
+#define RSCAN0CFDF0(buf_no, byte)	(*(volatile uint8 *) (RSCAN0_BASE + 0x0E88U + ((buf_no) * 0x10U) + (byte)))
+#define RSCAN0CFDF1(buf_no, byte)	(*(volatile uint8 *) (RSCAN0_BASE + 0x0E8CU + ((buf_no) * 0x10U) + (byte)))
+
+/* Mobt@ */
+#define RSCAN0TMC(buf_no)			(*(volatile uint8 *)  (RSCAN0_BASE + 0x0250U + (buf_no)))
+#define RSCAN0TMSTS(buf_no)			(*(volatile uint8  *) (RSCAN0_BASE + 0x02D0U + ((buf_no) * 0x01U)))
+#define RSCAN0TMID(buf_no)			(*(volatile uint32 *) (RSCAN0_BASE + 0x1000U + ((buf_no) * 0x10U)))
+#define RSCAN0TMPTR(buf_no)			(*(volatile uint32 *) (RSCAN0_BASE + 0x1004U + ((buf_no) * 0x10U)))
+#define RSCAN0TMDF0(buf_no, byte)	(*(volatile uint8 *) (RSCAN0_BASE + 0x1008U + ((buf_no) * 0x10U) + (byte)))
+#define RSCAN0TMDF1(buf_no, byte)	(*(volatile uint8 *) (RSCAN0_BASE + 0x100CU + ((buf_no) * 0x10U) + (byte)))
+
+
+/* ML
+[ */
+#define RSCAN0TXQCC(ch)				(*(volatile uint32 *) (RSCAN0_BASE + 0x03A0U + ((ch) * 0x04U)))
+#define RSCAN0TXQSTS(ch)			(*(volatile uint32 *) (RSCAN0_BASE + 0x03C0U + ((ch) * 0x04U)))
+#define RSCAN0TXQPCTR(ch)			(*(volatile uint32 *) (RSCAN0_BASE + 0x03E0U + ((ch) * 0x04U)))
+
+/* Mð */
+#define RSCAN0THLSTS(ch)			(*(volatile uint32 *) (RSCAN0_BASE + 0x0420U + ((ch) * 0x04U)))
+#define RSCAN0THLACC(ch)			(*(volatile uint32 *) (RSCAN0_BASE + 0x1800U + ((ch) * 0x04U)))
+#define RSCAN0THLPCTR(ch)			(*(volatile uint32 *) (RSCAN0_BASE + 0x0440U + ((ch) * 0x04U)))
+
+/* C_ISO_CANOSCNbNªüWX^ */
+#define CKSC_ICANOSCD_CTL			0xFFF8AA00U
+
+/* óM[Ýè(ch0`3)p */
+#define GAFLCFG0_REG_BIT_SHIFT(ch)	(24U - ((ch) * 8U))
+
+/* óM[Ýè(ch4`5)p */
+#define GAFLCFG1_REG_BIT_SHIFT(ch)	(24U - (((ch) - 4U) * 8U))
+
+
+STATUS
+RsCanInit(uint8 ctrl_id) {
+	/*
+	 *  O[oÈú»
+	 */
+	/* CANpRAMNAXe[^XtO`FbN */
+	if ((RSCAN0GSTS & CAN_BIT3) != 0U) {
+		return STATUS_ERROR;
+	}
+
+	/* O[oXgbv[hðð */
+	RSCAN0GCTR &= ~CAN_BIT2;
+
+	/* O[oZbg[hÉJÚ */
+	RSCAN0GCTR |= CAN_BIT0;
+
+	/* CANÅgp·éNbNðCKSCLK_ICANOSC(clk_xincan)ÉÝè */
+	RSCAN0GCFG |= CAN_BIT4;
+
+	/*
+	 *  `lÌú»
+	 */
+	/* `lXgbv[hðð */
+	RSCAN0CmCTR(ctrl_id) &= ~CAN_BIT2;
+
+	/* [CAN259] `lZbg[hÉJÚ */
+	RSCAN0CmCTR(ctrl_id) |= CAN_BIT0;
+
+	/*
+	 * MÝè
+	 */
+	/* ML
+[ÍgpµÈ¢ */
+	RSCAN0TXQCC(ctrl_id) = 0x00;
+
+	/* Mðobt@ÍgpµÈ¢ */
+	RSCAN0THLCC(ctrl_id) = 0x00;
+
+	/*
+	 *  óMÝè
+	 */
+	/* Rg[ª4chÈã©»è*/
+	if (ctrl_id < 4U) {
+		/* óM[Ýè(ch0`3) */
+		RSCAN0GAFLCFG0 |= TNUM_RXRULE << GAFLCFG0_REG_BIT_SHIFT(ctrl_id);
+	}
+	else {
+		/* óM[Ýè(ch4`5) */
+		RSCAN0GAFLCFG1 |= TNUM_RXRULE << GAFLCFG1_REG_BIT_SHIFT(ctrl_id);
+	}
+
+	/*
+	 *  {[[gÌÝè
+	 */
+	/* `lRtBO[VÝè({[[g:500kbps) */
+	RSCAN0CmCFG(ctrl_id) = RSCAN_BRP_500;
+
+	return STATUS_OK;
+}
+
+
+void
+RsCanEnable(uint8 ctrl_id){
+	/* O[oZbg[h©çO[o®ì[hÉJÚ */
+	RSCAN0GCTR &= ~(CAN_BIT1 | CAN_BIT0);
+
+	/* [CAN261] `lÊM[hÉJÚ */
+	RSCAN0CmCTR(ctrl_id) &= ~(CAN_BIT1 | CAN_BIT0);
+
+	/* `lÊM[hÉÈéÜÅ[v(#67) */
+	while ((RSCAN0CmSTS(ctrl_id) &CAN_BIT7) == 0U) {
+	}
+
+	/* óMobt@Ýè */
+	RSCAN0RMNB = TNUM_RX_BUFF * TNUM_CH;
+}
+
+void
+RsCanDisable(uint8 ctrl_id) {
+	/* `lZbg[hÉJÚ */
+	RSCAN0CmCTR(ctrl_id) &= 0xFFFFFFFDU;
+}
+
+
+STATUS
+RsCanSetTxData(uint8 ctrl_id, uint8 mb_id, uint32 id, uint8 *p_data, uint8 len){
+	uint32			tm_bit;
+	uint8			i;
+
+	/* MÈç^[  */
+	if((RSCAN0TMSTS(CAN_TX_BUFF_NO(ctrl_id, mb_id)) & CAN_BIT0) == CAN_BIT0) {
+		return STATUS_SENDING;
+	}
+
+	RSCAN0TMSTS(CAN_TX_BUFF_NO(ctrl_id, mb_id)) = 0;
+
+	/* CAN-IDÝè */
+	RSCAN0TMID(CAN_TX_BUFF_NO(ctrl_id, mb_id)) = id;
+
+	/* DLCÆMxîñæ¾ */
+	tm_bit = (uint32) len << 28U;
+	tm_bit |= (uint32) 2 << 16U;
+	
+	/* DLCÆMxÝè */
+	RSCAN0TMPTR(CAN_TX_BUFF_NO(ctrl_id, mb_id)) = tm_bit;
+
+	/* [CAN059][CAN427] f[^i[ */
+	/* f[^Ýè(0`3oCg) */
+	for (i = 0U; i < 4U; i++) {
+		RSCAN0TMDF0(CAN_TX_BUFF_NO(ctrl_id, mb_id), i) = p_data[i];
+	}
+	
+	/* 4oCgÈ~ÌbZ[WL³»è */
+	if (len > 4U) {
+		/* f[^Ýè(4`7oCg) */
+		for (i = 4U; i < len; i++) {
+			RSCAN0TMDF1(CAN_TX_BUFF_NO(ctrl_id, mb_id), (i - 4U)) = p_data[i];
+		}
+	}
+
+	/* Mv */
+	RSCAN0TMC(CAN_TX_BUFF_NO(ctrl_id, mb_id)) = CAN_BIT0;
+
+	return STATUS_OK;
+}
+
+
+STATUS
+RsCanSetMailBoxInfo(uint8 ctrl_id, uint8 mb_id, uint8 direction,
+					uint8 ide, uint32 id, uint8 mask, uint32 remote){
+	static uint8	rx_rule_index_cnt = 0U;
+	uint8			rx_rule_index;
+
+	if(direction == 1) {
+		return STATUS_ERROR;
+	}
+
+	/* óM[e[u«ÝÂ */
+	RSCAN0GAFLECTR |= CAN_BIT8;
+
+	/* [ÔÌo */
+	rx_rule_index = rx_rule_index_cnt % 16U;
+
+	/* y[WÔªØèÖíé©»è */
+	if (rx_rule_index == 0U) {
+		/* y[WÔðÝè */
+		RSCAN0GAFLECTR = (CAN_BIT8 | (uint32) (rx_rule_index_cnt / 16U));
+	}
+
+	/* tB^}XNÝè */
+	RSCAN0GAFLM(rx_rule_index) = (CAN_BIT31 | mask);
+
+	/* óM[IDÝè(CAN-IDWX^) */
+	RSCAN0GAFLID(rx_rule_index) = (uint32) id;
+
+	/* óM[ðgp·éóMobt@Ìwè */
+	RSCAN0GAFLP0(rx_rule_index) = (1 << 15U) | (1 << 16U) | (mb_id << 8U);
+
+	/* óM[CfbNXðCNg */
+	rx_rule_index_cnt++;
+
+	/* óM[e[u«ÝÖ~ */
+	RSCAN0GAFLECTR &= ~CAN_BIT8;
+	
+	return STATUS_OK;
+ }
+
+
+
+STATUS
+RsCanGetRxData(uint8 ctrl_id, uint8 mb_id, uint8 *p_data, uint8 *p_len){
+	uint8	local_dlc;
+	uint8	i;
+	uint8	bufid;
+
+	bufid = CAN_RX_BUFF_NO(ctrl_id, mb_id);
+
+	/* óMµÄ¢é©mF ToDo »óÍß¤¿ */
+	if((RSCAN0RMND(bufid / 32) & (1U << (bufid % 32))) == 0) {
+		*p_len = 0;
+		return STATUS_EMPTY;
+	}
+
+	/* tONA */
+	RSCAN0RMND(bufid / 32) = ~(1U << (bufid % 32));
+
+	local_dlc = (RSCAN0RMPTQ(mb_id) >> 28);
+	*p_len = local_dlc;
+
+	/* f[^i[(0`3oCg) */
+	for (i = 0U; i < 4U; i++) {
+		p_data[i] = RSCAN0RMDF0(mb_id, i);
+	}
+
+	/* f[^ª4byteÈã©»è */
+	if (local_dlc > 4U) {
+		/* f[^i[(4`7oCg) */
+		for (i = 4U; i < local_dlc; i++) {
+			p_data[i] = RSCAN0RMDF1(mb_id, (i - 4U));
+		}
+	}
+
+	return STATUS_OK;
+}
Index: rc_autosar_rh850/trunk/driver/rscan.h
===================================================================
--- rc_autosar_rh850/trunk/driver/rscan.h	(revision 113)
+++ rc_autosar_rh850/trunk/driver/rscan.h	(revision 113)
@@ -0,0 +1,74 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍCAUTOSARiAUTomotive Open System ARchitecturejd
+ *  lÉîÃ¢Ä¢éDãLÌøÍCAUTOSARÌmIàY ðø·éàÌÅ
+ *  ÍÈ¢DAUTOSARÍCAUTOSARdlÉîÃ¢½\tgEFAð¤pÚIÅ
+ *  p·éÒÉÎµÄCAUTOSARp[gi[ÉÈé±ÆðßÄ¢éD  
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  $Id: taub_pwm.h 20 2015-04-20 14:29:19Z honda $
+ */
+#ifndef __RSCAN_H__
+#define __RSCAN_H__
+
+#include "rscan_config.h"
+
+/* Xe[^X */
+typedef uint8 STATUS;
+
+#define	STATUS_OK			0
+#define	STATUS_ERROR		1
+#define	STATUS_FULL			2
+#define	STATUS_EMPTY		3
+#define	STATUS_SENDING		4
+
+/*
+ *  vg^Cvé¾
+ */
+extern STATUS RsCanInit(uint8 ctrl_id);
+extern void RsCanEnable(uint8 ctrl_id);
+extern void RsCanDisable(uint8 ctrl_id);
+extern STATUS RsCanComStatus(uint8 ctrl_id);
+extern STATUS RsCanSetTxData(uint8 ctrl_id, uint8 mb_id, uint32 id, uint8 *p_data, uint8 len );
+extern STATUS RsCanGetRxData(uint8 ctrl_id, uint8 mb_id, uint8 *p_data, uint8 *p_len );
+extern STATUS RsCanSetMailBoxInfo(uint8 ctrl_id, uint8 mb_id, uint8 direction,
+								uint8 ide, uint32 id, uint8 mask, uint32 remote);
+
+#endif /* __RSCAN_H__ */
Index: rc_autosar_rh850/trunk/driver/rscan_config.h
===================================================================
--- rc_autosar_rh850/trunk/driver/rscan_config.h	(revision 113)
+++ rc_autosar_rh850/trunk/driver/rscan_config.h	(revision 113)
@@ -0,0 +1,68 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍCAUTOSARiAUTomotive Open System ARchitecturejd
+ *  lÉîÃ¢Ä¢éDãLÌøÍCAUTOSARÌmIàY ðø·éàÌÅ
+ *  ÍÈ¢DAUTOSARÍCAUTOSARdlÉîÃ¢½\tgEFAð¤pÚIÅ
+ *  p·éÒÉÎµÄCAUTOSARp[gi[ÉÈé±ÆðßÄ¢éD  
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  $Id: rscan_config.h 19 2015-04-20 13:25:00Z honda $
+ */
+#ifndef _RSCAN_CONFIG_H_
+#define _RSCAN_CONFIG_H_
+
+/* `l */
+#define TNUM_CH			3U
+
+/* RSCAN0 Ìx[XAhX */
+#define RSCAN0_BASE			0xFFD00000U
+
+/*
+ *  {[[gÝèÖA
+ *    fCAN(8MHz)
+ *    Tv|Cg75.0%
+ *    SJW=1Tq, TSEG2=4Tq, TSEG1=11Tq, BRP=0
+ */
+
+/* 500kbps:16TQ(1) */
+#define RSCAN_BRP_500	0x003A0000U
+
+
+#endif /* _RSCAN_CONFIG_H_ */
Index: rc_autosar_rh850/trunk/driver/taub_pwm.c
===================================================================
--- rc_autosar_rh850/trunk/driver/taub_pwm.c	(revision 113)
+++ rc_autosar_rh850/trunk/driver/taub_pwm.c	(revision 113)
@@ -0,0 +1,235 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ *
+ *  本ソフトウェアは，AUTOSAR（AUTomotive Open System ARchitecture）仕
+ *  様に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するもので
+ *  はない．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利
+ *  用する者に対して，AUTOSARパートナーになることを求めている．  
+ *  
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ *
+ *  $Id: taub_pwm.c 20 2015-04-20 14:29:19Z honda $
+ */
+/*
+ *		モータ・サーボPWM制御用TAUBドライバ
+ */
+#include "Os.h"
+#include "v850_gcc/rh850_f1l.h"
+#include "taub_pwm.h"
+#include "target_sysmod.h"
+
+/*
+ * 使用するユニットとチャネル
+ */
+#define PWM_TAUB_UNIT        0
+#define PWM_TAUB_MASTER_CH   0
+#define PWM_TAUB_SERVO_CH    8
+#define PWM_TAUB_ESC_CH     10
+
+/*
+ *  Port 0 Configration for TAUB0 channel 8 and 10
+ *   P0_11 : TAUB0O8 : 第3兼用
+ *   P0_12 : TAUB010 : 第3兼用 
+ */
+#define PWM_P0_MASK			((uint16) 0x1800)
+#define PWM_PMC0_INIT		((uint16) 0x1800)
+#define PWM_PFCAE0_INIT		((uint16) 0x0000)
+#define PWM_PFCE0_INIT		((uint16) 0x1800)
+#define PWM_PFC0_INIT		((uint16) 0x0000)
+#define PWM_PM0_INIT		((uint16) 0x0000)
+
+/*
+ * 出力ポートを有効に
+ */
+static void
+init_pwm_port(void)
+{
+	uint16 wk;
+
+	/*
+	 * PORT0(PWM)
+	 */
+	/* PFCAE0 設定 */
+	wk = sil_reh_mem((void *) PFCAE(0));
+	wk &= ~PWM_P0_MASK;
+	wk |= (PWM_PFCAE0_INIT & PWM_P0_MASK);
+	sil_wrh_mem((void *) PFCAE(0), wk);
+
+	/* PFCE0 設定 */
+	wk = sil_reh_mem((void *) PFCE(0));
+	wk &= ~PWM_P0_MASK;
+	wk |= (PWM_PFCE0_INIT & PWM_P0_MASK);
+	sil_wrh_mem((void *) PFCE(0), wk);
+
+	/* PFC0 設定 */
+	wk = sil_reh_mem((void *) PFC(0));
+	wk &= ~PWM_P0_MASK;
+	wk |= (PWM_PFC0_INIT & PWM_P0_MASK);
+	sil_wrh_mem((void *) PFC(0), wk);
+
+	/* PMC0 設定 */
+	wk = sil_reh_mem((void *) PMC(0));
+	wk &= ~PWM_P0_MASK;
+	wk |= (PWM_PMC0_INIT & PWM_P0_MASK);
+	sil_wrh_mem((void *) PMC(0), wk);
+
+	/* PM0 設定 */
+	wk = sil_reh_mem((void *) PM(0));
+	wk &= ~PWM_P0_MASK;
+	wk |= (PWM_PM0_INIT & PWM_P0_MASK);
+	sil_wrh_mem((void *) PM(0), wk);
+}
+
+/*
+ *  TAUB関連レジスタ
+ */
+#define TAUB_BASE(n)	((uint32) (0xffe30000U + (n * 0x1000U)))
+#define TAUBTPS(n)		(TAUB_BASE(n) + 0x240U)
+#define TAUBCDR(n, ch)	(TAUB_BASE(n) + (ch * 0x04U))
+#define TAUBCNT(n, ch)	(TAUB_BASE(n) + 0x80U + (ch * 0x04U))
+#define TAUBCMOR(n, ch)	(TAUB_BASE(n) + 0x200U + (ch * 0x04U))
+#define TAUBCMUR(n, ch)	(TAUB_BASE(n) + 0xC0U + (ch * 0x04U))
+#define TAUBTS(n)		(TAUB_BASE(n) + 0x1C4)
+#define TAUBTT(n)		(TAUB_BASE(n) + 0x1C8U)
+#define TAUBRDE(n)		(TAUB_BASE(n) + 0x260U)
+#define TAUBRDM(n)		(TAUB_BASE(n) + 0x264U)
+
+#define TAUBTOE(n)		(TAUB_BASE(n) + 0x5CU)
+#define TAUBTOM(n)		(TAUB_BASE(n) + 0x248U)
+#define TAUBTOC(n)		(TAUB_BASE(n) + 0x24CU)
+#define TAUBTOL(n)		(TAUB_BASE(n) + 0x040U)
+
+#define US_TO_COUNT(usec)	    ((usec * (TIMER_CLOCK_HZ/1000)) / 1000)
+#define M100NS_TO_COUNT(usec)	(((usec * (TIMER_CLOCK_HZ/1000)) / 1000) / 10)
+
+/*
+ *  クロックはCK1を使用
+ */
+#define MCU_TAUB_MASK_CK1				((uint16) 0xff0f)
+#define MCU_TAUB_CK1					((uint16) 0x0040) /* 40Mhz / 16 = 2.5Mhz */
+
+/*
+ *  タイマクロック周波数（Hz）（2.5MHz）
+ */
+#define TIMER_CLOCK_HZ		((uint32) 2500000)
+
+#define MCU_TAUB_CKS_CK1   (0x01 << 14)
+#define MCU_TAUB_MAS       (0x01 << 11)
+#define MCU_TAUB_MD0       (0x01 << 0)
+#define MCU_TAUB_STS       (0x04 << 8)
+#define MCU_TAUB_MD_ONECNT (0x04 << 1)
+
+/*
+ *  PSM用TAUBの初期化
+ */
+void
+taub_init_pwm(uint32 cycle_us, uint32 servo_duty_us, uint32 esc_duty_us)
+{
+	uint16 wk;
+
+	/* IPERI2 : TAUB0 CPUCLK2 / 1 = 40MHz */
+
+	/* 各タイマの停止 */
+	sil_wrh_mem((void *) TAUBTT(PWM_TAUB_UNIT), (1 << PWM_TAUB_MASTER_CH));
+	sil_wrh_mem((void *) TAUBTT(PWM_TAUB_UNIT), (1 << PWM_TAUB_SERVO_CH));
+	sil_wrh_mem((void *) TAUBTT(PWM_TAUB_UNIT), (1 << PWM_TAUB_ESC_CH));
+
+	/* プリスケーラを設定 */
+	wk = sil_reh_mem((void *) TAUBTPS(PWM_TAUB_UNIT));
+	wk &= MCU_TAUB_MASK_CK1;
+	wk |= MCU_TAUB_CK1;
+	sil_wrh_mem((void *) TAUBTPS(PWM_TAUB_UNIT), wk);
+
+	/* マスタチャネルの設定 */
+	sil_wrh_mem((void *) TAUBCMOR(PWM_TAUB_UNIT, PWM_TAUB_MASTER_CH),
+				(MCU_TAUB_CKS_CK1|MCU_TAUB_MAS|MCU_TAUB_MD0));
+	/* スレーブチャネル : サーボ用 */
+	sil_wrh_mem((void *) TAUBCMOR(PWM_TAUB_UNIT, PWM_TAUB_SERVO_CH),
+				(MCU_TAUB_CKS_CK1|MCU_TAUB_STS|MCU_TAUB_MD_ONECNT|MCU_TAUB_MD0));
+	/* スレーブチャネル : ESC用 */
+	sil_wrh_mem((void *) TAUBCMOR(PWM_TAUB_UNIT, PWM_TAUB_ESC_CH),
+				(MCU_TAUB_CKS_CK1|MCU_TAUB_STS|MCU_TAUB_MD_ONECNT|MCU_TAUB_MD0));
+
+	/* ユーザーモードの設定 */
+	sil_wrb_mem((void *) TAUBCMUR(PWM_TAUB_UNIT, PWM_TAUB_MASTER_CH), 0x00);
+	sil_wrb_mem((void *) TAUBCMUR(PWM_TAUB_UNIT, PWM_TAUB_SERVO_CH),  0x00);
+	sil_wrb_mem((void *) TAUBCMUR(PWM_TAUB_UNIT, PWM_TAUB_ESC_CH),    0x00);
+
+	/* 一斉書き換え禁止 */
+	sil_wrb_mem((void *) TAUBRDE(PWM_TAUB_UNIT),0x00);
+
+	/* チャネル出力モード(スレーブのみ) */
+	sil_wrh_mem((void *) TAUBTOE(PWM_TAUB_UNIT), (1 << PWM_TAUB_SERVO_CH)|(1 << PWM_TAUB_ESC_CH));
+	sil_wrh_mem((void *) TAUBTOM(PWM_TAUB_UNIT), (1 << PWM_TAUB_SERVO_CH)|(1 << PWM_TAUB_ESC_CH));
+	sil_wrh_mem((void *) TAUBTOC(PWM_TAUB_UNIT), 0x00);
+	sil_wrh_mem((void *) TAUBTOL(PWM_TAUB_UNIT), 0x00);
+
+	/* カウンタの初期値を設定 */
+	sil_wrh_mem((void *) TAUBCDR(PWM_TAUB_UNIT, PWM_TAUB_MASTER_CH), US_TO_COUNT(cycle_us));
+	sil_wrh_mem((void *) TAUBCDR(PWM_TAUB_UNIT, PWM_TAUB_SERVO_CH),  US_TO_COUNT(servo_duty_us));
+	sil_wrh_mem((void *) TAUBCDR(PWM_TAUB_UNIT, PWM_TAUB_ESC_CH),    US_TO_COUNT(esc_duty_us));
+
+	/* PWM動作開始 */
+	sil_wrh_mem((void *) TAUBTS(PWM_TAUB_UNIT),
+				(1 << PWM_TAUB_MASTER_CH)|(1 << PWM_TAUB_SERVO_CH)|(1 << PWM_TAUB_ESC_CH));
+
+	init_pwm_port();
+}
+
+/*
+ *  サーボのデューティー比を変更
+ */
+void
+taub_change_servo_duty(uint32 usec)
+{
+	sil_wrw_mem((void *) TAUBCDR(PWM_TAUB_UNIT, PWM_TAUB_SERVO_CH), US_TO_COUNT(usec));
+}
+
+/*
+ *  ESCのデューティー比を変更
+ */
+void
+taub_change_esc_duty(uint32 usec)
+{
+	sil_wrw_mem((void *) TAUBCDR(PWM_TAUB_UNIT, PWM_TAUB_ESC_CH), US_TO_COUNT(usec));
+}
+
+/*
+ *  ESCのデューティー比を変更(100nsec精度)
+ */
+void
+taub_change_esc_duty_100ns(uint32 nsec)
+{
+	sil_wrw_mem((void *) TAUBCDR(PWM_TAUB_UNIT, PWM_TAUB_ESC_CH), M100NS_TO_COUNT(nsec));
+}
Index: rc_autosar_rh850/trunk/driver/taub_pwm.h
===================================================================
--- rc_autosar_rh850/trunk/driver/taub_pwm.h	(revision 113)
+++ rc_autosar_rh850/trunk/driver/taub_pwm.h	(revision 113)
@@ -0,0 +1,79 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ *
+ *  Copyright (C) 2014-2015 by Center for Embedded Computing Systems
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍCAUTOSARiAUTomotive Open System ARchitecturejd
+ *  lÉîÃ¢Ä¢éDãLÌøÍCAUTOSARÌmIàY ðø·éàÌÅ
+ *  ÍÈ¢DAUTOSARÍCAUTOSARdlÉîÃ¢½\tgEFAð¤pÚIÅ
+ *  p·éÒÉÎµÄCAUTOSARp[gi[ÉÈé±ÆðßÄ¢éD  
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  $Id: taub_pwm.h 20 2015-04-20 14:29:19Z honda $
+ */
+/*
+ *		[^ET[{PWM§äpTAUBhCoOé¾
+ */
+#ifndef TAUB_PWM_H
+#define TAUB_PWM_H
+
+#include "driver_if.h"
+
+/*
+ *  PWMpTAUBÌú»
+ */
+void taub_init_pwm(uint32 cycle_us, uint32 servo_duty_us, uint32 esc_duty_us);
+
+/*
+ *  T[{Ìf
+[eB[äðÏX
+ */
+void taub_change_servo_duty(uint32 usec);
+
+/*
+ *  ESCÌf
+[eB[äðÏX
+ */
+void taub_change_esc_duty(uint32 usec);
+
+/*
+ *  ESCÌf
+[eB[äðÏX(100nsec¸x)
+ */
+void taub_change_esc_duty_100ns(uint32 nsec);
+
+#endif /* TAUB_PWM_H */
