文書 OSEK-RENE-AHE261.doc【H-debugger 対応】
TOPPERS/OSEK カーネル
アプリケーションノート

Ｈ８Ｓ／２６００シリーズ（ＢＯＯＴ−ＰＢＣ）
Ｈ８Ｓ／２６１２Ｆ ルネサスＣ［Ｈｅｗ］版
２００８／０９／２４

Ｒｅｖ１．５０（２００８／０９／２４）-1-

文書 OSEK-RENE-AHE261.doc

TOPPERS/OSEK Kernel
Toyohashi Open Platform for Embedded Real-Time Systems/
OSEK Kernel
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPANCopyright (C) 2004 by Embedded and Real-Time Systems Laboratory
Graduate School of Information Science, Nagoya Univ., JAPANCopyright (C) 2004-2006 by Witz Corporation, JAPANCopyright (C) 2008 by A-one Corporation, JAPAN
上記著作権者は，以下の (1)〜(4) の条件か，Free Software Foundation によって公表されている GNU General Public License の Version 2 に記述されている条件を満たす場合に限り，本ソフトウェア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
(1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作権表示，この利用条件および下記の無保証規定が，そのままの形でソー
スコード中に含まれていること．
(2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使用できる形で再配布する場合には，再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著作権表示，この利用条件および下記の無保証規定を掲載すること．
(3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使用できない形で再配布する場合には，次のいずれかの条件を満たすこと．
(a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
作権表示，この利用条件および下記の無保証規定を掲載すること．
(b) 再配布の形態を，別に定める方法によって，TOPPERS プロジェクトに報告すること．
(4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害からも，上記著作権者および TOPPERS プロジェクトを免責すること．
本ソフトウェアは，無保証で提供されているものである．上記著作権者および TOPPERS プロ
ジェクトは，本ソフトウェアに関して，その適用可能性も含めて，いかなる保証も行わない．また，本ソフトウェアの利用により直接的または間接的に生じたいかなる損害に関しても，その責任を負わない．

-2-

文書 OSEK-RENE-AHE261.doc

目
第１章

次

概要 .............................................................................................................................. 5

１−１．はじめに ...................................................................................................................... 5
１−２．関連文書 ...................................................................................................................... 5
１−３．開発環境 ...................................................................................................................... 5
１−４．製品梱包内容............................................................................................................... 5
１−５．サポート ...................................................................................................................... 5
第２章

TOPPERS/OSEK カーネルの開発階層........................................................................ 6

第３章

サンプルアプリケーションの概要(cat261)................................................................... 7

３−１． サンプルアプリケーションの構成........................................................................... 7
３−２． 動作フロー（ゼネラル） ......................................................................................... 8
３−３．

H-debugger 対応に必要なポーティング............................................................... 15

３−４．

H-debugger でのプロファイル表示(DEF 7.00B 以上) ......................................... 18

第４章

ハード構成およびシステム構成 ................................................................................. 19

４−１． ハード構成............................................................................................................. 19
４−２．システム構成............................................................................................................. 20
４−２−１．システムブロック図（サンプル） ................................................................. 20
４−２−２．CAT261 のプログラムメモリ MAP ............................................................... 21
４−２−３．プログラムサイズの詳細 MAP ...................................................................... 21
４−２−４．評価ボード(AHE261)のディップ SW の設定と I/O マップ表 ....................... 22
第５章

サンプルアプリケーションの準備 .............................................................................. 24

５−１．Hew での準備（ルネサス製） .................................................................................. 24
５−２．H-debugger(DEF.exe)での準備（Aone 製）............................................................ 27
５−３．サンプルアプリケーションを走らせる前の準備 ...................................................... 30
５−４．サンプルアプリケーションを走らせます。.............................................................. 30
第６章

新規プロジェクトを追加する場合の手順例................................................................ 32-3-

文書 OSEK-RENE-AHE261.doc

６−１．プロジェクトタイプの作成 ....................................................................................... 32
６−２．新規プロジェクトを登録します。 ............................................................................ 34
第７章

備考 ............................................................................................................................ 41

７−１．おわりに .................................................................................................................... 41--4-

文書 OSEK-RENE-AHE261.doc

第１章

概要

１−１．はじめに本アプリケーションノートは、TOPPERS/OSEK カーネルをもとに「H-debugger」と「CAT261」用にポーティングしたサンプルソフトです。
サンプルソフトの他アプリケーションへの利用／変更に関しての制限は一切ありませんので自由にお使い下さい。ただし、このサンプルソフトの不具合により発生した損害に対しての責任、及び、修正の義務は負いません。また、このサンプルソフトに関する質問の回答義務も負えませんが、メールでのお問い合わせに関しては、弊社責任の範囲内でしたら出来るだけ御答えするよ
うに努めます。Mail: cat-i@aone.co.jp

１−２．関連文書
本アプリケーションは、下記ドキュメントを参考にして作成しました。
１）TOPPERS/OSEK カーネル外部仕様書 −−−−−−−−−−−

株式会社ヴィッツ製

２）TOPPERS/OSEK カーネル SG 取扱説明書 −−−−−−−−−

株式会社ヴィッツ製

３）TOPPERS/OSEK カーネルアプリケーションノート −−−−

株式会社ヴィッツ製

４）OSEK/VDX Operating System Ver2.2.1−−−−−−−

OSEK/VDX 仕様

５）OSEK/VDX Binding Specification Ver1.4.2 −−−−−−

OSEK/VDX 仕様

６）OSEK/VDX OIL Specification Ver2.5

OSEK/VDX 仕様−−−−−−−＊OSEK/VDX が公開している仕様書は、http://www.osek-vdx.org/ よりダウンロードにより入手して下さい。

１−３．開発環境
１）Hew Version 4.04.01.001−−−−−−−−−−−−−−−−Renesas 製
２）H8S,H8/300 Standard Toolchain Version 6.2.00 −−−−−Renesas 製にて作成しましたので各自用意をして下さい。

１−４．製品梱包内容
１）サンプルソフト用 CD（本書 PDF ファイルも含む）−−−− １枚・本製品の価格体系は、CD 配布の実費のみになっております。
・AHE-KIT(CAT261 /AHE261)と、サンプル確認用ケーブル(AHC-SAMP1)は、本製品に含まれていません。（別売り）

１−５．サポート
TOPPERS/OSEK に関するサポートが必要な場合は、TOPPERS ホームページの「関連製品」「サポート・サービス」の項をご覧になり、御利用下さい。
http://www.toppers.jp/ ＜−−-TOPPERS ホームページ-5-

文書 OSEK-RENE-AHE261.doc

第２章

TOPPERS/OSEK カーネルの開発階層¥toppers_osek¥config// 機種依存階層¥h8s-renesas-2612// 開発環境分類+CPU 依存部¥cat261// システム依存部¥h8s2612st// システム依存部¥include// インクルードファイル階層¥kernel// カーネル共通部階層¥sample// サンプル階層(未使用)¥sg// システムジェネレータ階層¥impl_oil// OIL 記述の実装定義部階層¥syslib// システムライブラリ階層¥h8s-renesas-2612// 開発環境分類+CPU 依存部¥cat261// システム依存部¥h8s2612st// システム依存部¥tools// Hew 管理階層
¥h8s-renesas-2612// 開発環境分類+ワークスペース¥cat261// プロジェクト１¥appsrc// サンプルソース [*.c]¥debug// オブジェクト¥h8s2612st[*.abs]// プロジェクト２¥appsrc// サンプルソース [*.c]¥debug// オブジェクト¥Project[*.abs]// 新規プロジェクト作成用// テンプレート

本サンプルソフトは、2 本のプロジェクトを用意しています。
１）プロジェクト１¥cat261

実行オブジェクト【cat261.abs/cat261.mot】

本アプリケーションノートのサンプルプロジェクト
２）プロジェクト２¥h8s2612st 実行オブジェクト【h8s2612st.abs/h8s2612st.mot】【株式会社ヴィッツ】殿作成のサンプルを H8S/2612 用にポーティングしたプロジェクト
・TOPPERS/OSEK カーネルアプリケーションノート【株式会社ヴィッツ製】
青字部分は、TOPPERS/OSEK 正式リリース（オープンソース）になります。その他は弊社で改造および作成をしました。

--6-

文書 OSEK-RENE-AHE261.doc

第３章

サンプルアプリケーションの概要(cat261)

３−１．

サンプルアプリケーションの構成

サンプルアプリケーションは、下記の構成にて作成しました。
6 個のタスク１）① MainTask --------- 各 Task の起動処理② Task1 --------------- LCD 表示タスク(50ms 毎のサイクル処理)③ Task2 --------------- LED 出力タスク(20ms 毎のサイクル処理)④ Task3 --------------- ブザー出力タスク(イベントによる起動)⑤ Task4 --------------- シリアル(SIO)送受信タスク(200ms 毎のサイクル処理)⑥ Task5 --------------- メロディタスク(1ms 毎のサイクル処理)
8 個の割込み処理

２）① システムタイマー

TPU0(TGR0A)1ms 割込み SysTimerInt()② 動作確認用タイマー

TPU1(TGR1A)1 ショット

CounterInt()③ SCI0 受信エラー

ERI_0

ErrHwSerialInt0()④ SCI0 受信

RXI_0

RxHwSerialInt0()⑤ SCI0 送信終了

TEI_0

TxHwSerialInt0()⑥ SCI1 受信エラー

ERI_1

ErrHwSerialInt1()⑦ SCI1 受信

RXI_1

RxHwSerialInt1()⑧ SCI1 送信終了

TEI_1

TxHwSerialInt1()

３）６個のイベント
MainEvt/T1Evt/T2Evt/T3Evt/T4Evt/T5Evt
４）

５個のアラーム

MainCycArm/SetEvt1Arm/SetEvt2Arm/SetEvt4Arm/SetEvt5Arm
５）

２個のコールバック処理

CallBackArm(TimerCallBack コールバック利用のソフトタイマ)/SampleArm
６）

１個のウォッチドッグタイマー
WatchDogClear

７）

スタートアップフックルーチン
ErrorHook

８）

シャットダウンフックルーチン
ShutdownHook

９）プレタスク／エラーフックルーチン
PreTaskHook/ErrorHook１０）1 個のアプリケーションモード
AppMode1--7-

文書 OSEK-RENE-AHE261.doc

３−２．

動作フロー（ゼネラル）
PRIORITY = 14
MainTask

イベント待WatchDog クリア

ウォッチドッグクリア WatchDogClear()

全 Task の Status Get

全 Task の状態を取得 GetTaskState(....)

SW 入力処理

P40SW ON

P41SW ON

P42SW ON

P43SW ON

P44SW ON

PA0PB ON

P45SW ON

P47SW ON

Task3 Wait-

20ms 毎のサイクル起動 WaitEvent(MainEnv)

Task 起動の為、SW 入力

SwInput()

Yes LCD Task1 起動 サイクル(50ms 毎)
Yes LED Task2 起動 サイクル(20ms 毎)
Yes Buz Task3 起動

イベント起動Yes SIO Task4 起動

サイクル(200ms 毎)

Yes Mel Task5 起動

サイクル(1ms 毎)

システムテストの起動タイミング
Yes TPU1 アラームコールバック起動
Yes ShutDown 起動／WDG.TimeUP により再起動

Yes Task3 にイベント発行 SetEvent(Task3,T3Evt)-8-

文書 OSEK-RENE-AHE261.doc

PRIORITY = 10
LCD Task1

LCD 表示タスク（50ms 毎に LCD 表示する。）

イベント待

50ms 毎のサイクル起動 WaitEvent(T1Env)

P40SW ONyes
LCD 表示して良いかの判

自タスクをサスペンドす

定と処理数カウントする。

る。

① ProcessCntDisp()③AppSuspendTask()

表示 OK

yes
LCD にデモ表示
（．．
．．．
．．
．を表示する。
）

LCD の全画面表示処理
内部メモリにセットされた表示データを表示する。
②AllLcdDisp()①

ProsessCntDisp()
現在のアクティブ Task と自 Task の関係で、LCD デバイスを使用して良いか判断し、かつ、処理ループ数をカウント表示する。(Task1:10000~19999)②

AllLcdDisp()
内部メモリ「LcdBuf[LCDY][LCDX]」に登録された表示データを LCD デバイスに表示する。

③

AppSuspend()
自タスクのサスペンド情報を表示後、TerminateTask()を呼ぶ。

--9-

文書 OSEK-RENE-AHE261.doc

PRIORITY = 11
LED Task2

LED 表示タスク（20ms 毎に LED 表示する。）

イベント待

20ms 毎のサイクル起動 WaitEvent(T2Env)

P41SW ONyes
LCD 表示して良いかの判

自タスクをサスペンドす

定と処理数カウントする。

る。

① ProcessCntDisp()③AppSuspendTask()

20ms 毎に左シフト LED
表する。

表示 OK

yes
LCD にデモ表示（：：：：：を表示する。
）①

ProsessCntDisp()
現在のアクティブ Task と自 Task の関係で、LCD デバイスを使用して良いか判断し、かつ、処理ループ数をカウント表示する。(Task2:20000~29999)③

AppSuspend()
自タスクのサスペンド情報を表示後、TerminateTask()を呼ぶ。

-- 10 -

文書 OSEK-RENE-AHE261.doc

PRIORITY = 12
ブザー出力タスク

Bzz Task3

MainTask からのイベント待ち

イベント待

WaitEvent(T3Env)

P42SW ONyes
LCD 表示して良いかの判

自タスクをサスペンドす

定と処理数カウントする。

る。

① ProcessCntDisp()③AppSuspendTask()

PF7-PB ON にて、ブザー出力（+100Hz）

PC5-PB ON にて、ブザー出力（-100Hz）

表示 OK

yes

LCD 現周波数表示する。

周波数変化

有り
ブザー出力する。
②Buzzer(周波数)①ProsessCntDisp()
現在のアクティブ Task と自 Task の関係で、LCD デバイスを使用して良いか判断し、かつ、処理ループ数をカウント表示する。(Task3:30000~39999)②

Buzzer()TPU1 から、Buzzer に対して指定周波数を出力する。

③

AppSuspend()
自タスクのサスペンド情報を表示後、TerminateTask()を呼ぶ。

-- 11 -

文書 OSEK-RENE-AHE261.doc

PRIORITY = 13
SIO Task4

SIO 送受信タスク（２ｃｈの送受信を割込み処理で記述）

イベント待200ms 毎のサイクル起動 WaitEvent(T4Env)

P43SW ONyes
LCD 表示して良いかの判

自タスクをサスペンドす

定と処理数カウントする。

る。

① ProcessCntDisp()③AppSuspendTask()

SCI0 受信待ち管理タイマ
スタートする。
SCI0(TxD0)より、指定文
字を送信割り込み処理にて送信する。

SCI1 受信待ち管理タイマ
スタートする。
SCI1(TxD1)より、指定文
字を送信割り込み処理にて送信する。

②受信処理
RxD0/RxD1 の受信割込み終了を待つ

受信処理終了？

yes
RxD0/RxD1 の受信データ
を LCD に表示する。

-- 12 -

文書 OSEK-RENE-AHE261.doc②受信処理

Task4 の受信処理

RxD1 受信データを待つ
RecvSerialTxt1(.....)

RxD1 受信終了

yes

yes
受信待 TimeUp

RxD1 受信データを LCD

TimeUp 通知用表示をセ表示用バッファにセットットして RxD1 処理終了

RxD0 受信データを待つ
RecvSerialTxt0(.....)

RxD0 受信終了

yes

yes
受信待 TimeUp

RxD0 受信データを LCD

TimeUp 通知用表示をセ表示用バッファにセットットして RxD0 処理終了

2ch 処理終了？

yes
終了
①

ProsessCntDisp()
現在のアクティブ Task と自 Task の関係で、LCD デバイスを使用して良いか判断し、かつ、処理ループ数をカウント表示する。(Task4:40000~49999)②

INT8 *txt = {"AHE-ToppersCD1 for TOPPERS/OSEK by Aone"}を各 Ch から 8 文字づつリング方式により送信し、受信した文字を LCD に表示する。
TxD1 --> RxD0 で受信し、LCD の横 8 文字目から 8 文字表示する。
TxD0 --> RxD1 で受信し、LCD の横 1 文字目から 8 文字表示する。

③

AppSuspend()
自タスクのサスペンド情報を表示後、TerminateTask()を呼ぶ。

-- 13 -

文書 OSEK-RENE-AHE261.doc

PRIORITY = 14
メロディータスク（Buzzer で「ネコフンジャッタ」を演奏）

Mel Task5

イベント待

1ms 毎のサイクル起動 WaitEvent(T5Env)

P44SW ONyes
LCD 表示して良いかの判

自タスクをサスペンドす

定と処理数カウントする。

る。

① ProcessCntDisp()③AppSuspendTask()

表示 OK

yes
LCD に案内を表示する。

PC2PB ONyes
自動演奏を開始する。
「猫踏んじゃった」演奏② AutoMelody()①

ProsessCntDisp()
現在のアクティブ Task と自 Task の関係で、LCD デバイスを使用して良いか判断し、かつ、処理ループ数をカウント表示する。(Task5:50000~59999)②

AutoMelody()
Buzzer より、「ネコフンジャッタ」を演奏する。

③

AppSuspend()
自タスクのサスペンド情報を表示後、TerminateTask()を呼ぶ。

-- 14 -

文書 OSEK-RENE-AHE261.doc

３−３．

H-debugger 対応に必要なポーティング

CAT261(H8S/2612)は、BOOT ポート(SCI2)使用による PBC(PC ブレークコントローラ）を利用したデバッグモードになります。
PBC/トレースを利用するにおいて、割込みモード 2 と PBC の割込みプライオリティを 7 にして、他の割込みプライオリティを 6 以下にする必要があります。

１）ポーティング手続き１.¥config¥h8s-renesas-2612¥cat261¥sys_support.src

hardware_init_hook:ldc.b#H'80, ccr

ldc.b#H'06, exr

mov.b#H'21, r0l

mov.br0l, @SYSCR; H-debugger 用 リセット遅延の為、20msWait; Target CAT261-20MHz
wait20ms:
mov.w#20,r0bsr_SOFT1MS

dec.w

#1,r0

bne

waitrstwaitrst:

rts;/*SOFT1MS()

1ms ｿﾌﾄﾀｲﾏｰ (20.0000MHz) Non Wait */_SOFT1MS:
push.w

r0

;

mov.w

#5000,r0;/* 5000*4=20000cyc

wait:

;
dec.w

#1,r0

;/* 1 clock

*/

bne

wait:16;/* 3 clock

*/

pop.w

r0

;

rts

-

*/

- 15 -

文書 OSEK-RENE-AHE261.doc＜理由＞
CAT261(H8S2612)の場合、H-debugger からのリセット信号が RST-IC 経由で CPU につながっている為、RESET 信号の立ち上がりに遅延が発生します。
BOOT-PBC 仕様でのデバッガ処理は、RESET 立ち上げ後、20ms 毎に最大 20 回まで NMI が認識するまでターゲットに対して割り込を要求します。
その 20ms 分 CPU の走行を停止させる為、上記プログラムのようにソフトタイマーを入れます。
なお、「DEF−CPU 設定にて 200ms 遅延回路を使用する」に設定した場合は、RESET 立ち上
げしてから、200ms 経過後 NMI 要求を開始します。

２）ポーティング手続き２.¥config¥h8s-renesas-2612¥cat261¥sys_config.c/****************************************************************************//**/

ターゲットシステム依存の初期化/****************************************************************************/
void

sys_initialize( void ){IPRA = 0;/* PBC = 7 その他 6 以下とする debug 対応*//* PBC 以外のプライオリティを 0 にする。

*//* <---- PBC*/

IPRB = 0;
IPRC = 0;
IPRD

= 0;

IPRE &= 0xf0;
IPRF

= 0;

IPRG

= 0;

IPRH

= 0;

IPRJ = 0;
IPRK

= 0;

IPRM

= 0;

}

＜理由＞
ここで、PBC 以外のプライオリティを全てゼロ「0」にする。割込みイネーブルの場合、exr レ
ジスタをゼロ「0」にしますので、不用割り込みを発生させないための処置です。
使用する割込み要素は、後ほど各内部レジスタの初期化処理でプライオリティと共に設定されます。

-- 16 -

文書 OSEK-RENE-AHE261.doc

３）ポーティング手続き３.¥config¥h8s-renesas-2612¥cpu_support.src;H 7-->6 に変更する。 H-debugger 対応の為
EXR_MSK.DEFINE"H'06"＜理由＞
OS カーネル内でもブレークおよびトレース実行を可能にする為、割込みディセーブルをする為の exr レジスタマスクを「6」にします。
その他、[exr]設定部分を全てを見直す。

-- 17 -

文書 OSEK-RENE-AHE261.doc

３−４．

H-debugger でのプロファイル表示(DEF 7.00B 以上)

ターゲット側の RAM を使用して、各 Task のプロファイル表示をします。
１）ポーティング手続き.¥syslib¥h8s-renesas-2612¥sys_timer.h#define USE_PROFILE#ifdef USE_PROFILE#define PROFILESIZE

1024#define PROFILEPRETASK

1#endif①「USE_PROFILE」を有効にすると、プロファイル表示が可能になります。不要になった場
合は、コメントアウトして下さい。
②「PROFILESIZE」は、ターゲット側で確保する RAM のバイト数になります。
アプリケーションに応じて調整して下さい。
③「USE_PROFILE」を有効にする事により、下記変数が確保されます。
UINT8_TaskProFile[PROFILESIZE];UINT8TaskProFlg;

UINT16

TaskProFileIdx;④システムタイマー割り込みのタイミングで現 Running 中の TaskID を「_TaskProFile」に順次記憶していきます。（リングバッファ）⑤サンプリング場所は、「プレタスクフックルーチン」と「ISR(SysTimerInt)」の 2 箇所です。
⑥プロファイル表示させたい場合は、DEF メニュー＜データ＞−＜プロファイル表示＞をクリックして下さい。
[3-4-1]表示例「更新」PB をクリックしますと最新データを表示します。
「周期更新」にチェックしますと、常時最新状態をターゲットからオンザフライ機能により、データを収集し、Task 状態を表示します。

-- 18 -

文書 OSEK-RENE-AHE261.doc

第４章

ハード構成およびシステム構成

４−１．

ハード構成

この解説書を進めるにあたり、下記ハード構成の準備をお願いします。

専用シリアル線

DC5V(+)

H-debugger
AH6000/AH7000

C
超小型マイコンN

CAT261

１

CN13 にサンプル確認用ケーブルを接続

３(AHC-SAMP1)
Windows
PC

RS232C/USB

評価ボード AHE261

［接続例］

-

- 19 -

文書 OSEK-RENE-AHE261.doc

４−２．システム構成
サンプルのシステムブロック図およびメモリマップと I/O 表を記述します。

［評価ボード回路図］

AHE261_man_sch.pdf［ＣＡＴ２６１回路図］ CAT261-C3P.pdf / CAT261 取説.pdf

４−２−１．システムブロック図（サンプル）

超小型マイコン
CAT261（エーワン製）
H8S/2612
CPU クロック 20.0MHz

ｷｬﾗｸﾀﾀｲﾌﾟ LCD ﾓｼﾞｭｰﾙ
PD0→PD7LCD1DM1602F

PC6：PC7
LED1->LED8
P10→P17

8点◎◎◎◎◎◎◎◎BUZZER 1 個

PB0/TIOCA3

外取り付け必要(AHC-SAMP1)
DIP-SW11

RS232C(TXD0)

ループバックテスト用

RS232C(TXD1)

DIP-SW11

2点

RS232C(RXD0)
RS232C(RXD1)
押しボタンスイッチ［PB］
PA0,PC2,PC5,PF7

PA0,PC2,PC5,PF7 4 点

トグルスイッチ
P40→P47-

P40->P47[SW] 8 点- 20 -

文書 OSEK-RENE-AHE261.doc

４−２−２．CAT261 のプログラムメモリ MAP
CPU 内部
H8S/2612
フラッシュ ROM

0x0--------------ベクタテーブル①
0x200-----------デバッグモニタ開始番地
0x800-----------アプリケーションプログラム開始番地②

128Kbyte
0x1FFFF------FROM 最終

CPU 内部 RAM10xFFE000----アプリケーション使用 RAM の開始番地③

約 4Kbyte
0xFFEFBE---初期スタックポインタ位置(0xFFEFBE)④

CPU 内部 RAM2

0xFFFFCO---デバッグモニタが使用する RAM 開始番地

64byte0xFFFFFF----RAM 最終(デバッガが使用する)＜セクション名>① ベクタテーブル----------------------------------------- V②アプリケーションプログラムの開始番地---------- P,C,D③アプリケーション使用 RAM の開始番地---------- B,R④初期スタックポインタ位置---------------------------- S −(スタックサイズ)
４−２−３．プログラムサイズの詳細 MAP
開始番地
0x200
0x800
0x16F00x2D26
0x4DD00x52AF

-

サイズ
0x600
0xEF0
0x1636
0x20AA
0x4DF

分類
デバッガモニタ（ファーム）
アプリケーション（main....etc）
割込みハンドラ、内部 I/O 関係の関数
TOPPERS/OSEK カーネル
C ライブラリ、ROM テーブル、etc
最終アドレス- 21 -

文書 OSEK-RENE-AHE261.doc

４−２−４．評価ボード(AHE261)のディップ SW の設定と I/O マップ表
SW11 の設定

ON

OFF

SW11-1

シリアル I/O のTXD0,RXD1 を折り返し

シリアル I/O のTXD0,RXD1 間オープン

SW11-2

シリアル I/O のTXD1,RXD0 を折り返し

シリアル I/O のTXD1,RXD0 間オープン

ＬＣＤ関係
ﾎﾟｰﾄｱﾄﾞﾚｽ

ﾎﾟｰﾄｼﾝﾎﾞﾙ

0xffff0c

PDDR

0xffff0b

PCDR

ピン番号
CN1-7B
1-7A
1-6B
1-6A
1-5B
1-5A
1-4B
1-4A
CN２-9A-9B

ﾋﾟﾝｼﾝﾎﾞﾙ
PD0
PD1
PD2
PD3
PD4
PD5
PD6
PD7
PC6
PC7

方向
出力
出力
出力
出力
出力
出力
出力
出力
出力
出力

信号名
D0 LCD-module
D1
D2
D3
D4
D5
D6
D7
RS LCD-module
E LCD-module
未使用
未使用
未使用
未使用
未使用

-14A

P07

未使用

ＬＥＤ関係
ﾎﾟｰﾄｱﾄﾞﾚｽ0xffff00

ﾎﾟｰﾄｼﾝﾎﾞﾙ

P1DR

ピン番号
CN1-14A
1-14B
1-15A
1-15B
1-16A
1-16B
1-17A
1-17B

ブザー関係（タイマ／ＴＰＵ３
ﾎﾟｰﾄｱﾄﾞﾚｽ0xfffe88-

ﾎﾟｰﾄｼﾝﾎﾞﾙ
TGRA_3

ﾋﾟﾝｼﾝﾎﾞﾙ
P10
P11
P12
P13
P14
P15
P16
P17

ＴＩＯＣＡ３

ピン番号
CN2-10A

方向
出力
出力
出力
出力
出力
出力
出力
出力

アウトプットコンペア出力）

ﾋﾟﾝｼﾝﾎﾞﾙ
PB0/TIOCA3- 22 -

信号名
LED1
LED2
LED3
LED4
LED5
LED6
LED7
LED8

仕様
ＰＷＭモード パルス出力

文書 OSEK-RENE-AHE261.doc

押しボタンスイッチ関係
ﾎﾟｰﾄｱﾄﾞﾚｽ0xffffb9
0xffffbb

ﾎﾟｰﾄｼﾝﾎﾞﾙ
POATA
PORTC

0xffffbe

POATF

ピン番号
CN1-3B
2-7A
2-8B
2-5B

ﾋﾟﾝｼﾝﾎﾞﾙ
PA0
PC2
PC5
PF7

方向

ピン番号
CN1-13B
1-13A
1-12B
1-12A
1-11B
1-11A
1-10B
1-10A

ﾋﾟﾝｼﾝﾎﾞﾙ
P40
P41
P42
P43
P44
P45
P46
P47

方向

入力
入力
入力
入力

信号名
SW12 PB[PA0]
SW13 PB[PC2]
SW14 PB[PC5]SW15 PB[PF7]トグルスイッチ関係
ﾎﾟｰﾄｱﾄﾞﾚｽ0xffffb3

ﾎﾟｰﾄｼﾝﾎﾞﾙ

PORT４

入力
入力
入力
入力
入力
入力
入力
入力

信号名
SW16 SW[P40]
SW17 SW[P41]
SW18 SW[P42]
SW19 SW[P43]
SW20 SW[P44]
SW21 SW[P45]
SW22 SW[P46]
SW23 SW[P47]

外部ブザー回路図 (型式 AHC-SAMP1)別売りで用意しております。
47K
CN13-8B(PB0/TIOCA3)
2.2K

-

1

2

CN13-2A(GND)

BZ(PKM13EPY-4002-B0)- 23 -

文書 OSEK-RENE-AHE261.doc

第５章

サンプルアプリケーションの準備

５−１．Hew での準備（ルネサス製）
１）TOPPERS のホームページより、OSEK カーネル最新リリースをダウンロードして下さい。
URL:http://www.toppers.jp/osek-os.html
２）ダウンロードした「osek_os-x.x.lzh」を、適当なディレクトリに置き解凍して下さい。
３）サンプルアプリケーション用 CD の「.¥toppers_osek_Renesas_2612」の指定ファイルを、
OSEK カーネルにコピーします。
＜DL した OSEK 側＞＜CD 側＞.¥toppers_osek_Renesas_2612¥config¥h8s-renesas-2612 --> .¥toppers_osek¥config.¥toppers_osek_Renesas_2612¥syslib¥h8s-renesas-2612 --> .¥toppers_osek¥syslib.¥toppers_osek_Renesas_2612¥tools¥h8s-renesas-2612--> .¥toppers_osek¥tools

上記ディレクトリ下の全ファイルを、OSEK カーネルにディレクトリごと全コピーして下さい。

４）Hew を起動します。
・Hew Version 4.04.01.001−−−−−−−−−−−−−−−−Renesas 製
・H8S,H8/300 Standard Toolchain Version 6.2.00 −−−−−Renesas 製

５）Hew メニューの＜ファイル＞−＜ワークスペースを開く＞でワークスペースを開きます。
・".¥toppers_osek¥tools¥h8s-renesas-2612¥h8s-renesas.hws"を指定します。
・ディレクトリ情報が変わりますので、下記ウォーニングが表示されますが、気にせず「はい」を指定して下さい。
[5-1-1]-- 24 -

文書 OSEK-RENE-AHE261.doc

６）アクティブプロジェクトが「cat261」になっていることを確認します。cat261 になっていない場合は、Hew メニューの＜プロジェクト＞−＜アクティブプロジェクトに設定＞で「cat261」を指定して下さい。
[5-1-2]

７）Hew メニューの＜ビルド＞−＜すべてをビルド＞をクリックして下さい。
[5-1-3]-- 25 -

文書 OSEK-RENE-AHE261.doc

８）ウォーニングが表示されますがライブラリの上書きメッセージですので無視して下さい。
[5-1-4]
Build Finished
0 Errors, 1 Warningと表示されます。

-- 26 -

文書 OSEK-RENE-AHE261.doc

５−２．H-debugger(DEF.exe)での準備（Aone 製）
１）H-debugger コントロールソフト「DEF.exe」を起動します。
２）DEF メニューの＜オプション＞−＜環境設定＞の「本体機種設定」が正しい機種と COM
ポートの選択をされているか確認して下さい。

３）DEF メニュー＜オプション＞−＜CPU 設定＞をクリックします。
[5-2-1]
CPU シリーズ名： H8S/2612F
クロック(MHz) ： 20.0000

モニタワークエリアの場所：固定番地

リセット遅延防止タイマ使用しない：チェック最低上記４項目を設定後、「設定」にクリック
します。

４）DEF メニュー＜ファイル＞−＜アブソリュートファイル設定＞をクリックします。
[5-2-2]
左図のように 3 箇所にチェックします。

-- 27 -

文書 OSEK-RENE-AHE261.doc

５）DEF 画面、左下隅の「Start」をクリックします。（ターゲット側の電源は ON の事）[5-2-3]６）評価キット(AHE261/CAT261)に登録してあるプログラムによっては、下図の様な確認画面が表示されますが無視して「OK」をクリックして下さい。
[5-2-4]モニタのワークエリアを固定番
地指定しましたので、スタック方式でモニタが入っていた場合
この様な表示になります。

７）ターゲット側と正常な通信を確立しますと下図の様な画面になります。
[5-2-5]-- 28 -

文書 OSEK-RENE-AHE261.doc

８）DEF メニュー＜ファイル＞−＜ダウンロード＞をクリックします。
.¥toopers_osek¥tools¥h8s-renesas-2612¥tools¥cat261¥debug まで降ります。
[5-2-6]
cat261.abs を選択後「開く」をクリックします。

[5-2-7]
ダウンロード中は、このようなインジケータ表示します。

９）ダウンロードが成功しますと、下図のような DEF 画面になります。
[5-2-8]

ShortPB[RstMon]On でこの View 画面になります-- 29 -

文書 OSEK-RENE-AHE261.doc

５−３．サンプルアプリケーションを走らせる前の準備
１）評価ボード「AHE261」の SW「P40~P47」の 8 点全て OFF（下側）にします。
２）評価ボード「AHE261」の DIP-SW11 の 1･2 の 2 点を ON(上側）にします。
３）評価ボード「AHE261」の CN13 にブザーの付いたコネクタ(AHC-SAMP1)を装着します。
（無い場合は、未装着でも構いません）
４）CPU 基板「CAT261」の DIP-SW1 の 1･2･3･4 の 4 点を ON（下側）にします。

５−４．サンプルアプリケーションを走らせます。
１）DEF のショート PB「Go」をクリックします。[5-2-8]図を参照（１）評価ボードの LCD に下図のようになれば正常です。
TOPPERS/OSEK 1.1[5-4-1]for CAT261[P4xS]（２）評価ボードの SW-P40 を ON(上側）にする。
LCDTask1 [xxxxx][5-4-2]................

LCD Task1 が起動します。

（３）評価ボードの SW-P41 を ON(上側）にする。
LEDTask2 [xxxxx][5-4-3]::::::::::::::::

LED Task2 が起動します。

（４）評価ボードの SW-P42 を ON(上側）にする。
BzzTask3 [xxxxx][5-4-4]xxxxHz[+PF7-PC5]

Bzz Task3 が起動します。
（ブザー出力タスク）

PF7-PB ON で、+100Hz の周波数を出力します。
PC5-PB ON で、-100Hz の周波数を出力します。 (100~1100Hz)
TPU3 TIOCA3 アウトプットコンペア出力を利用しています。

-- 30 -

文書 OSEK-RENE-AHE261.doc（５）評価ボードの SW-P43 を ON(上側）にする。
SioTask4 [xxxxx][5-4-5]

AHE-ToppersCD1 f

SioTask4 が起動します。

{"AHE-ToppersCD1 for TOPPERS/OSEK by Aone"};SIO 通信が正常送受信を継続している間は、上記文字が流れて表示します。
＜動作＞①SCI-TxD0 より 8 文字送信−＞ SCI-RxD1 で受信 −＞ 受信データを LCD 表示①SCI-TxD1 より 8 文字送信−＞ SCI-RxD0 で受信 −＞ 受信データを LCD 表示

評価ボード「AHE261」の DIP-SW11 の 1･2 の 2 点を ON(上側）にすることにより、SCI-2CH のループテストになります。
試しにどちらかを OFF にしてみて下さい。タイムアップ表示されます。
（６）評価ボードの SW-P44 を ON(上側）にする。
MelTask5 [xxxxx][5-4-6]ﾈｺﾌﾝｼﾞｬｯﾀ PC2{S}MelTask5 が起動します。

PC2-PB を ON しますと、ブザーより「ﾈｺﾌﾝｼﾞｬｯﾀ」の曲が流れます。
（６）評価ボードの SW-P44・P43・P42・P41・P40 と順番に OFF(下側）にする。
LcdTask1 suspend[5-4-7]
OFF 順番に各タスクが Suspend していきます。

（６）評価ボードの SW-P47 を ON(上側）にして、PA0-PB を ON にします。

ShutDown WaitWDG[5-4-8]E̲OK

シャットダウンフックルーチンが実行されます。
このサンプルは、ウォッチドッグタイマーを起動させています
ので、「1.68sec」後にリセットされ再起動します。

以上です。

-

- 31 -

文書 OSEK-RENE-AHE261.doc

第６章

新規プロジェクトを追加する場合の手順例

６−１．プロジェクトタイプの作成
TOPPERS/OSEK 下で新規プロジェクトを追加する場合、Hew 設定を簡略化するための手順案を記述します。
cat261 用のプロジェクトテンプレートは作成してありますので、下記手順でプロジェクト
タイプ（カスタム）を作成して下さい。

１）空プロジェクト「Project」をアクティブプロジェクトに指定します。
[6-1-1]

２）Hew メニュー＜プロジェクト＞−＜プロジェクトタイプの作成＞をクリックします。
[6-1-2]
保存を促すメッセージです。
「はい」をクリックします。

-- 32 -

文書 OSEK-RENE-AHE261.doc[6-1-3]
プロジェクト新規登録時に指定するタイプ名を入力する。
ex)toppers_osek_new_project
はい(Y)側をチェック「次へ」をクリックします。
[6-1-4]

左図の様に「デフォルト」のままで、「完了」をクリックします。

-- 33 -

文書 OSEK-RENE-AHE261.doc

６−２．新規プロジェクトを登録します。
１）Hew メニュー＜プロジェクト＞−＜プロジェクトの挿入＞をクリックします。
[6-2-1]
新規プロジェクト
側チェックにて「ＯＫ」をクリッ
クします。
２）プロジェクト名を登録します。
[6-2-2]①プロジェクトタイプを前項で登録した「toppers_osek_new_project」を指定します。
②プロジェクト名に任意な目的プロジェクト名を入力します。後の説明でプロジェクト名が必要になりますので、ここでは新規プロジェクト名を「cat261new」とします。
③上記設定で「ＯＫ」をクリックします。
３）Hew に新規プロジェクトが作成されます。
[6-2-3]左 図 の よ うに 、 新 規 プロ ジ ェ ク トがHew に登録されます。

-- 34 -

文書 OSEK-RENE-AHE261.doc

４）新規プロジェクト用に新規ディレクトリ作成とファイルをコピーします。
① .¥toopers_osek¥config¥h8s-renesas-2612 の下に、新規プロジェクト名「cat261new」のディレクトリを作成します。
[6-2-4-1]＜追加１＞②作成した「cat261new」に、「cat261」下の全ファイルをコピーします。
[6-2-4-2]
コピー確認-- 35 -

文書 OSEK-RENE-AHE261.doc① .¥toopers_osek¥syslib¥h8s-renesas-2612 の下に、新規プロジェクト名「cat261new」のディレクトリを作成します。
[6-2-4-3]＜追加２＞②作成した「cat261new」に、「cat261」下の全ファイルをコピーします。
[6-2-4-4]
コピー確認-- 36 -

文書 OSEK-RENE-AHE261.doc

５）システムジェネレータ用バッチファイルの一部を変更します。
.¥toopers_osek¥tools¥h8s-renesas-2612¥cat261new¥call_sg.batのファイルを何らかのエディタで開きます。
＜元ファイル＞ [6-2-5-1]@REM SG 実行バッチファイル@REM カーネルコンフィグレーション
del kernel_cfg.cdel kernel_id.h
del kernel_support.src..¥..¥..¥sg¥sg.exe

main.oil-template=..¥..¥..¥config¥h8s-renesas-2612¥Project¥Project.sgt-odep=kernel_support.src -I..¥..¥..¥sg¥impl_oil -os=ECC2＜変更ファイル＞ [6-2-5-2]@REM SG 実行バッチファイル@REM カーネルコンフィグレーション
del kernel_cfg.cdel kernel_id.h
del kernel_support.src..¥..¥..¥sg¥sg.exe

main.oil-template=..¥..¥..¥config¥h8s-renesas-2612¥cat261new¥Project.sgt-odep=kernel_support.src -I..¥..¥..¥sg¥impl_oil -os=ECC2

上記の様に、Project を新規プロジェクト名「cat261new」に変更します。

-- 37 -

文書 OSEK-RENE-AHE261.doc

６）新規プロジェクト「cat261new」にユニット「ソースファイル」を登録します。

①フォルダ名「config_h8-renesas-2612」に登録
Hew メニュー＜プロジェクト＞−＜ファイルの追加＞をクリックします。
.¥toppers_osek¥config¥h8s-renesas-2612 に移動します。
[6-2-6-1]①cpu_config.c②cpu_support.src③start.srcの 3 ファイルを「追加」します。

ファイル選択後「追加」をクリックしますと、Hew ツリーでは一旦「Assembly souce file」と「C souce file」のフォルダに入りますので、マウスドロップにて目的フォルダに移動して下さい。
[6-2-6-2]
移動後の状態-- 38 -

文書 OSEK-RENE-AHE261.doc②フォルダ名「config_h8-renesas-2612_Project」に登録
Hew メニュー＜プロジェクト＞−＜ファイルの追加＞をクリックします。
.¥toppers_osek¥config¥h8s-renesas-2612¥cat261new に移動します。
[6-2-6-3]①sys_config.c②sys_suport.srcの 2 ファイルを「追加」します。

前項と同じ様に、別フォルダに入りますので、マウスドロップで目的フォルダに移動して下さい。

③フォルダ名「kernel」に登録
Hew メニュー＜プロジェクト＞−＜ファイルの追加＞をクリックします。
.¥toppers_osek¥kernel に移動します。
[6-2-6-4]①alarm.c②event.c③interrupt.c④osctl.c⑤resource.c⑥task.c⑦task_manage.cの 7 ファイルを「追加」します。
前項と同じ様に、別フォルダに入りますので、マウスドロップで目的フォルダに移動して下さい。

-- 39 -

文書 OSEK-RENE-AHE261.doc④フォルダ名「syslib_h8s-renesas-2612」に登録
Hew メニュー＜プロジェクト＞−＜ファイルの追加＞をクリックします。
.¥toppers_osek¥syslib¥h8s-renesas-2612 に移動します。
[6-2-6-5]①sys_timer.c②osek_lib.cの 2 ファイルを「追加」します。

前項と同じ様に、別フォルダに入りますので、マウスドロップで目的フォルダに移動して下さい。

⑤フォルダ名「syslib_h8s-renesas-2612_Project」に登録
Hew メニュー＜プロジェクト＞−＜ファイルの追加＞をクリックします。
.¥toppers_osek¥syslib¥h8s-renesas-2612¥cat261new に移動します。
[6-2-6-6]①cat_serial.c②hw.config.c③hw_serial.c④hw_sw_led_bz_
lcd.c⑤hw_sys_timer.cの 5 ファイルを「追加」します。
前項と同じ様に、別フォルダに入りますので、マウスドロップで目的フォルダに移動して下さい。

以上の作業で、新規プロジェクトの追加作業は終了です。目的のプロジェクト仕様に合わせた「main.c」を作成して下さい。
フォルダ名「tools_h8s-renesas-2612_Project_appsrc」
ディレクトリ「.¥toppers_osek¥tools¥h8s-renesas-2612¥cat261new¥appsrc」に空ファイル
として用意してあります。

-- 40 -

文書 OSEK-RENE-AHE261.doc

７）OS 定義および Task の追加やプライオリティを変更したい場合は、ディレクトリ
「.¥toppers_osek¥tools¥h8s-renesas-2612¥cat261new」にある、「main.oil」のテキストフ
ァイルを変更して下さい。

定義仕様に関しては、「OPPERS/OSEK カーネル SG 取扱説明書」株式会社ヴィッツ製をご覧下さ
い。

第７章

備考

７−１．おわりに
本アプリケーションノートは、いたらない所が多々有ると思います。意味不明な箇所がありましたら、遠慮なくメールにて申し付け下さい。積極的に改訂し、より判り易いノートにしたく思っていますので、皆様の御協力を御願い申し上げます。
2008 年 6 月-- 41 -

著者

文書 OSEK-RENE-AHE261.doc-- 42 -

文書 OSEK-RENE-AHE261.doc-- 43 -

文書 OSEK-RENE-AHE261.doc〒４８６−０８５２
愛知県春日井市下市場町 6-9-20
エーワン株式会社
Tel
0568-85-8511
Fax
0568-85-8501
E-mail cat-i@aone.co.jp
http://www.aone.co.jp
URL-- 44 -