OSDN Git Service

LPC4330i存部のコードを追加。ビルドが通る。
[toppersasp4lpc/asp.git] / asp / arch / arm_m_gcc / lpc4300_gcc / chip_config.c
1 /*
2  *  TOPPERS/ASP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Advanced Standard Profile Kernel
5  * 
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/
12  * 
13  *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
14  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
15  *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18  *      スコード中に含まれていること.
19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
22  *      の無保証規定を掲載すること.
23  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
25  *      と.
26  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
28  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
29  *        報告すること.
30  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
32  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
33  *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
34  *      免責すること.
35  * 
36  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
38  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
39  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
40  *  の責任を負わない.
41  * 
42  */
43 /**
44  * \addtogroup TOPPERS_CHIP
45  * \{
46  */
47 /**
48  * \file chip_config.c
49  * \brief カーネル実装のチップ依存モジュール(LPC18xx汎用)
50  */
51 #include "kernel_impl.h"
52 #include <sil.h>
53 #include "lpc4300.h"
54 #include "target_serial.h"
55 #include "target_syssvc.h"
56
57
58
59 void chip_initialize(void)
60 {
61
62         /*
63          *  プロセッサ依存部の初期化
64          */
65         core_initialize();
66
67 }
68
69 // Todo:ビルドは通るがPLLの設定が正しいか確認
70 extern void initPLL1(
71                 pllClockSource_type     clkSrc,
72                 unsigned int                    N,
73                 unsigned int                    M,
74                 unsigned int                    cpuClkDiv
75         )
76 {
77
78                 // Set PLL
79         LPC_CGU->PLL1_CTRL =  ((M-1)<<CGU_PLL1_CTRL_MSEL_Pos)           // Multiplier
80                                                 | ((N-1)<<CGU_PLL1_CTRL_NSEL_Pos)               // Pre-PLL div
81                                                 | ((clkSrc-1)<<CGU_PLL1_CTRL_CLK_SEL_Pos)       // clock source
82                                                 | CGU_PLL1_CTRL_AUTOBLOCK_Msk;
83         while
84           (!(LPC_CGU->PLL1_STAT & CGU_PLL1_STAT_LOCK_Msk));             /* PLLの準備が整うまで待つ  */
85
86                 // select PLL1 as input for M3 core
87         LPC_CGU->BASE_M4_CLK = CGU_BASE_M4_CLK_AUTOBLOCK_Msk | (0x09 << CGU_BASE_M4_CLK_CLK_SEL_Pos);
88
89 }
90
91 void chip_exit(void)
92 {
93         /* チップ依存部の終了処理 */
94         core_terminate();
95 }
96
97
98
99 void chip_fput_log(char_t c)
100 {
101         /* Newlineなら、CRも追加する */
102         if (c == '\n') {
103                 sio_pol_snd_chr('\r', LOGTASK_PORTID);
104         }
105         sio_pol_snd_chr(c, LOGTASK_PORTID);
106 }
107
108 //Todo : これが必要かどうか慎重にチェックすること。
109 /**
110  * \brief 低レベルのターゲット依存の初期化
111  * \details
112  * メモリ初期化の前に呼び出される
113  * CCRのSTKALIGNビットをクリアする
114  * このビットはCORTEX-M3コアがR1からR2に変化する過程で"1"に変更された。クリアしないと
115  * TOPPERS/ASPはクラッシュする。
116  */
117 void hardware_init_hook()
118 {
119         SCB->CCR &= ~SCB_CCR_STKALIGN_Msk;
120 }
121
122 /**
123  * \}
124  */
125
126