1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
/**
* @file
* @ingroup arm_rtl22xx
* @brief Global BSP definitions.
*/
/*
* Philips LPC22XX/LPC21xx BSP header file
*
* by Ray,Xu <Rayx.cn@gmail.com>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.org/license/LICENSE.
*/
#ifndef LIBBSP_ARM_RTL22XX_BSP_H
#define LIBBSP_ARM_RTL22XX_BSP_H
#include <bspopts.h>
#include <bsp/default-initial-extension.h>
/**
* @defgroup arm_rtl22xx RTL22XX Support
* @ingroup bsp_arm
* @brief RTL22XX Support Package
* @{
*/
#include <rtems.h>
#ifdef __cplusplus
extern "C" {
#endif
#define BSP_FEATURE_IRQ_EXTENSION
#define CONFIG_ARM_CLK 60000000L
/* cclk=cco/(2*P) */
/* cco = cclk*2*P */
/** @brief system clk frequecy,<=60Mhz, defined in system configuration */
#define LPC22xx_Fcclk CONFIG_ARM_CLK
/* Fcco 156M~320Mhz*/
/** @brief system clk frequecy,<=60Mhz, defined in system configuration */
#define LPC22xx_Fcclk CONFIG_ARM_CLK
#define LPC22xx_Fcco LPC22xx_Fcclk * 4
/** @brief VPB clk frequency,1,1/2,1/4 times of Fcclk */
#define LPC22xx_Fpclk (LPC22xx_Fcclk /4) *1
/**
* @name Fcclk range: 10MHz ~ MCU allowed frequency
* @{
*/
#define Fcclk_MIN 10000000L
#define Fcclk_MAX 60000000L
/** @} */
/**
* @name Fcco range: 156MHz ~ 320MHz
* @{
*/
#define Fcco_MIN 156000000L
#define Fcco_MAX 320000000L
/** @} */
#define PLLFEED_DATA1 0xAA
#define PLLFEED_DATA2 0x55
/**
* @name PLL PLLCON register bit descriptions
* @{
*/
#define PLLCON_ENABLE_BIT 0
#define PLLCON_CONNECT_BIT 1
/** @} */
/**
* @name PLL PLLSTAT register bit descriptions
* @{
*/
#define PLLSTAT_ENABLE_BIT 8
#define PLLSTAT_CONNECT_BIT 9
#define PLLSTAT_LOCK_BIT 10
/** @} */
/**
* @name PM Peripheral Type
* @{
*/
#define PC_TIMER0 0x2
#define PC_TIMER1 0x4
#define PC_UART0 0x8
#define PC_UART1 0x10
#define PC_PWM0 0x20
#define PC_I2C 0x80
#define PC_SPI0 0x100
#define PC_RTC 0x200
/** @} */
/** @brief OSC [Hz] */
#define FOSC 11059200
/** @brief Core clk [Hz] */
#define FCCLK FOSC<<2
/**
* @name System Configure
* @{
*/
/** @brief osc freq,10MHz~25MHz, change to a real one if needed */
#define Fosc 11059200
/** @brief system freq 2^n time of Fosc(1~32) <=60MHZ */
#define Fcclk (Fosc << 2)
/** @brief CCO freq 2,4,8,16 time of Fcclk 156MHz~320MHz */
#define Fcco (Fcclk <<2)
/** @brief VPB freq only(Fcclk / 4) 1~4 */
#define Fpclk (Fcclk >>2) * 1
/* This was M. That is a BAD BAD public constant. I renamed it to
* JOEL_M so it wouldn't conflict with user code. If you can find
* a better name, fix this. But nothing I found uses it.
*/
/** @} */
#define JOEL_M Fcclk / Fosc
#define P_min Fcco_MIN / (2*Fcclk) + 1;
#define P_max Fcco_MAX / (2*Fcclk);
#define UART_BPS 115200
/** @brief Time Precision time [us] */
#define TIMER_PRECISION 10
/** @brief I2C Speed [bit/s] */
#define I2CSPEED 20000 // 20 Kbit/s
/**
* @name Uarts buffers size
* @{
*/
#define RXBUFSIZE 32
#define TXBUFSIZE 32
/** @} */
/** @brief SPI Speed [bit/s] */
#define SPISPEED 1500000 // 1.5 Mbit/s
/** @brief SPI EEPROM CS pin
*
* (SSEL is not suitable for CS, because is used by SPI module for multi master SPI interface)
*/
#define SPI_CS_PIN P0_13
#define SPI_CS_PIN_FUNC PINSEL0_bit.SPI_CS_PIN
/**
* @name Flash definition
* @{
*/
//#define RTL22XX_FLASH_SIZE (0x200000-RTL22XX_FLASH_BOOT) // Total area of Flash region in words 8 bit
/** @brief Total area of Flash region in words 8 bit */
#define RTL22XX_FLASH_SIZE (0x80000-RTL22XX_FLASH_BOOT)
//#define RTL22XX_FLASH_SIZE (0x80000-RTL22XX_FLASH_BOOT) // Total area of Flash region in words 8 bit
#define RTL22XX_FLASH_BEGIN 0x80000000
/** @brief First 0x8000 bytes reserved for boot loader etc. */
#define RTL22XX_FLASH_BASE (RTL22XX_FLASH_BEGIN+RTL22XX_FLASH_BOOT)
/** @} */
/**
* @name SRAM definition
* @{
*/
/** @brief Total area of Flash region in words 8 bit */
#define SRAM_SIZE 0x100000
/** @brief First 0x8000 bytes reserved for boot loader etc. */
#define SRAM_BASE 0x81000000
/** @} */
/** @brief CS8900A definition */
#define CS8900A_BASE 0x82000000
/** @brief RTL8019AS definition */
#define RTL8019AS_BASE 0x82000000
struct rtems_bsdnet_ifconfig;
int cs8900_driver_attach (struct rtems_bsdnet_ifconfig *config,
int attaching);
/**
* @name Network driver configuration
* @{
*/
#define RTEMS_BSP_NETWORK_DRIVER_NAME "eth0"
#define RTEMS_BSP_NETWORK_DRIVER_ATTACH cs8900_driver_attach
/** @} */
/*
* Prototypes for methods used across file boundaries in the BSP.
*/
extern void UART0_Ini(void);
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* _BSP_H */
|