/* * TOPPERS/SSP Kernel * Smallest Set Profile Kernel * * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * Copyright (C) 2003-2004 by Platform Development Center * RICOH COMPANY,LTD. JAPAN * Copyright (C) 2003-2015 by Naoki Saito * Nagoya Municipal Industrial Research Institute, JAPAN * * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ * 再配布(以下,利用と呼ぶ)することを無償で許諾する. * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース * コード中に含まれていること. * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 * 証規定を掲載すること. * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 * できない形で再配布する場合には,次のいずれかの条件を満たすこと. * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 * 権表示,この利用条件および下記の無保証規定を掲載すること. * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 * 告すること. * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. * * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負 * わない. * */ /* * ターゲットシステム依存モジュール(QB-R5F100LE用) */ #pragma sfr #pragma NOP #include "kernel_impl.h" /* * ターゲットシステム依存 初期化ルーチン */ void target_initialize(void) { /* * プロセッサ依存の初期化 */ prc_initialize(); /* * クロック設定 */ // X1発信モード,低消費発振,AMPH=1(高速クロック) CMC = UINT8_C(0x51); // クロック動作ステータス制御レジスタ(X1開始,XT1停止, オンチップオシレータ動作) CSC = UINT8_C(0x40); // 発振が安定するまでの時間だけ待つ while((OSTC & UINT8_C(0x01)) == 0){} // システムクロック制御レジスタ CKC &= ~UINT8_C(0x40); // CPU/周辺ハードウェアクロックにメインシステムクロック CKC |= UINT8_C(0x10); // メインシステムクロックに高速システムクロック CKC &= ~UINT8_C(0x0f); // 必ず0に設定 // クロック動作ステータス制御レジスタ CSC |= UINT8_C(0x01); // 高速オンチップオシレータ停止 /* * UART用ピン設定 */ // RXD,TXD に P11, P12 を使用 PIOR &= ~TBIT_PIOR_PIOR1; // P11(RxD0) を入力に設定 PM1 |= UINT8_C(0x02); // P12(TxD0) をHに設定しておく P1 |= UINT8_C(0x04); // P12(TxD0) を出力に設定 PM1 &= ~UINT8_C(0x04); /* * UARTの設定 */ target_sau_init(1); } /* * ターゲットシステムの終了ルーチン */ void target_exit(void) { /* CPU依存の終了ルーチン */ prc_terminate(); while (true) { } } /* * システムログの低レベル出力のための文字出力 */ void target_fput_log(char c) { if (c == '\n') { sys_putc('\r', LOGTASK_PORTID); } sys_putc(c, LOGTASK_PORTID); } /* * アサーションの失敗時の実行中断処理 */ void TOPPERS_assert_abort(void) { while(1) { } }