diff --git a/bin/libucmake b/bin/libucmake --- a/bin/libucmake +++ b/bin/libucmake @@ -71,7 +71,10 @@ function TargetInstallPath { } function getBSP { - BSP=`more $1 | grep -i "BSP" | sed s/BSP// | sed s/=// | sed 's/^[ \t]*//;s/[ \t]*$//'` + + if(more $1 | grep -i "BSP ="); then + BSP=`more $1 | grep -i "BSP" | sed s/BSP// | sed s/=// | sed 's/^[ \t]*//;s/[ \t]*$//'` + fi } if [ -z "$1" ] ; then @@ -122,6 +125,15 @@ if(echo $TEMPLATE | grep -i 'dir'); then done echo " @echo Code compiled" >> Makefile echo "" >> Makefile + echo 'clean:' >> Makefile + for DIRS in $SUBDIRS + do + if [ -e "$DIRS/Makefile" ]; then + echo " make clean -C $DIRS">> Makefile + fi + done + echo " @echo Code compiled" >> Makefile + echo "" >> Makefile else Target $PROJECTFILE Arch $PROJECTFILE @@ -130,25 +142,38 @@ else HeadersInstallPath $PROJECTFILE TargetInstallPath $PROJECTFILE getBSP $PROJECTFILE + echo "Current BSP is $BSP" echo $SRCFILES >> Makefile - getFilesList $PROJECTFILE HEADERS >> Makefile - getFilesList $PROJECTFILE SOURCES >> Makefile - echo 'OBJECTFILES = $(SOURCES:.c=.o)'>> Makefile - echo "ARCH = "'$(LIBUC)'"/rules/$ARCH" >> Makefile - echo "TARGET=$TARGET">> Makefile - echo "LIBUC_INCLUDES=$INCLUDES">> Makefile - echo "LIBUC_LIBRARIES=$LIBRARIES">> Makefile - echo "TARGETINSTALLPATH=$TARGETINSTALLPATH">> Makefile - echo "HEADERSINSTALLPATH=$HEADERSINSTALLPATH">> Makefile - echo "BSP=$BSP">> Makefile - echo 'include $(ARCH)/rules.mk' >> Makefile if(echo $TEMPLATE|grep -i app); then + getFilesList $PROJECTFILE HEADERS >> Makefile + getFilesList $PROJECTFILE SOURCES | sed 's/SOURCES/APPSOURCES/' >> Makefile + echo 'OBJECTFILES = $(APPSOURCES:.c=.o)'>> Makefile + echo "ARCH = "'$(LIBUC)'"/rules/$ARCH" >> Makefile + echo "TARGET=$TARGET">> Makefile + echo "LIBUC_INCLUDES=$INCLUDES">> Makefile + echo "LIBUC_LIBRARIES=$LIBRARIES">> Makefile + echo "TARGETINSTALLPATH=$TARGETINSTALLPATH">> Makefile + echo "HEADERSINSTALLPATH=$HEADERSINSTALLPATH">> Makefile + echo "BSP=$BSP">> Makefile + echo 'include $(ARCH)/rules.mk' >> Makefile echo '' >> Makefile echo 'all:bin' >> Makefile echo " @echo Code compiled" >> Makefile + echo '' >> Makefile else if(echo $TEMPLATE|grep -i lib); then + getFilesList $PROJECTFILE HEADERS >> Makefile + getFilesList $PROJECTFILE SOURCES | sed 's/SOURCES/LIBSOURCES/' >> Makefile + echo 'OBJECTFILES = $(LIBSOURCES:.c=.o)'>> Makefile + echo "ARCH = "'$(LIBUC)'"/rules/$ARCH" >> Makefile + echo "TARGET=$TARGET">> Makefile + echo "LIBUC_INCLUDES=$INCLUDES">> Makefile + echo "LIBUC_LIBRARIES=$LIBRARIES">> Makefile + echo "TARGETINSTALLPATH=$TARGETINSTALLPATH">> Makefile + echo "HEADERSINSTALLPATH=$HEADERSINSTALLPATH">> Makefile + echo "BSP=$BSP">> Makefile + echo 'include $(ARCH)/rules.mk' >> Makefile echo '' >> Makefile echo 'all:lib' >> Makefile echo " @echo Code compiled" >> Makefile diff --git a/lib/bin/lpc17XX/UART/libuart.a b/lib/bin/lpc17XX/UART/libuart.a index fe45a3ec84c31c47f6547564382884152640f642..7aee688176be006bc23e769614266c134f20db0c GIT binary patch literal 17434 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 BrU?K5 diff --git a/lib/includes/lpc17XX/UART/uart.h b/lib/includes/lpc17XX/UART/uart.h --- a/lib/includes/lpc17XX/UART/uart.h +++ b/lib/includes/lpc17XX/UART/uart.h @@ -19,9 +19,18 @@ -- Author : Alexis Jeandet -- Mail : alexis.jeandet@gmail.com -------------------------------------------------------------------------------*/ +#ifndef UART_H +#define UART_H #include "LPC17xx.h" -struct ARM7uartRegs + +#define uartNoParity 0 +#define uartOddParity 1 +#define uartEvenParity 3 +#define uartTrueParity 5 +#define uartFalseParity 7 + +struct LPC17XXuartRegs { unsigned long RWreg; unsigned long IntEN; @@ -32,12 +41,26 @@ struct ARM7uartRegs unsigned long ScratchPad; }; -typedef struct ARM7uartRegs uartDev; +typedef volatile struct LPC17XXuartRegs uartDev; -uartDev* uartopen(int count); -void uartputc(uartDev* dev,char c); -void uartputs(uartDev* dev,char *s); -void uartgets(uartDev* dev,char *s); -char uartgetc(uartDev* dev); -void uartsetup(uartDev* dev,int baudRate,int cpuClk); +extern uartDev* uartopen(int count); +extern void uarton(int count); +extern void uartoff(int count); +extern void uartputc(uartDev* dev,char c); +extern void uartputs(uartDev* dev,char *s); +extern void uartgets(uartDev* dev,char *s); +extern char uartgetc(uartDev* dev); +extern void uartsetbaudrate(uartDev* dev,unsigned int baudRate); +extern unsigned char uartgetpclkfactor(uartDev* dev); +extern void uartsetpclkfactor(uartDev* dev,unsigned char pclkfactor); +extern void uartsetup(uartDev* dev,unsigned int baudRate,unsigned char WordLength,unsigned char StopBitCnt,unsigned char Parity); +#endif + + + + + + + + diff --git a/lib/src/lpc17XX/UART/Makefile b/lib/src/lpc17XX/UART/Makefile --- a/lib/src/lpc17XX/UART/Makefile +++ b/lib/src/lpc17XX/UART/Makefile @@ -4,14 +4,15 @@ LIBUC = /opt/libuc2 HEADERSINSTALLPATH = $(LIBUC_INC_DIR)/UART HEADERS += uart.h -SOURCES += uart.c -OBJECTFILES = $(SOURCES:.c=.o) +LIBSOURCES += uart.c +OBJECTFILES = $(LIBSOURCES:.c=.o) ARCH = $(LIBUC)/rules/lpc17XX-arm-noabi-gcc TARGET=libuart -LIBUC_INCLUDES= -LIBUC_LIBRARIES= +LIBUC_INCLUDES=$(LIBUC_INC_DIR_CORE) +LIBUC_LIBRARIES=$(LIBUC_LIBS_DIR_CORE) $(LIBUC_LIBS_CORE) TARGETINSTALLPATH=$(LIBUC_LIBS_DIR)/UART HEADERSINSTALLPATH=$(LIBUC_INC_DIR)/UART +BSP=generic include $(ARCH)/rules.mk all:lib diff --git a/lib/src/lpc17XX/UART/uart.c b/lib/src/lpc17XX/UART/uart.c --- a/lib/src/lpc17XX/UART/uart.c +++ b/lib/src/lpc17XX/UART/uart.c @@ -19,6 +19,7 @@ -- Author : Alexis Jeandet -- Mail : alexis.jeandet@gmail.com -------------------------------------------------------------------------------*/ +#include "core.h" #include "uart.h" @@ -42,8 +43,130 @@ void uartgets(uartDev* dev,char *s) { while (*s && (*s!=0xd)) *s++ = uartgetc(dev); } -void uartsetup(uartDev* dev,int baudRate,int cpuClk) -{} +void uartoff(int count) +{ + switch(count) + { + case 0: + LPC_SC->PCONP &= ~( 1 << 3 ); + break; + case 1: + LPC_SC->PCONP &= ~( 1 << 4 ); + break; + case 2: + LPC_SC->PCONP &= ~( 1 << 24 ); + break; + case 3: + LPC_SC->PCONP &= ~( 1 << 25 ); + break; + default: + break; + } +} + +void uarton(int count) +{ + switch(count) + { + case 0: + LPC_SC->PCONP |= ( 1 << 3 ); + break; + case 1: + LPC_SC->PCONP |= ( 1 << 4 ); + break; + case 2: + LPC_SC->PCONP |= ( 1 << 24 ); + break; + case 3: + LPC_SC->PCONP |= ( 1 << 25 ); + break; + default: + break; + } +} + + + +void uartsetup(uartDev* dev,unsigned int baudRate,unsigned char WordLength,unsigned char StopBitCnt,unsigned char Parity) +{ + if(WordLength>9)WordLength=8; + if((StopBitCnt>2)||(StopBitCnt==0))StopBitCnt=1; + if(Parity>7)Parity=0; + dev->LineCtrl = (WordLength-5) + ((StopBitCnt-1)<<2) + (Parity<<3); + uartsetbaudrate(dev,baudRate); +} + +unsigned char uartgetpclkfactor(uartDev* dev) +{ + unsigned int clksel=0; + const char clkselDec[]={4,1,2,8}; + switch((int)dev) + { + case (int)LPC_UART0_BASE: + clksel = (LPC_SC->PCLKSEL0>>6) & 3; + break; + case (int)LPC_UART1_BASE: + clksel = (LPC_SC->PCLKSEL0>>8) & 3; + break; + case (int)LPC_UART2_BASE: + clksel = (LPC_SC->PCLKSEL1>>16) & 3; + break; + case (int)LPC_UART3_BASE: + clksel = (LPC_SC->PCLKSEL1>>18) & 3; + break; + default: + break; + } + return clkselDec[clksel]; +} + +void uartsetpclkfactor(uartDev* dev,unsigned char pclkfactor) +{ + const char clkselDec[]={1,1,2,2,0,0,0,0,3}; + unsigned int clksel=0; + switch((int)dev) + { + case (int)LPC_UART0_BASE: + LPC_SC->PCLKSEL0 |= clkselDec[pclkfactor]<<6; + LPC_SC->PCLKSEL0 &= clkselDec[pclkfactor]<<6; + break; + case (int)LPC_UART1_BASE: + LPC_SC->PCLKSEL0 |= clkselDec[pclkfactor]<<8; + LPC_SC->PCLKSEL0 &= clkselDec[pclkfactor]<<8; + break; + case (int)LPC_UART2_BASE: + LPC_SC->PCLKSEL1 |= clkselDec[pclkfactor]<<16; + LPC_SC->PCLKSEL1 &= clkselDec[pclkfactor]<<16; + break; + case (int)LPC_UART3_BASE: + LPC_SC->PCLKSEL1 |= clkselDec[pclkfactor]<<18; + LPC_SC->PCLKSEL1 &= clkselDec[pclkfactor]<<18; + break; + default: + break; + } +} + +void uartsetbaudrate(uartDev* dev,unsigned int baudRate) +{ + unsigned int cpuClk=0; + unsigned int pclk = 0; + unsigned int clksel=0; + unsigned int cpuclk=0; + if(dev==0)return; + cpuclk = coregetCpuFreq(); + pclk = cpuclk / uartgetpclkfactor(dev); + while((baudRate*16)>pclk) + { + unsigned char pclkfact= uartgetpclkfactor(dev); + if(pclkfact==1)return; + uartsetpclkfactor(dev,pclkfact/2); + pclk = cpuclk / uartgetpclkfactor(dev); + } + dev->LineCtrl |= 128; + dev->RWreg = pclk/(baudRate*16); + dev->LineCtrl &= ~(128); +} uartDev* uartopen(int count){ uartDev* dev; diff --git a/lib/src/lpc17XX/UART/uart.d b/lib/src/lpc17XX/UART/uart.d --- a/lib/src/lpc17XX/UART/uart.d +++ b/lib/src/lpc17XX/UART/uart.d @@ -1,11 +1,14 @@ -uart.o: uart.c uart.h /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/LPC17xx.h \ +uart.o: uart.c /opt/libuc2/lib/includes/lpc17XX/CORE/core.h \ + /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/LPC17xx.h \ /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/core_cm3.h \ - /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/system_LPC17xx.h + /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/system_LPC17xx.h uart.h -uart.h: +/opt/libuc2/lib/includes/lpc17XX/CORE/core.h: /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/LPC17xx.h: /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/core_cm3.h: /opt/libuc2/rules/lpc17XX-arm-noabi-gcc/system_LPC17xx.h: + +uart.h: diff --git a/lib/src/lpc17XX/UART/uart.h b/lib/src/lpc17XX/UART/uart.h --- a/lib/src/lpc17XX/UART/uart.h +++ b/lib/src/lpc17XX/UART/uart.h @@ -19,9 +19,18 @@ -- Author : Alexis Jeandet -- Mail : alexis.jeandet@gmail.com -------------------------------------------------------------------------------*/ +#ifndef UART_H +#define UART_H #include "LPC17xx.h" -struct ARM7uartRegs + +#define uartNoParity 0 +#define uartOddParity 1 +#define uartEvenParity 3 +#define uartTrueParity 5 +#define uartFalseParity 7 + +struct LPC17XXuartRegs { unsigned long RWreg; unsigned long IntEN; @@ -32,12 +41,26 @@ struct ARM7uartRegs unsigned long ScratchPad; }; -typedef struct ARM7uartRegs uartDev; +typedef volatile struct LPC17XXuartRegs uartDev; -uartDev* uartopen(int count); -void uartputc(uartDev* dev,char c); -void uartputs(uartDev* dev,char *s); -void uartgets(uartDev* dev,char *s); -char uartgetc(uartDev* dev); -void uartsetup(uartDev* dev,int baudRate,int cpuClk); +extern uartDev* uartopen(int count); +extern void uarton(int count); +extern void uartoff(int count); +extern void uartputc(uartDev* dev,char c); +extern void uartputs(uartDev* dev,char *s); +extern void uartgets(uartDev* dev,char *s); +extern char uartgetc(uartDev* dev); +extern void uartsetbaudrate(uartDev* dev,unsigned int baudRate); +extern unsigned char uartgetpclkfactor(uartDev* dev); +extern void uartsetpclkfactor(uartDev* dev,unsigned char pclkfactor); +extern void uartsetup(uartDev* dev,unsigned int baudRate,unsigned char WordLength,unsigned char StopBitCnt,unsigned char Parity); +#endif + + + + + + + + diff --git a/lib/src/lpc17XX/UART/uart.pro b/lib/src/lpc17XX/UART/uart.pro --- a/lib/src/lpc17XX/UART/uart.pro +++ b/lib/src/lpc17XX/UART/uart.pro @@ -4,7 +4,7 @@ TARGET = libuart TARGETINSTALLPATH = $(LIBUC_LIBS_DIR)/UART HEADERSINSTALLPATH = $(LIBUC_INC_DIR)/UART -LIBS += +LIBS += CORE SOURCES += uart.c diff --git a/rules/lpc17XX-arm-noabi-gcc/rules.mk b/rules/lpc17XX-arm-noabi-gcc/rules.mk --- a/rules/lpc17XX-arm-noabi-gcc/rules.mk +++ b/rules/lpc17XX-arm-noabi-gcc/rules.mk @@ -69,18 +69,21 @@ LIBUC_CXXFLAGS_SOFT_FPU = -msoft-float LIBUC_CXXFLAGS_HARD_FPU = LIBUC_LIBS = -LIBUC_LIBS_UART = -luart -LIBUC_LIBS_SPI = -lspi -LIBUC_LIBS_IIC = -liic -LIBUC_LIBS_ADC = -ladc +LIBUC_LIBS_CORE = -static -lcore +LIBUC_LIBS_UART = -static -luart +LIBUC_LIBS_SPI = -static -lspi +LIBUC_LIBS_IIC = -static -liic +LIBUC_LIBS_ADC = -static -ladc LIBUC_LIBS_DIR = $(LIBUC)/lib/bin/lpc17XX +LIBUC_LIBS_DIR_CORE = -L $(LIBUC_LIBS_DIR)/CORE LIBUC_LIBS_DIR_UART = -L $(LIBUC_LIBS_DIR)/UART LIBUC_LIBS_DIR_SPI = -L $(LIBUC_LIBS_DIR)/SPI LIBUC_LIBS_DIR_IIC = -L $(LIBUC_LIBS_DIR)/IIC LIBUC_LIBS_DIR_ADC = -L $(LIBUC_LIBS_DIR)/ADC LIBUC_INC_DIR = $(LIBUC)/lib/includes/lpc17XX +LIBUC_INC_DIR_CORE = -I $(LIBUC_INC_DIR)/CORE LIBUC_INC_DIR_UART = -I $(LIBUC_INC_DIR)/UART LIBUC_INC_DIR_SPI = -I $(LIBUC_INC_DIR)/SPI LIBUC_INC_DIR_IIC = -I $(LIBUC_INC_DIR)/IIC @@ -93,13 +96,13 @@ LIBUC_INC_DIR_ADC = -I $(LIBUC_ LIBUC_BSP_DIR=$(LIBUC)/bsp LIBUC_BSP_BIN_DIR= $(LIBUC_BSP_DIR)/bin LIBUC_BSP_INC_DIR= $(LIBUC_BSP_DIR)/includes -LIBUC_BSP = -L $(LIBUC_BSP_BIN_DIR)/$(BSP) -lbsp +LIBUC_BSP = -L $(LIBUC_BSP_BIN_DIR)/$(BSP) -static -lbsp LIBUC_BSP_INC = -I $(LIBUC_BSP_INC_DIR)/$(BSP) #--------------------------------------------------------------------------------- # DEVICE SPECIAL FILES #--------------------------------------------------------------------------------- LINKER_SCRIPT = $(ARCH)/LPC17xx.ld -SOURCES += $(ARCH)/startup_LPC17xx.c $(ARCH)/core_cm3.c $(ARCH)/system_LPC17xx.c +APPSOURCES += $(ARCH)/startup_LPC17xx.c $(ARCH)/core_cm3.c $(ARCH)/system_LPC17xx.c LPC17XX_INCDIR=$(ARCH) @@ -118,17 +121,17 @@ lib: $(TARGET).a %.a: $(OBJECTFILES) mkdir -p $(TARGETINSTALLPATH) mkdir -p $(HEADERSINSTALLPATH) - ar rcs $(TARGETINSTALLPATH)/$@ $(OBJECTFILES) - cp $(HEADERS) $(HEADERSINSTALLPATH)/ + $(LIBUC_AR) rcs $(TARGETINSTALLPATH)/$@ $(OBJECTFILES) + cp -f $(HEADERS) $(HEADERSINSTALLPATH)/ %.o: %.c - $(LIBUC_CC) -I $(LPC17XX_INCDIR) $(LIBUC_INCLUDES) $(LIBUC_BSP_INC) -MM $< -MF $*.d -MP - $(LIBUC_CC) -I $(LPC17XX_INCDIR) $(LIBUC_INCLUDES) $(LIBUC_BSP_INC) -c $(LIBUC_CFLAGS) $< -o $@ + $(LIBUC_CC) -O3 -I $(LPC17XX_INCDIR) $(LIBUC_INCLUDES) $(LIBUC_BSP_INC) -MM $< -MF $*.d -MP + $(LIBUC_CC) -O3 -I $(LPC17XX_INCDIR) $(LIBUC_INCLUDES) $(LIBUC_BSP_INC) -c $(LIBUC_CFLAGS) $< -o $@ %.elf: $(LINKER_SCRIPT) $(OBJECTFILES) - $(LIBUC_LD) -Map $(@:.elf=.map) $(LIBUC_LDFLAGS) $(LIBUC_LIBRARIES) $(LIBUC_BSP) -T $^ -o $@ + $(LIBUC_LD) -Map $(@:.elf=.map) $(LIBUC_LDFLAGS) -T $^ -o $@ $(LIBUC_BSP) $(LIBUC_LIBRARIES) $(LIBUC_OBJDUMP) $(LIBUC_ODFLAGS) $@ > $(@:.elf=.dump) $(LIBUC_SIZE) $@