=====================================================================
                  Renesas Starter Kitターゲット依存部
                                  Last Modified: '10/9/21
=====================================================================


○概要

rsk_rxターゲット依存部は，プロセッサにRX610を搭載した，ルネサス
エレクトロニクス製のRenesas Starter Kitをサポートしている．


○カーネルの使用リソース

カーネルは以下のリソースを使用する．

  ・ROM
     ROM化の場合にコードを配置する．
     使用量は使用するAPIの数に依存する．

  ・RAM
     データを配置する．使用量はオブジェクト数に依存する．

  ・コンペアマッチタイマ0
     カーネル内部のティックの生成に用いる．

  ・SCIチャネル1
     コンソールの出力に使用する．
     SCIドライバとして，pdic/rx600以下のドライバを使用する．
     使用するチャンネルはtarget_syssvc.hの「SIO_PORTID」マクロ
     及びtarget_config.hの「TARGET_PUTC_PORTID」を変更すること
     で変更できる．


○他のターゲットへの移植

rsk_rxターゲット依存部で使用するタイマやSCIは，RX610の内蔵機能のみを
使用するため，RX610や近い構成のRXを用いた環境には容易にポーティングが
可能である．ポーティングに関しては，以下の初期化ルーチンにターゲット毎
の初期化を追加すればよい．

  ・target_initialize() : target_config.c
    ターゲット依存部の初期化（C言語）

  ・_hardware_init_hook : target_support.src
    低レベルのターゲット依存の初期化
    スタートアップモジュールの中で，メモリの初期化の前に呼び出される

  ・SIL_DLY_TIM1，SIL_DLY_TIM1：asm_config.inc
    sil_dly_nse内で用いる


○デバッグ環境

デバッグ環境としては、JTAGデバッガの使用を想定している．
動作確認を行ったデバッガは、Renesas社製のE1エミュレータである．


○コンパイラ

以下の開発環境を用いて動作確認を行った．

処理系
　ルネサスエレクトロニクス製
　RXスタンダードツールチェイン
　コンパイラパッケージVer.1.00 Release01

統合開発環境
　ルネサステクノロジ製
　High-performance Embedded Workshop Version 4.07.01.004


○コンソール出力

コンソール出力には，SCIのチャネル1を用いる．
通信フォーマットは以下の通りである．

  ・38400bps, Data 8bit, Parity none, Stop 1bit, Flow control none


○アドレスマッピング

  0x00000000 - 0x00020000  内蔵RAM
                             D  ：初期値有り変数（4byteアライメント）
                             D_2：      〃      （2byteアライメント）
                             D_1：      〃      （1byteアライメント）
                             B  ：初期値無し変数（4byteアライメント）
                             B_2：      〃      （2byteアライメント）
                             B_1：      〃      （1byteアライメント）
                             SI ：非コンテキスト用スタック領域（4byteアライメント）
  0x00100000 - 0x00108000  内蔵ROM（データフラッシュ）
                             C  ：定数領域（4byteアライメント）
                             C_2：   〃   （2byteアライメント）
                             C_1：   〃   （1byteアライメント）
                             R  ：初期値有り変数の初期値（4byteアライメント）
                             R_2：         〃           （2byteアライメント）
                             R_1：         〃           （1byteアライメント）
                             C$VECT：可変ベクタテーブル （4byteアライメント）
  0xFFE80000 - 0xFFFFFFFF  内蔵ROM（プログラムROM）
                             P  ：プログラム領域
                             FVECT：固定ベクタ領域      （4byteアライメント）


○各種設定の変更

幾つかのパラメータは変更可能になっている．
設定ファイル毎に設定可能項目は次のようになっている．


●target_config.h の設定項目

・DEFAULT_ISTKSZ
  ディフォルトの非タスクコンテキスト用のスタックサイズ
  この値を変更する場合は, sectrx.incの_DEFAULT_ISTACKラベルの
  位置にある.blkb命令のサイズを, 同じ値に変更すること.

・TARGET_PUTC_PORTID
  使用するSCIのチャンネル
    番号はハードウェアのチャンネル番号 + 1
    「SIO_PORTID」と同じ番号とすること


●target_syssvc.h の設定項目

・UART_BAUDRATE
  コンソールに使用するポート（SCIのチャンネル1）のボーレート

・UART_CLKSRC
  SCIで使用するベースクロック

・SIO_PORTID
  番号はハードウェアのチャンネル番号 + 1
    「TARGET_PUTC_PORTID」と同じ番号とすること


●CPUロックで用いる割込み優先度TMIN_INTPRIの定義

・C言語用の定義：
    デフォルトの定義：prc_kernel.h
    ターゲット依存の定義：target_config.h（現状では未定義）


●prc_kernel.hの設定項目

・OMIT_DEFAULT_INT_HANDLER/OMIT_DEFAULT_EXC_HANDLER
  未登録の割込み及び例外に対して, デフォルトのハンドラを使用せず,
  アプリケーション定義のハンドラを使用する場合, 本オプションを
  有効にすること.
  アプリケーション定義とする場合も名称は
    __kernel_default_int_handler
    __kernel_default_exc_handler
  とすること.


○サンプルプロジェクトのビルド手順
  1.makeoffsetプロジェクトをビルドする
    kernelプロジェクトで使用するoffset.incファイルを生成し，
    kernelプロジェクトディレクトリ下にコピーする．（自動でコピーする）

  2.asm_configプロジェクトをビルドする
    kernelプロジェクトで使用するasm_config.incファイルを生成し，
    kernelプロジェクトディレクトリ下にコピーする．（自動でコピーする）

  3.kernelプロジェクトをビルドする
    ASPカーネル本体のライブラリが生成される．
    ※kernelプロジェクトをビルドした際, 自動的に1. 2.のプロジェクトも
      ビルドする設定としている.

  4.cfgプロジェクトをビルドする
    コンフィギュレータを実行し，kernel_cfg.c，kernel_cfg.h，
    kernel_cfg_asm.srcを生成し，sampleプロジェクト下にコピーする．（自動でコピーする）
    なお，RXツールチェインのシンボルテーブル形式がカーネルコンフィギュレータの
    入力仕様を満たさないため、arch/rxc/gensyms.exeを用いて
    cfg1_out.symsを生成している．

  5.sampleプロジェクトをビルドする
    sample1アプリケーション，システムライブラリ，システムサービス，
    及びアプリケーションがリンクされ，sample1アプリケーションが生成される．
    ※sampleプロジェクトをビルドした際, 自動的に3. 4.のプロジェクトも
      ビルドする設定としている. なお, 3.のプロジェクトビルド時に1. 2.の
      プロジェクトはビルドされないので, 注意が必要です.
      3.を事前にビルドしておくことをお勧めします.


○注意事項
・rsk_rx依存部は文字コードをSJIS，改行コードをCR+LFに設定して使用する
  ことを前提とする．

・sample_workspaceをビルドする際には、パスに空白スペースを含まない
  ディレクトリに展開する必要がある．
  （バッチファイルで使用しているHEWのプレースホルダが空白スペースに
    対応していないと思われる）

・hardware_init_hookにて, クロック等のハードウェアの初期化を実施しているが,
  モジュールストップ機能に関してはリセット後変更していない.
  そのため, 各内蔵周辺モジュールを使用する場合は使用する側でモジュールストップ
  機能を解除すること.

  ちなみにリセット後動作している内蔵周辺モジュールは
    −DMAC
    −DTC
    −内蔵RAM
  のみである.

・HEW上でオブジェクトファイルをリンクする際, 必ずstart.objを先頭にすること.
  ※startモジュール内で定義しているセクションのラベル位置がずれてしまうこと
    への対応である.

・拡張機能（extension階層以下）の機能は未対応である.


○変更履歴
2010/9/21  ・新規作成                     ヴィッツ

