##// END OF EJS Templates
IIC library for lpc17xx started
jeandet -
r5:e8ec781f7833 default
parent child
Show More
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -1,192 +1,191
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the libuc, microcontroler library
2 -- This file is a part of the libuc, microcontroler library
3 -- Copyright (C) 2011, Alexis Jeandet
3 -- Copyright (C) 2011, Alexis Jeandet
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------
18 -------------------------------------------------------------------------------
19 -- Author : Alexis Jeandet
19 -- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@gmail.com
20 -- Mail : alexis.jeandet@gmail.com
21 -------------------------------------------------------------------------------*/
21 -------------------------------------------------------------------------------*/
22 #include "core.h"
22 #include "core.h"
23 #include "uart.h"
23 #include "uart.h"
24
24
25
25
26 void uartputc(uartDev* dev,char c) {
26 void uartputc(uartDev* dev,char c) {
27 while (!((dev->LineStat & (1<<5))));
27 while (!((dev->LineStat & (1<<5))));
28 dev->RWreg = c;
28 dev->RWreg = c;
29 }
29 }
30
30
31 char uartgetc(uartDev* dev) {
31 char uartgetc(uartDev* dev) {
32 while (!((dev->LineStat & 1)));
32 while (!((dev->LineStat & 1)));
33 return (char)dev->RWreg;
33 return (char)dev->RWreg;
34 }
34 }
35
35
36
36
37 void uartputs(uartDev* dev,char *s) {
37 void uartputs(uartDev* dev,char *s) {
38 while (*s) uartputc(dev,*s++);
38 while (*s) uartputc(dev,*s++);
39 }
39 }
40
40
41
41
42 void uartgets(uartDev* dev,char *s) {
42 void uartgets(uartDev* dev,char *s) {
43 while (*s && (*s!=0xd)) *s++ = uartgetc(dev);
43 while (*s && (*s!=0xd)) *s++ = uartgetc(dev);
44 }
44 }
45
45
46 void uartoff(int count)
46 void uartoff(int count)
47 {
47 {
48 switch(count)
48 switch(count)
49 {
49 {
50 case 0:
50 case 0:
51 LPC_SC->PCONP &= ~( 1 << 3 );
51 LPC_SC->PCONP &= ~( 1 << 3 );
52 break;
52 break;
53 case 1:
53 case 1:
54 LPC_SC->PCONP &= ~( 1 << 4 );
54 LPC_SC->PCONP &= ~( 1 << 4 );
55 break;
55 break;
56 case 2:
56 case 2:
57 LPC_SC->PCONP &= ~( 1 << 24 );
57 LPC_SC->PCONP &= ~( 1 << 24 );
58 break;
58 break;
59 case 3:
59 case 3:
60 LPC_SC->PCONP &= ~( 1 << 25 );
60 LPC_SC->PCONP &= ~( 1 << 25 );
61 break;
61 break;
62 default:
62 default:
63 break;
63 break;
64 }
64 }
65 }
65 }
66
66
67 void uarton(int count)
67 void uarton(int count)
68 {
68 {
69 switch(count)
69 switch(count)
70 {
70 {
71 case 0:
71 case 0:
72 LPC_SC->PCONP |= ( 1 << 3 );
72 LPC_SC->PCONP |= ( 1 << 3 );
73 break;
73 break;
74 case 1:
74 case 1:
75 LPC_SC->PCONP |= ( 1 << 4 );
75 LPC_SC->PCONP |= ( 1 << 4 );
76 break;
76 break;
77 case 2:
77 case 2:
78 LPC_SC->PCONP |= ( 1 << 24 );
78 LPC_SC->PCONP |= ( 1 << 24 );
79 break;
79 break;
80 case 3:
80 case 3:
81 LPC_SC->PCONP |= ( 1 << 25 );
81 LPC_SC->PCONP |= ( 1 << 25 );
82 break;
82 break;
83 default:
83 default:
84 break;
84 break;
85 }
85 }
86 }
86 }
87
87
88
88
89
89
90 void uartsetup(uartDev* dev,unsigned int baudRate,unsigned char WordLength,unsigned char StopBitCnt,unsigned char Parity)
90 void uartsetup(uartDev* dev,unsigned int baudRate,unsigned char WordLength,unsigned char StopBitCnt,unsigned char Parity)
91 {
91 {
92 if(WordLength>9)WordLength=8;
92 if(WordLength>9)WordLength=8;
93 if((StopBitCnt>2)||(StopBitCnt==0))StopBitCnt=1;
93 if((StopBitCnt>2)||(StopBitCnt==0))StopBitCnt=1;
94 if(Parity>7)Parity=0;
94 if(Parity>7)Parity=0;
95 dev->LineCtrl = (WordLength-5) + ((StopBitCnt-1)<<2) + (Parity<<3);
95 dev->LineCtrl = (WordLength-5) + ((StopBitCnt-1)<<2) + (Parity<<3);
96 uartsetbaudrate(dev,baudRate);
96 uartsetbaudrate(dev,baudRate);
97 }
97 }
98
98
99 unsigned char uartgetpclkfactor(uartDev* dev)
99 unsigned char uartgetpclkfactor(uartDev* dev)
100 {
100 {
101 unsigned int clksel=0;
101 unsigned int clksel=0;
102 const char clkselDec[]={4,1,2,8};
102 const char clkselDec[]={4,1,2,8};
103 switch((int)dev)
103 switch((int)dev)
104 {
104 {
105 case (int)LPC_UART0_BASE:
105 case (int)LPC_UART0_BASE:
106 clksel = (LPC_SC->PCLKSEL0>>6) & 3;
106 clksel = (LPC_SC->PCLKSEL0>>6) & 3;
107 break;
107 break;
108 case (int)LPC_UART1_BASE:
108 case (int)LPC_UART1_BASE:
109 clksel = (LPC_SC->PCLKSEL0>>8) & 3;
109 clksel = (LPC_SC->PCLKSEL0>>8) & 3;
110 break;
110 break;
111 case (int)LPC_UART2_BASE:
111 case (int)LPC_UART2_BASE:
112 clksel = (LPC_SC->PCLKSEL1>>16) & 3;
112 clksel = (LPC_SC->PCLKSEL1>>16) & 3;
113 break;
113 break;
114 case (int)LPC_UART3_BASE:
114 case (int)LPC_UART3_BASE:
115 clksel = (LPC_SC->PCLKSEL1>>18) & 3;
115 clksel = (LPC_SC->PCLKSEL1>>18) & 3;
116 break;
116 break;
117 default:
117 default:
118 break;
118 break;
119 }
119 }
120 return clkselDec[clksel];
120 return clkselDec[clksel];
121 }
121 }
122
122
123 void uartsetpclkfactor(uartDev* dev,unsigned char pclkfactor)
123 void uartsetpclkfactor(uartDev* dev,unsigned char pclkfactor)
124 {
124 {
125 const char clkselDec[]={1,1,2,2,0,0,0,0,3};
125 const char clkselDec[]={1,1,2,2,0,0,0,0,3};
126 unsigned int clksel=0;
126 unsigned int clksel=0;
127 switch((int)dev)
127 switch((int)dev)
128 {
128 {
129 case (int)LPC_UART0_BASE:
129 case (int)LPC_UART0_BASE:
130 LPC_SC->PCLKSEL0 |= clkselDec[pclkfactor]<<6;
130 LPC_SC->PCLKSEL0 |= clkselDec[pclkfactor]<<6;
131 LPC_SC->PCLKSEL0 &= clkselDec[pclkfactor]<<6;
131 LPC_SC->PCLKSEL0 &= clkselDec[pclkfactor]<<6;
132 break;
132 break;
133 case (int)LPC_UART1_BASE:
133 case (int)LPC_UART1_BASE:
134 LPC_SC->PCLKSEL0 |= clkselDec[pclkfactor]<<8;
134 LPC_SC->PCLKSEL0 |= clkselDec[pclkfactor]<<8;
135 LPC_SC->PCLKSEL0 &= clkselDec[pclkfactor]<<8;
135 LPC_SC->PCLKSEL0 &= clkselDec[pclkfactor]<<8;
136 break;
136 break;
137 case (int)LPC_UART2_BASE:
137 case (int)LPC_UART2_BASE:
138 LPC_SC->PCLKSEL1 |= clkselDec[pclkfactor]<<16;
138 LPC_SC->PCLKSEL1 |= clkselDec[pclkfactor]<<16;
139 LPC_SC->PCLKSEL1 &= clkselDec[pclkfactor]<<16;
139 LPC_SC->PCLKSEL1 &= clkselDec[pclkfactor]<<16;
140 break;
140 break;
141 case (int)LPC_UART3_BASE:
141 case (int)LPC_UART3_BASE:
142 LPC_SC->PCLKSEL1 |= clkselDec[pclkfactor]<<18;
142 LPC_SC->PCLKSEL1 |= clkselDec[pclkfactor]<<18;
143 LPC_SC->PCLKSEL1 &= clkselDec[pclkfactor]<<18;
143 LPC_SC->PCLKSEL1 &= clkselDec[pclkfactor]<<18;
144 break;
144 break;
145 default:
145 default:
146 break;
146 break;
147 }
147 }
148 }
148 }
149
149
150 void uartsetbaudrate(uartDev* dev,unsigned int baudRate)
150 void uartsetbaudrate(uartDev* dev,unsigned int baudRate)
151 {
151 {
152 unsigned int cpuClk=0;
153 unsigned int pclk = 0;
152 unsigned int pclk = 0;
154 unsigned int clksel=0;
153 unsigned int clksel=0;
155 unsigned int cpuclk=0;
154 unsigned int cpuclk=0;
156 if(dev==0)return;
155 if(dev==0)return;
157 cpuclk = coregetCpuFreq();
156 cpuclk = coregetCpuFreq();
158 pclk = cpuclk / uartgetpclkfactor(dev);
157 pclk = cpuclk / uartgetpclkfactor(dev);
159 while((baudRate*16)>pclk)
158 while((baudRate*16)>pclk)
160 {
159 {
161 unsigned char pclkfact= uartgetpclkfactor(dev);
160 unsigned char pclkfact= uartgetpclkfactor(dev);
162 if(pclkfact==1)return;
161 if(pclkfact==1)return;
163 uartsetpclkfactor(dev,pclkfact/2);
162 uartsetpclkfactor(dev,pclkfact/2);
164 pclk = cpuclk / uartgetpclkfactor(dev);
163 pclk = cpuclk / uartgetpclkfactor(dev);
165 }
164 }
166 dev->LineCtrl |= 128;
165 dev->LineCtrl |= 128;
167 dev->RWreg = pclk/(baudRate*16);
166 dev->RWreg = pclk/(baudRate*16);
168 dev->LineCtrl &= ~(128);
167 dev->LineCtrl &= ~(128);
169 }
168 }
170
169
171 uartDev* uartopen(int count){
170 uartDev* uartopen(int count){
172 uartDev* dev;
171 uartDev* dev;
173 switch(count)
172 switch(count)
174 {
173 {
175 case 0:
174 case 0:
176 dev = (uartDev*)((unsigned long)LPC_UART0_BASE);
175 dev = (uartDev*)((unsigned long)LPC_UART0_BASE);
177 break;
176 break;
178 case 1:
177 case 1:
179 dev = (uartDev*)((unsigned long)LPC_UART1_BASE);
178 dev = (uartDev*)((unsigned long)LPC_UART1_BASE);
180 break;
179 break;
181 case 2:
180 case 2:
182 dev = (uartDev*)((unsigned long)LPC_UART2_BASE);
181 dev = (uartDev*)((unsigned long)LPC_UART2_BASE);
183 break;
182 break;
184 case 3:
183 case 3:
185 dev = (uartDev*)((unsigned long)LPC_UART3_BASE);
184 dev = (uartDev*)((unsigned long)LPC_UART3_BASE);
186 break;
185 break;
187 default:
186 default:
188 dev = (uartDev*)0;
187 dev = (uartDev*)0;
189 break;
188 break;
190 }
189 }
191 return dev;
190 return dev;
192 }
191 }
@@ -1,160 +1,163
1 #/*------------------------------------------------------------------------------
1 #/*------------------------------------------------------------------------------
2 #-- This file is a part of the libuc, microcontroler library
2 #-- This file is a part of the libuc, microcontroler library
3 #-- Copyright (C) 2011, Alexis Jeandet
3 #-- Copyright (C) 2011, Alexis Jeandet
4 #--
4 #--
5 #-- This program is free software; you can redistribute it and/or modify
5 #-- This program is free software; you can redistribute it and/or modify
6 #-- it under the terms of the GNU General Public License as published by
6 #-- it under the terms of the GNU General Public License as published by
7 #-- the Free Software Foundation; either version 3 of the License, or
7 #-- the Free Software Foundation; either version 3 of the License, or
8 #-- (at your option) any later version.
8 #-- (at your option) any later version.
9 #--
9 #--
10 #-- This program is distributed in the hope that it will be useful,
10 #-- This program is distributed in the hope that it will be useful,
11 #-- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 #-- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 #-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 #-- GNU General Public License for more details.
13 #-- GNU General Public License for more details.
14 #--
14 #--
15 #-- You should have received a copy of the GNU General Public License
15 #-- You should have received a copy of the GNU General Public License
16 #-- along with this program; if not, write to the Free Software
16 #-- along with this program; if not, write to the Free Software
17 #-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 #-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 #-------------------------------------------------------------------------------
18 #-------------------------------------------------------------------------------
19 #-- Author : Alexis Jeandet
19 #-- Author : Alexis Jeandet
20 #-- Mail : alexis.jeandet@gmail.com
20 #-- Mail : alexis.jeandet@gmail.com
21 #-------------------------------------------------------------------------------*/
21 #-------------------------------------------------------------------------------*/
22
22
23 #---------------------------------------------------------------------------------
23 #---------------------------------------------------------------------------------
24 # GCC EXECUTABLES
24 # GCC EXECUTABLES
25 #---------------------------------------------------------------------------------
25 #---------------------------------------------------------------------------------
26 LIBUC_PREFIX = arm-none-eabi-
26 LIBUC_PREFIX = arm-none-eabi-
27 LIBUC_CC = $(LIBUC_PREFIX)gcc
27 LIBUC_CC = $(LIBUC_PREFIX)gcc
28 LIBUC_CXX = $(LIBUC_PREFIX)g++
28 LIBUC_CXX = $(LIBUC_PREFIX)g++
29 LIBUC_AR = $(LIBUC_PREFIX)ar
29 LIBUC_AR = $(LIBUC_PREFIX)ar
30 LIBUC_AS = $(LIBUC_PREFIX)as
30 LIBUC_AS = $(LIBUC_PREFIX)as
31 LIBUC_LD = $(LIBUC_PREFIX)ld
31 LIBUC_LD = $(LIBUC_PREFIX)ld
32 LIBUC_SIZE = $(LIBUC_PREFIX)size
32 LIBUC_SIZE = $(LIBUC_PREFIX)size
33 LIBUC_STRIP = $(LIBUC_PREFIX)strip -s
33 LIBUC_STRIP = $(LIBUC_PREFIX)strip -s
34 LIBUC_READELF = $(LIBUC_PREFIX)readelf
34 LIBUC_READELF = $(LIBUC_PREFIX)readelf
35 LIBUC_OBJCOPY=$(LIBUC_PREFIX)objcopy
35 LIBUC_OBJCOPY=$(LIBUC_PREFIX)objcopy
36 LIBUC_OBJDUMP=$(LIBUC_PREFIX)objdump
36 LIBUC_OBJDUMP=$(LIBUC_PREFIX)objdump
37
37
38
38
39
39
40 #---------------------------------------------------------------------------------
40 #---------------------------------------------------------------------------------
41 # GCC FLAGS
41 # GCC FLAGS
42 #---------------------------------------------------------------------------------
42 #---------------------------------------------------------------------------------
43 LIBUC_FMCU = -mcpu=cortex-m3
43 LIBUC_FMCU = -mcpu=cortex-m3
44 LIBUC_CFLAGS = $(LIBUC_FMCU)
44 LIBUC_CFLAGS = $(LIBUC_FMCU)
45 LIBUC_CFLAGS = --std=gnu99 -fgnu89-inline -mcpu=cortex-m3 -mthumb
45 LIBUC_CFLAGS = --std=gnu99 -fgnu89-inline -mcpu=cortex-m3 -mthumb
46 LIBUC_CFLAGS += -ffunction-sections -fdata-sections
46 LIBUC_CFLAGS += -ffunction-sections -fdata-sections
47 LIBUC_LDFLAGS = --gc-sections
47 LIBUC_LDFLAGS = --gc-sections
48 LIBUC_ODFLAGS = -x --syms
48 LIBUC_ODFLAGS = -x --syms
49 LIBUC_CPFLAGS =
49 LIBUC_CPFLAGS =
50 LIBUC_CFLAGS_WARN_ON = -Wall
50 LIBUC_CFLAGS_WARN_ON = -Wall
51 LIBUC_CFLAGS_WARN_OFF = -w
51 LIBUC_CFLAGS_WARN_OFF = -w
52 LIBUC_CFLAGS_RELEASE = -O2
52 LIBUC_CFLAGS_RELEASE = -O2
53 LIBUC_CFLAGS_DEBUG = -g
53 LIBUC_CFLAGS_DEBUG = -g
54 LIBUC_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g
54 LIBUC_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g
55 LIBUC_CFLAGS_STATIC_LIB = -fPIC
55 LIBUC_CFLAGS_STATIC_LIB = -fPIC
56 LIBUC_CFLAGS_SOFT_FPU = -msoft-float
56 LIBUC_CFLAGS_SOFT_FPU = -msoft-float
57 LIBUC_CFLAGS_HARD_FPU =
57 LIBUC_CFLAGS_HARD_FPU =
58
58
59 LIBUC_CXXFLAGS = $(LIBUC_FMCU)
59 LIBUC_CXXFLAGS = $(LIBUC_FMCU)
60 LIBUC_CXXFLAGS += -g -gdwarf-2
60 LIBUC_CXXFLAGS += -g -gdwarf-2
61 LIBUC_CXXFLAGS += -Wextra -Wundef -Wcast-align -mthumb -msoft-float
61 LIBUC_CXXFLAGS += -Wextra -Wundef -Wcast-align -mthumb -msoft-float
62 LIBUC_CXXFLAGS_WARN_ON = -Wall
62 LIBUC_CXXFLAGS_WARN_ON = -Wall
63 LIBUC_CXXFLAGS_WARN_OFF = -w
63 LIBUC_CXXFLAGS_WARN_OFF = -w
64 LIBUC_CXXFLAGS_RELEASE = -O2
64 LIBUC_CXXFLAGS_RELEASE = -O2
65 LIBUC_CXXFLAGS_DEBUG = -g
65 LIBUC_CXXFLAGS_DEBUG = -g
66 LIBUC_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g
66 LIBUC_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g
67 LIBUC_CXXFLAGS_STATIC_LIB = -fPIC
67 LIBUC_CXXFLAGS_STATIC_LIB = -fPIC
68 LIBUC_CXXFLAGS_SOFT_FPU = -msoft-float
68 LIBUC_CXXFLAGS_SOFT_FPU = -msoft-float
69 LIBUC_CXXFLAGS_HARD_FPU =
69 LIBUC_CXXFLAGS_HARD_FPU =
70
70
71 LIBUC_LIBS =
71 LIBUC_LIBS =
72 LIBUC_LIBS_CORE = -static -lcore
72 LIBUC_LIBS_CORE = -static -lcore
73 LIBUC_LIBS_UCSTRINGS = -static -lucstrings
73 LIBUC_LIBS_UART = -static -luart
74 LIBUC_LIBS_UART = -static -luart
74 LIBUC_LIBS_SPI = -static -lspi
75 LIBUC_LIBS_SPI = -static -lspi
75 LIBUC_LIBS_IIC = -static -liic
76 LIBUC_LIBS_IIC = -static -liic
76 LIBUC_LIBS_ADC = -static -ladc
77 LIBUC_LIBS_ADC = -static -ladc
77
78
78 LIBUC_LIBS_DIR = $(LIBUC)/lib/bin/lpc17XX
79 LIBUC_LIBS_DIR = $(LIBUC)/lib/bin/lpc17XX
79 LIBUC_LIBS_DIR_CORE = -L $(LIBUC_LIBS_DIR)/CORE
80 LIBUC_LIBS_DIR_CORE = -L $(LIBUC_LIBS_DIR)/CORE
81 LIBUC_LIBS_DIR_UCSTRINGS = -L $(LIBUC_LIBS_DIR)/STRINGS
80 LIBUC_LIBS_DIR_UART = -L $(LIBUC_LIBS_DIR)/UART
82 LIBUC_LIBS_DIR_UART = -L $(LIBUC_LIBS_DIR)/UART
81 LIBUC_LIBS_DIR_SPI = -L $(LIBUC_LIBS_DIR)/SPI
83 LIBUC_LIBS_DIR_SPI = -L $(LIBUC_LIBS_DIR)/SPI
82 LIBUC_LIBS_DIR_IIC = -L $(LIBUC_LIBS_DIR)/IIC
84 LIBUC_LIBS_DIR_IIC = -L $(LIBUC_LIBS_DIR)/IIC
83 LIBUC_LIBS_DIR_ADC = -L $(LIBUC_LIBS_DIR)/ADC
85 LIBUC_LIBS_DIR_ADC = -L $(LIBUC_LIBS_DIR)/ADC
84
86
85 LIBUC_INC_DIR = $(LIBUC)/lib/includes/lpc17XX
87 LIBUC_INC_DIR = $(LIBUC)/lib/includes/lpc17XX
86 LIBUC_INC_DIR_CORE = -I $(LIBUC_INC_DIR)/CORE
88 LIBUC_INC_DIR_CORE = -I $(LIBUC_INC_DIR)/CORE
89 LIBUC_INC_DIR_UCSTRINGS = -I $(LIBUC_INC_DIR)/STRINGS
87 LIBUC_INC_DIR_UART = -I $(LIBUC_INC_DIR)/UART
90 LIBUC_INC_DIR_UART = -I $(LIBUC_INC_DIR)/UART
88 LIBUC_INC_DIR_SPI = -I $(LIBUC_INC_DIR)/SPI
91 LIBUC_INC_DIR_SPI = -I $(LIBUC_INC_DIR)/SPI
89 LIBUC_INC_DIR_IIC = -I $(LIBUC_INC_DIR)/IIC
92 LIBUC_INC_DIR_IIC = -I $(LIBUC_INC_DIR)/IIC
90 LIBUC_INC_DIR_ADC = -I $(LIBUC_INC_DIR)/ADC
93 LIBUC_INC_DIR_ADC = -I $(LIBUC_INC_DIR)/ADC
91
94
92
95
93 #---------------------------------------------------------------------------------
96 #---------------------------------------------------------------------------------
94 # BOARD SUPORT PACKAGES
97 # BOARD SUPORT PACKAGES
95 #---------------------------------------------------------------------------------
98 #---------------------------------------------------------------------------------
96 LIBUC_BSP_DIR=$(LIBUC)/bsp
99 LIBUC_BSP_DIR=$(LIBUC)/bsp
97 LIBUC_BSP_BIN_DIR= $(LIBUC_BSP_DIR)/bin
100 LIBUC_BSP_BIN_DIR= $(LIBUC_BSP_DIR)/bin
98 LIBUC_BSP_INC_DIR= $(LIBUC_BSP_DIR)/includes
101 LIBUC_BSP_INC_DIR= $(LIBUC_BSP_DIR)/includes
99 LIBUC_BSP = -L $(LIBUC_BSP_BIN_DIR)/$(BSP) -static -lbsp
102 LIBUC_BSP = -L $(LIBUC_BSP_BIN_DIR)/$(BSP) -static -lbsp
100 LIBUC_BSP_INC = -I $(LIBUC_BSP_INC_DIR)/$(BSP)
103 LIBUC_BSP_INC = -I $(LIBUC_BSP_INC_DIR)/$(BSP)
101 #---------------------------------------------------------------------------------
104 #---------------------------------------------------------------------------------
102 # DEVICE SPECIAL FILES
105 # DEVICE SPECIAL FILES
103 #---------------------------------------------------------------------------------
106 #---------------------------------------------------------------------------------
104 LINKER_SCRIPT = $(ARCH)/LPC17xx.ld
107 LINKER_SCRIPT = $(ARCH)/LPC17xx.ld
105 APPSOURCES += $(ARCH)/startup_LPC17xx.c $(ARCH)/core_cm3.c $(ARCH)/system_LPC17xx.c
108 APPSOURCES += $(ARCH)/startup_LPC17xx.c $(ARCH)/core_cm3.c $(ARCH)/system_LPC17xx.c
106 LPC17XX_INCDIR=$(ARCH)
109 LPC17XX_INCDIR=$(ARCH)
107
110
108
111
109 all:
112 all:
110 @echo "lpc17XX-arm-noabi-gcc rules"
113 @echo "lpc17XX-arm-noabi-gcc rules"
111
114
112
115
113 bin: $(TARGET).bin $(TARGET).hex
116 bin: $(TARGET).bin $(TARGET).hex
114 @echo "compile bin"
117 @echo "compile bin"
115
118
116
119
117
120
118 lib: $(TARGET).a
121 lib: $(TARGET).a
119 @echo "compile lib"
122 @echo "compile lib"
120
123
121 %.a: $(OBJECTFILES)
124 %.a: $(OBJECTFILES)
122 mkdir -p $(TARGETINSTALLPATH)
125 mkdir -p $(TARGETINSTALLPATH)
123 mkdir -p $(HEADERSINSTALLPATH)
126 mkdir -p $(HEADERSINSTALLPATH)
124 $(LIBUC_AR) rcs $(TARGETINSTALLPATH)/$@ $(OBJECTFILES)
127 $(LIBUC_AR) rcs $(TARGETINSTALLPATH)/$@ $(OBJECTFILES)
125 cp -f $(HEADERS) $(HEADERSINSTALLPATH)/
128 cp -f $(HEADERS) $(HEADERSINSTALLPATH)/
126
129
127
130
128 %.o: %.c
131 %.o: %.c
129 $(LIBUC_CC) -O3 -I $(LPC17XX_INCDIR) $(LIBUC_INCLUDES) $(LIBUC_BSP_INC) -MM $< -MF $*.d -MP
132 $(LIBUC_CC) -O3 -I $(LPC17XX_INCDIR) $(LIBUC_INCLUDES) $(LIBUC_BSP_INC) -MM $< -MF $*.d -MP
130 $(LIBUC_CC) -O3 -I $(LPC17XX_INCDIR) $(LIBUC_INCLUDES) $(LIBUC_BSP_INC) -c $(LIBUC_CFLAGS) $< -o $@
133 $(LIBUC_CC) -O3 -I $(LPC17XX_INCDIR) $(LIBUC_INCLUDES) $(LIBUC_BSP_INC) -c $(LIBUC_CFLAGS) $< -o $@
131
134
132
135
133 %.elf: $(LINKER_SCRIPT) $(OBJECTFILES)
136 %.elf: $(LINKER_SCRIPT) $(OBJECTFILES)
134 $(LIBUC_LD) -Map $(@:.elf=.map) $(LIBUC_LDFLAGS) -T $^ -o $@ $(LIBUC_BSP) $(LIBUC_LIBRARIES)
137 $(LIBUC_LD) -Map $(@:.elf=.map) $(LIBUC_LDFLAGS) -T $^ -o $@ $(LIBUC_BSP) $(LIBUC_LIBRARIES)
135 $(LIBUC_OBJDUMP) $(LIBUC_ODFLAGS) $@ > $(@:.elf=.dump)
138 $(LIBUC_OBJDUMP) $(LIBUC_ODFLAGS) $@ > $(@:.elf=.dump)
136 $(LIBUC_SIZE) $@
139 $(LIBUC_SIZE) $@
137
140
138 %.bin: %.elf
141 %.bin: %.elf
139 $(LIBUC_OBJCOPY) $(LIBUC_CPFLAGS) -O binary $< $*.bin
142 $(LIBUC_OBJCOPY) $(LIBUC_CPFLAGS) -O binary $< $*.bin
140
143
141
144
142 %.hex: %.elf
145 %.hex: %.elf
143 $(LIBUC_OBJCOPY) $(LIBUC_CPFLAGS) -O ihex $< $*.hex
146 $(LIBUC_OBJCOPY) $(LIBUC_CPFLAGS) -O ihex $< $*.hex
144
147
145
148
146 clean:
149 clean:
147 rm -f *.o *.d *.bin *.hex *.dump *.map *.a
150 rm -f *.o *.d *.bin *.hex *.dump *.map *.a
148
151
149 distclean:
152 distclean:
150 rm -f $(TARGETINSTALLPATH)/*.bin
153 rm -f $(TARGETINSTALLPATH)/*.bin
151 rm -f $(TARGETINSTALLPATH)/*.a
154 rm -f $(TARGETINSTALLPATH)/*.a
152
155
153
156
154
157
155
158
156
159
157
160
158
161
159
162
160
163
General Comments 0
You need to be logged in to leave comments. Login now