3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 * Copyright (C) 2010 by TOPPERS/ASP for LPC project
11 * http://sourceforge.jp/projects/toppersasp4lpc/
13 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
14 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
15 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
26 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
28 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
30 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
32 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
33 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
36 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
38 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
39 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
44 * \addtogroup TOPPERS_CHIP
49 * \brief カーネル実装のチップ依存モジュール(LPC17xx汎用)
51 #include "kernel_impl.h"
54 #include "target_serial.h"
55 #include "target_syssvc.h"
59 void chip_initialize(void)
70 pllClockSource_type clkSrc,
71 unsigned int isMainOsc20MHzMore,
74 unsigned int cpuClkDiv
78 if ( clkSrc == eMainOsc )
80 // メインオシレータを使う場合には、周波数レンジに応じてSCSの設定を変える。
81 if ( isMainOsc20MHzMore )
84 LPC_SC->SCS = 1<<5 | 1<<4;
87 ((LPC_SC->SCS & (1<<6)) == 0); /* 発振器の準備が整うまで待つ */
90 LPC_SC->CCLKCFG = cpuClkDiv-1; /* CPUクロックデバイダの設定 */
91 LPC_SC->CLKSRCSEL = clkSrc; /* PLLに入力するクロック源の設定 */
93 LPC_SC->PLL0CFG = (N-1) <<16 | (M-1); /* 分周比と低倍比の設定 */
94 LPC_SC->PLL0FEED = 0xAA;
95 LPC_SC->PLL0FEED = 0x55;
97 LPC_SC->PLL0CON = 0x01; /* PLL0 イネーブル */
98 LPC_SC->PLL0FEED = 0xAA;
99 LPC_SC->PLL0FEED = 0x55;
101 (!(LPC_SC->PLL0STAT & (1<<26))); /* PLLの準備が整うまで待つ */
103 LPC_SC->PLL0CON = 0x03; /* PLL0 をクロックとして使う */
104 LPC_SC->PLL0FEED = 0xAA;
105 LPC_SC->PLL0FEED = 0x55;
107 (!(LPC_SC->PLL0STAT & ((1<<25) | (1<<24))));/* PLLの準備が整うまで待つ */
120 void chip_fput_log(char_t c)
122 /* Newlineなら、CRも追加する */
124 sio_pol_snd_chr('\r', SIO_PORTID);
126 sio_pol_snd_chr(c, SIO_PORTID);
130 * \brief 低レベルのターゲット依存の初期化
133 * CCRのSTKALIGNビットをクリアする
134 * このビットはCORTEX-M3コアがR1からR2に変化する過程で"1"に変更された。クリアしないと
135 * TOPPERS/ASPはクラッシュする。
137 void hardware_init_hook()
139 SCB->CCR &= ~SCB_CCR_STKALIGN_Msk;