From fdfdd0b4bf5d2c89670495afd4d0ba1a1b4f1d5f Mon Sep 17 00:00:00 2001 From: aethaniel Date: Tue, 31 May 2011 23:17:52 +0200 Subject: [PATCH] Adding minimal libboard with lowlevel init and vectors --- hardware/tools/libboard_sam3s-ek/board.h | 42 ++++ .../libboard_sam3s-ek/build_gcc/Makefile | 23 ++ .../libboard_sam3s-ek/build_gcc/debug.mk | 7 + .../debug_sam3s_ek/board_cstartup_gnu.o | Bin 0 -> 17148 bytes .../build_gcc/debug_sam3s_ek/board_lowlevel.o | Bin 0 -> 5340 bytes .../build_gcc/debug_sam3s_ek/syscalls.o | Bin 0 -> 9900 bytes .../build_gcc/debug_sam3s_ek/timetick.o | Bin 0 -> 9932 bytes .../tools/libboard_sam3s-ek/build_gcc/gcc.mk | 39 +++ .../libboard_sam3s-ek/build_gcc/release.mk | 7 + .../release_sam3s_ek/board_cstartup_gnu.o | Bin 0 -> 12816 bytes .../release_sam3s_ek/board_lowlevel.o | Bin 0 -> 1049 bytes .../build_gcc/release_sam3s_ek/syscalls.o | Bin 0 -> 2324 bytes .../build_gcc/release_sam3s_ek/timetick.o | Bin 0 -> 1832 bytes .../libboard_sam3s-ek/build_gcc/sam3s_ek.mk | 122 ++++++++++ .../libboard_sam3s-ek/include/bitbanding.h | 108 +++++++++ .../include/board_lowlevel.h | 46 ++++ .../libboard_sam3s-ek/include/syscalls.h | 65 +++++ .../libboard_sam3s-ek/include/timetick.h | 78 ++++++ .../lib/libboard_sam3s_ek_gcc_dbg.a | Bin 0 -> 43824 bytes .../lib/libboard_sam3s_ek_gcc_dbg.a.txt | 85 +++++++ .../lib/libboard_sam3s_ek_gcc_rel.a | Bin 0 -> 19526 bytes .../lib/libboard_sam3s_ek_gcc_rel.a.txt | 83 +++++++ hardware/tools/libboard_sam3s-ek/pins.txt | 0 .../source/board_cstartup_gnu.c | 227 ++++++++++++++++++ .../libboard_sam3s-ek/source/board_lowlevel.c | 111 +++++++++ .../tools/libboard_sam3s-ek/source/syscalls.c | 141 +++++++++++ .../tools/libboard_sam3s-ek/source/timetick.c | 118 +++++++++ 27 files changed, 1302 insertions(+) create mode 100644 hardware/tools/libboard_sam3s-ek/board.h create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/Makefile create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/debug.mk create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/board_cstartup_gnu.o create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/board_lowlevel.o create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/syscalls.o create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/timetick.o create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/gcc.mk create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/release.mk create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/release_sam3s_ek/board_cstartup_gnu.o create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/release_sam3s_ek/board_lowlevel.o create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/release_sam3s_ek/syscalls.o create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/release_sam3s_ek/timetick.o create mode 100644 hardware/tools/libboard_sam3s-ek/build_gcc/sam3s_ek.mk create mode 100644 hardware/tools/libboard_sam3s-ek/include/bitbanding.h create mode 100644 hardware/tools/libboard_sam3s-ek/include/board_lowlevel.h create mode 100644 hardware/tools/libboard_sam3s-ek/include/syscalls.h create mode 100644 hardware/tools/libboard_sam3s-ek/include/timetick.h create mode 100644 hardware/tools/libboard_sam3s-ek/lib/libboard_sam3s_ek_gcc_dbg.a create mode 100644 hardware/tools/libboard_sam3s-ek/lib/libboard_sam3s_ek_gcc_dbg.a.txt create mode 100644 hardware/tools/libboard_sam3s-ek/lib/libboard_sam3s_ek_gcc_rel.a create mode 100644 hardware/tools/libboard_sam3s-ek/lib/libboard_sam3s_ek_gcc_rel.a.txt create mode 100644 hardware/tools/libboard_sam3s-ek/pins.txt create mode 100644 hardware/tools/libboard_sam3s-ek/source/board_cstartup_gnu.c create mode 100644 hardware/tools/libboard_sam3s-ek/source/board_lowlevel.c create mode 100644 hardware/tools/libboard_sam3s-ek/source/syscalls.c create mode 100644 hardware/tools/libboard_sam3s-ek/source/timetick.c diff --git a/hardware/tools/libboard_sam3s-ek/board.h b/hardware/tools/libboard_sam3s-ek/board.h new file mode 100644 index 000000000..79194b977 --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/board.h @@ -0,0 +1,42 @@ +#ifndef _BOARD_ +#define _BOARD_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "chip.h" + +#include "include/bitbanding.h" +#include "include/board_lowlevel.h" +#include "include/timetick.h" + +/** + * Libc porting layers + */ +#if defined ( __GNUC__ ) /* GCC CS3 */ +# include "include/syscalls.h" /** RedHat Newlib minimal stub */ +#endif + +/*---------------------------------------------------------------------------- + * Definitions + *----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ + +/** Name of the board */ +#define BOARD_NAME "SAM3S-EK" + +/* +#define BOARD_REV_A +*/ +#define BOARD_REV_B + +/** Frequency of the board main oscillator */ +#define BOARD_MAINOSC 12000000 + +/** Master clock frequency (when using board_lowlevel.c) */ +#define BOARD_MCK 64000000 + +#endif /* #ifndef _BOARD_ */ + diff --git a/hardware/tools/libboard_sam3s-ek/build_gcc/Makefile b/hardware/tools/libboard_sam3s-ek/build_gcc/Makefile new file mode 100644 index 000000000..4d4c73059 --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/build_gcc/Makefile @@ -0,0 +1,23 @@ +# Makefile for compiling libboard + +SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- + +all: sam3s_ek + +.PHONY: sam3s_ek +sam3s_ek: + @echo --- Making sam3s_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3s_ek.mk + @$(MAKE) $(SUBMAKE_OPTIONS) -f sam3s_ek.mk + +.PHONY: clean +clean: + @echo --- Cleaning sam3s_ek + @$(MAKE) $(SUBMAKE_OPTIONS) -f sam3s_ek.mk $@ + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3s_ek.mk $@ + + diff --git a/hardware/tools/libboard_sam3s-ek/build_gcc/debug.mk b/hardware/tools/libboard_sam3s-ek/build_gcc/debug.mk new file mode 100644 index 000000000..3ab3f8066 --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/build_gcc/debug.mk @@ -0,0 +1,7 @@ +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -g -O0 -DDEBUG diff --git a/hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/board_cstartup_gnu.o b/hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/board_cstartup_gnu.o new file mode 100644 index 0000000000000000000000000000000000000000..728eafcd966ddd1965842e40966ccf446cba241c GIT binary patch literal 17148 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 literal 0 HcmV?d00001 diff --git a/hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/board_lowlevel.o b/hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/board_lowlevel.o new file mode 100644 index 0000000000000000000000000000000000000000..449188f8e3cb74526271c55d88bba20a5f5ec922 GIT binary patch literal 5340 zcma)Adu&tJ8UOCRb{^M{1PBEJ>KsCWHjNWVcq|l1FmXtn5Z6u`##|gfZW6DKo!JhL z!q!YMZ9+)vwo04YX_Kl>;*V+F*t928t7)26T4|+1nzU*AW2&lYq7rP~w3o_$-?``5 z*B}*+a_{f^eXsLA$2ZRnkB2o)BULooPBlhU@d}H(U%+ow3r9I+b<1zdj{j0Q? zHr>$LK%{RWkLLiCM8-p8_y;`uJfmxfTvFdeStzNp;uo-GyYx){gy6*lx21wT%-vcwQusj)MgUj6r zH{(OrMAJgkc!QzI{VUcrHLifUT<%<<0`JD-P`cT#;q!Pkvh*!HO`pX}@>dmiQFE&? zM~oI9`UJ^Pjd~UB2e%2njIWFCY@W&{cMd$+Gf7abX>-+H}mW~ z;akUJ-?_=0XX{bv95DNsPDB*o)OxZWA&3ePSMtOxD%Z z{y;UgB1(6(&-*}8jkmpxzX-2fT^b?NKS(bBU~|(R!lM~lOMoYuXIrPw2;}*P>|(@i z%QD}(VjJmnsuiLrAH!R$61s{7RKhb}JT=ZMZM2Z92$wx|F1)+2_WE`vE5sXcSrNW# z__jzQ2k&JroAB7##d;JvwUGtE%gIBLkytW1K0Xwq=tL+P4IPf{ppm1~flxr~GNBE} zqcIvD4u_KAc#K5IL?~Q~=&kPpCz^>)#3*K!t!v0@o(Gp@w5;bzu6c zQh!z2Rh4#Er9D+?Z*?hTPfg_(t;ywzV+>WtM$tCA&#bX$PBu3@iDufP7O5>IF=Q$_ z9#Zpz)j)DqL=QM_I(~?T2NFZ2EEZxhfuoW!i4!Yz(`kDU_4i`0=0YLQMoFIda;gE zd>N3o6{0(Y3ARpmPxMiP**MXxuXeR*YqfR8dToQ&u04#6$iFD>plGC@^Lu@?9$XdP z5kr30kiT{43!1NyC|EwTSV^UUm6DAMNc0;xgk;c{S}kY1)VC&?~hPm zSuQF4T6`$%Pz1<+TyEo0GV>$wN0RgNPO23{+$>JcE4fyTx|PQ9^|cw)ChFty zvkT8qtr&DS=Mk?JgB}uh88?^Dj?Fv^_xw)UQlTx``k!g==W|EL0mpk;M+100Fmery z9gHpZ9O~H9yw+IH{{~68B0R zk@%EEOJYUhd5K?<__D++5`QW29f^OI_&168Iui94BvvGzWyBfuoW%2t*vprs{UwRt zmB{~@VSg@+yki)}Isl@Jg7a@A){CzS;1ukqjv>;q{8irn1JXkQ A9smFU literal 0 HcmV?d00001 diff --git a/hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/syscalls.o b/hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/syscalls.o new file mode 100644 index 0000000000000000000000000000000000000000..1967a5e13620b776385fcf028afc3139dccf929c GIT binary patch literal 9900 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 F_dm4eqyPW_ literal 0 HcmV?d00001 diff --git a/hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/timetick.o b/hardware/tools/libboard_sam3s-ek/build_gcc/debug_sam3s_ek/timetick.o new file mode 100644 index 0000000000000000000000000000000000000000..aa161caaa3a3f85b6b99a978cd6f17f67ebace3b GIT binary patch literal 9932 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 aigW-q~!zT2Dt literal 0 HcmV?d00001 diff --git a/hardware/tools/libboard_sam3s-ek/build_gcc/release_sam3s_ek/board_lowlevel.o b/hardware/tools/libboard_sam3s-ek/build_gcc/release_sam3s_ek/board_lowlevel.o new file mode 100644 index 0000000000000000000000000000000000000000..67e5880fc3606f68fc4debaf63bcfc139a3f14e2 GIT binary patch literal 1049 zcma)4%Wl(95S?o~X%bLNVyd=5LZ(R}l^ZKBghUrf6(BSZA;E?P64;I<0!dssE~P8_ z3&4*c!Ge!qLBE2nD}{BLv3*m!LV}S-XU@!-@m$~g;bH#~V+^=4D8U5-_!f{v!xxkw z14~fuJ(;(h{HvX={6_XpW>-$t{j9Ow{WQ&aY(+Z#dUoDqKUw|vuVQbjn>V1a+5I@p z&QF@rn*6rliDKJhqHIE8gA`sW*1gvIjJ>j75n>fqkWIFG^)EdFR)pQ8ze{}DK?gF+ zEs&O5>C`X(1x_&;*P8LG`X}B%1zle05%RNB=>axn9zI_s%;w}Rg#tMq%Deifrz*eA}T$lbo z!yqAp<|(m={!_-#N(`8%DVn6>#%#OvSMlcT)@*xXdU|VOyKksLDq`V&9$yAQ3$e$=+Y$c=VG>tf3; z5!Kh$R;~HFz1^Vc1$$O~VZplPN1j!yRI7Gnd163+3XZan6`Br;Qn7*7&?gcDT0_xedrDP_iu=21aDJ+{h)n5r$+3 zUdLvq?Szfs5h=ancSUuYonGi^zq8GI5W^4MDB2UN6MEiYP~f>O2|Nz4uk=J7iXy>B zey1b)Loe$47#8$+eZ2UpT_wBO+u8BD7;*K^ri~c`zp)#6p_KZg@-rZ~1%@?J^+7VM zpw%xR8E0xck5g?#bQ$qeIb2bXVIevnTYld2$KV#>8%_C-kbDC6IWXs9=J~z{r}O;? zTlNH%WFKhB4DS93xO+L=1K4QH0ZBd=p7gxiuw{=77F;if`{@MS&pBN81l-dcE`a?B zSV-o50Y`d$`>-bk1SxC%4SKrHMHo`&agF0T{{c?t`xUm#1$ChRnZrGUecXBct#LI- zrr*Icv8Fye7xO<_a^En$1TVyz`Uvh{nCQ{IgkD3biUG+urZZsa<=94Ga6!Q#IF{-C z9Sjj2!tp8mUxK-QTqmwwI^RBu#b+WU`NS5P_7~~xd-1b02dhwCGqVzor)OllnCSst z-DwO>&Rb4f@(t(k=@a67Bf0p98mPY}{=9V0sXsA+n5arNp6)QtU&_VPe;CKda`CYw zIW!Z|Z2qie(s(XD9@is5ac3uFBAUe5&(%xF#7Sr4eDVpI=&JmPvJP|Q4Xij#CP`Fz zO*%{GV;se@jPv6j6XMzUe&wFwlPcr8n6XD_S=(I6GR|jJ+dO|6=W#7#m*_^u9;4gZ z=6#m2TfQH8KJKA1>dE(@5U-~N<~V){#7`67Ysvb62=~IK+v$XMljb6tYf;;C`}Vir z)vl0wR2{F|qWDeKuc>}V9sPnj>g{ymSJP4Nr4zrBen0TL(Kb2pJL%{bQmwUs4NvpB QzEbyM0fplA7A_Ed09*~x4gdfE literal 0 HcmV?d00001 diff --git a/hardware/tools/libboard_sam3s-ek/build_gcc/release_sam3s_ek/timetick.o b/hardware/tools/libboard_sam3s-ek/build_gcc/release_sam3s_ek/timetick.o new file mode 100644 index 0000000000000000000000000000000000000000..2924144850de64cb0f11533f3408410c31015b0a GIT binary patch literal 1832 zcma)6%}*0S6o1n#r8Goq(O9d|6^LShO(~cdZcw4&qcH&zPKIvFVpl08+ieu1K{=7= zfvbrJ4|?a~nTvk_i5HICJQ10O$xL--DdVkTK;j;-Cc8L^WpC(Gj9tJL=R@2{cVAQx%MiG%ds$+sX6 zxomb+@0+jIos#8j=(+xWeb#m@J(C_9GSb6?Bbht;h;i4*z*rjVH7&DfgSdreTej-B z*0aIwFR#WjnlT}SFNTR71LW7%{~Fp9Mr7>>1S zP|#SgE7pQtda^XNR&uP0wT8IU$!v9P#eP(GEG3z|))uYIG<6D_0RnR~+#t$a@ZEhkWxUYQky0--?rM0&pAi(H30TpF@gm zx`)rP=n<%=qObOy}#7;TmB1^S&h zSeS1G11eu!;iI~k?={*g-!}T!aIi4nOAM%dNrf+lIp*6zTjl$RzK(;1`QBnc<DeZb3lh%pxCW1qDe55v#D94D>H(_m zJWdVzf~pNf!@nxXQ9R<|2O1Fm>tsN~PHx6WJv{Z1l)xfigIEhb=Hcnwq)^8Mq9MAO zzth79eJFi(2HgV*?M$3Hk8@s*KN_;#@Nn|Z5;!a4`}8j+aQ_p&Pjw`4zjMA%H6(C9 zi@vXWKB8QFN?m*rjS}>_(7Oyv%TI$B@{EVJ5elByrbpF#O63EJYfv2_+}wb#>4eFr KGbBxQk^Tn^|G07h literal 0 HcmV?d00001 diff --git a/hardware/tools/libboard_sam3s-ek/build_gcc/sam3s_ek.mk b/hardware/tools/libboard_sam3s-ek/build_gcc/sam3s_ek.mk new file mode 100644 index 000000000..e58f5cece --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/build_gcc/sam3s_ek.mk @@ -0,0 +1,122 @@ +# Makefile for compiling libboard +.SUFFIXES: .o .a .c .s + +CHIP=sam3s4 +BOARD=sam3s_ek +LIBNAME=libboard +TOOLCHAIN=gcc + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Output directories +OUTPUT_BIN = ../lib + +# Libraries +PROJECT_BASE_PATH = .. + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH)/include +vpath %.c $(PROJECT_BASE_PATH)/source +vpath %.s $(PROJECT_BASE_PATH)/source + +VPATH+=$(PROJECT_BASE_PATH)/source + +INCLUDES = -I$(PROJECT_BASE_PATH) +INCLUDES += -I$(PROJECT_BASE_PATH)/include +INCLUDES += -I$(PROJECT_BASE_PATH)/../libchip_sam3s + +#------------------------------------------------------------------------------- +ifdef DEBUG +include debug.mk +else +include release.mk +endif + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +include $(TOOLCHAIN).mk + +#------------------------------------------------------------------------------- +ifdef DEBUG +OUTPUT_OBJ=debug +OUTPUT_LIB=$(LIBNAME)_$(BOARD)_$(TOOLCHAIN)_dbg.a +else +OUTPUT_OBJ=release +OUTPUT_LIB=$(LIBNAME)_$(BOARD)_$(TOOLCHAIN)_rel.a +endif + +OUTPUT_PATH=$(OUTPUT_OBJ)_$(BOARD) + +#------------------------------------------------------------------------------- +# C source files and objects +#------------------------------------------------------------------------------- +C_SRC=$(wildcard $(PROJECT_BASE_PATH)/source/*.c) + +C_OBJ_TEMP = $(patsubst %.c, %.o, $(notdir $(C_SRC))) + +# during development, remove some files +C_OBJ_FILTER= + +C_OBJ=$(filter-out $(C_OBJ_FILTER), $(C_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Assembler source files and objects +#------------------------------------------------------------------------------- +A_SRC=$(wildcard $(PROJECT_BASE_PATH)/source/*.s) + +A_OBJ_TEMP=$(patsubst %.s, %.o, $(notdir $(A_SRC))) + +# during development, remove some files +A_OBJ_FILTER= + +A_OBJ=$(filter-out $(A_OBJ_FILTER), $(A_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- +all: $(BOARD) + +$(BOARD): create_output $(OUTPUT_LIB) + +.PHONY: create_output +create_output: + @echo --- Preparing $(BOARD) files $(OUTPUT_PATH) $(OUTPUT_BIN) +# @echo ------------------------- +# @echo *$(C_SRC) +# @echo ------------------------- +# @echo *$(C_OBJ) +# @echo ------------------------- +# @echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) +# @echo ------------------------- +# @echo *$(A_SRC) +# @echo ------------------------- + + -@mkdir $(subst /,$(SEP),$(OUTPUT_BIN)) 1>NUL 2>&1 + -@mkdir $(OUTPUT_PATH) 1>NUL 2>&1 + +$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c + @$(CC) -c $(CFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(A_OBJ)): $(OUTPUT_PATH)/%.o: %.s + @$(AS) -c $(ASFLAGS) $< -o $@ + +$(OUTPUT_LIB): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ)) + @$(AR) -r "$(OUTPUT_BIN)/$@" $^ + @$(NM) "$(OUTPUT_BIN)/$@" > "$(OUTPUT_BIN)/$@.txt" + +.PHONY: clean +clean: + @echo --- Cleaning $(BOARD) files [$(OUTPUT_PATH)$(SEP)*.o] + -@$(RM) $(OUTPUT_PATH) 1>NUL 2>&1 + -@$(RM) $(OUTPUT_BIN)/$(OUTPUT_LIB) 1>NUL 2>&1 + -@$(RM) $(OUTPUT_BIN)/$(OUTPUT_LIB).txt 1>NUL 2>&1 + +# dependencies +$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: $(PROJECT_BASE_PATH)/board.h $(wildcard $(PROJECT_BASE_PATH)/include/*.h) diff --git a/hardware/tools/libboard_sam3s-ek/include/bitbanding.h b/hardware/tools/libboard_sam3s-ek/include/bitbanding.h new file mode 100644 index 000000000..a3ca5011e --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/include/bitbanding.h @@ -0,0 +1,108 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +#ifndef _BITBANDING_ +#define _BITBANDING_ + +/*---------------------------------------------------------------------------- + * \file bitbanding.h + * Include Defines & macros for bit-banding. + *----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- + * Header files + *----------------------------------------------------------------------------*/ + +#include + +/*---------------------------------------------------------------------------- + * Global Macros + *----------------------------------------------------------------------------*/ + +/** + * \brief Check if the address is in bit banding sram region. + * + * \note The address should be in area of 0x2000000 ~ 0x200FFFFF + * + * \param x The address to check. + */ +#define IS_BITBAND_SRAM_ADDR(x) \ + ( ((uint32_t)(x)) >= 0x20000000 && \ + ((uint32_t)(x)) < (0x20000000+0x100000) ) + +/** + * \brief Check if the address is in bit banding peripheral region + * + * \note The address should be in area of 0x4000000 ~ 0x400FFFFF + * \param x The address to check + */ +#define IS_BITBAND_PERIPH_ADDR(x) \ + ( ((uint32_t)(x)) >= 0x40000000 && \ + ((uint32_t)(x)) < (0x40000000+0x100000) ) + +/** + * \brief Calculate bit band alias address. + * + * Calculate the bit band alias address and return a pointer address to word. + * + * \param addr The byte address of bitbanding bit. + * \param bit The bit position of bitbanding bit. + * \callergraph + */ +#define BITBAND_ALIAS_ADDRESS(addr, bit) \ + ((volatile uint32_t*)((((uint32_t)(addr) & 0xF0000000) + 0x02000000) \ + +((((uint32_t)(addr)&0xFFFFF)*32)\ + +( (uint32_t)(bit)*4)))) + +/** + * \brief Bit write through bit banding. + * + * \param addr32 32-bit aligned byte address where the bit exists. + * \param bit Bit position. + * \param val The value that the bit is set to. + * \callergraph + */ +#define WRITE_BITBANDING(addr32, bit, val) do {\ + *BITBAND_ALIAS_ADDRESS(addr32,bit) = (val); \ + } while (0); + +/** + * \brief Toggle bit through bit banding + * + * \param addr32 32-bit aligned byte address where the bit exists. + * \param bit Bit position. + */ +#define TOGGLE_BITBANDING(addr32, bit) do {\ + volatile uint32_t * p = \ + BITBAND_ALIAS_ADDRESS(addr32,bit); \ + if (*p) *p = 0; \ + else *p = 1; \ + }while(0); + +#endif /* #ifndef _BITBANDING_ */ diff --git a/hardware/tools/libboard_sam3s-ek/include/board_lowlevel.h b/hardware/tools/libboard_sam3s-ek/include/board_lowlevel.h new file mode 100644 index 000000000..cc6cdbe40 --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/include/board_lowlevel.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * Interface for the low-level initialization function. + * + */ + +#ifndef BOARD_LOWLEVEL_H +#define BOARD_LOWLEVEL_H + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ +extern void LowLevelInit( void ) ; + +#endif /* BOARD_LOWLEVEL_H */ + diff --git a/hardware/tools/libboard_sam3s-ek/include/syscalls.h b/hardware/tools/libboard_sam3s-ek/include/syscalls.h new file mode 100644 index 000000000..a4e38656c --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/include/syscalls.h @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +/** + * \file syscalls.h + * + * Implementation of newlib syscall. + * + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + + +#include +#include +#include +#include + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +extern caddr_t _sbrk ( int incr ) ; + +extern int link( char *old, char *new ) ; + +extern int _close( int file ) ; + +extern int _fstat( int file, struct stat *st ) ; + +extern int _isatty( int file ) ; + +extern int _lseek( int file, int ptr, int dir ) ; + +extern int _read(int file, char *ptr, int len) ; + +extern int _write( int file, char *ptr, int len ) ; diff --git a/hardware/tools/libboard_sam3s-ek/include/timetick.h b/hardware/tools/libboard_sam3s-ek/include/timetick.h new file mode 100644 index 000000000..098ad32a3 --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/include/timetick.h @@ -0,0 +1,78 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * \par Purpose + * + * Methods and definitions for Global time tick and wait functions. + * + * Defines a common and simpliest use of Time Tick, to increase tickCount + * every 1ms, the application can get this value through GetTickCount(). + * + * \par Usage + * + * -# Configure the System Tick with TimeTick_Configure() when MCK changed + * \note + * Must be done before any invoke of GetTickCount(), Wait() or Sleep(). + * -# Uses GetTickCount to get current tick value. + * -# Uses Wait to wait several ms. + * -# Uses Sleep to enter wait for interrupt mode to wait several ms. + * + */ + +#ifndef _TIMETICK_ +#define _TIMETICK_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include + +/*---------------------------------------------------------------------------- + * Definitions + *----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- + * Global functions + *----------------------------------------------------------------------------*/ + +extern uint32_t TimeTick_Configure( uint32_t dwNew_MCK ) ; + +extern void TimeTick_Increment( void ) ; + +extern uint32_t GetTickCount( void ) ; + +extern void Wait( volatile uint32_t dwMs ) ; + +extern void Sleep( volatile uint32_t dwMs ) ; + +#endif /* _TIMETICK_ */ diff --git a/hardware/tools/libboard_sam3s-ek/lib/libboard_sam3s_ek_gcc_dbg.a b/hardware/tools/libboard_sam3s-ek/lib/libboard_sam3s_ek_gcc_dbg.a new file mode 100644 index 0000000000000000000000000000000000000000..80aee47ab79b4ba1c7ef8df166bc71b999b24dfb GIT binary patch literal 43824 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 literal 0 HcmV?d00001 diff --git a/hardware/tools/libboard_sam3s-ek/lib/libboard_sam3s_ek_gcc_rel.a.txt b/hardware/tools/libboard_sam3s-ek/lib/libboard_sam3s_ek_gcc_rel.a.txt new file mode 100644 index 000000000..e540c9d5d --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/lib/libboard_sam3s_ek_gcc_rel.a.txt @@ -0,0 +1,83 @@ + +board_cstartup_gnu.o: +00000000 W ACC_IrqHandler +00000000 W ADC_IrqHandler +00000000 W BusFault_Handler +00000000 W CRCCU_IrqHandler +00000000 W DAC_IrqHandler +00000000 W DebugMon_Handler +00000000 T Dummy_Handler +00000000 W EEFC_IrqHandler +00000000 W HardFault_Handler + U LowLevelInit +00000000 W MCI_IrqHandler +00000000 W MemManage_Handler +00000000 W NMI_Handler +00000000 W PIOA_IrqHandler +00000000 W PIOB_IrqHandler +00000000 W PIOC_IrqHandler +00000000 W PMC_IrqHandler +00000000 W PWM_IrqHandler +00000000 W PendSV_Handler +00000000 W RSTC_IrqHandler +00000000 W RTC_IrqHandler +00000000 W RTT_IrqHandler +00000000 T Reset_Handler +00000000 W SMC_IrqHandler +00000000 W SPI_IrqHandler +00000000 W SSC_IrqHandler +00000000 W SUPC_IrqHandler +00000000 W SVC_Handler +00000000 W SysTick_Handler +00000000 W TC0_IrqHandler +00000000 W TC1_IrqHandler +00000000 W TC2_IrqHandler +00000000 W TC3_IrqHandler +00000000 W TC4_IrqHandler +00000000 W TC5_IrqHandler +00000000 W TWI0_IrqHandler +00000000 W TWI1_IrqHandler +00000000 W UART0_IrqHandler +00000000 W UART1_IrqHandler +00000000 W USART0_IrqHandler +00000000 W USART1_IrqHandler +00000000 W USBD_IrqHandler +00000000 W UsageFault_Handler +00000000 W WDT_IrqHandler + U __libc_init_array + U _erelocate + U _etext + U _ezero + U _sfixed + U _srelocate + U _szero + U main +00000000 D pdwStack +00000000 D vector_table + +board_lowlevel.o: +00000000 W LowLevelInit + +syscalls.o: +00000000 T _close + U _end +00000000 T _exit +00000000 T _fstat +00000000 T _getpid +00000000 T _isatty +00000000 T _kill +00000000 T _lseek +00000000 T _read +00000000 T _sbrk +00000000 T _write +00000000 b heap.6728 + U iprintf +00000000 T link + +timetick.o: +00000000 T GetTickCount +00000000 T Sleep +00000000 T TimeTick_Configure +00000000 T TimeTick_Increment +00000000 T Wait +00000000 b _dwTickCount diff --git a/hardware/tools/libboard_sam3s-ek/pins.txt b/hardware/tools/libboard_sam3s-ek/pins.txt new file mode 100644 index 000000000..e69de29bb diff --git a/hardware/tools/libboard_sam3s-ek/source/board_cstartup_gnu.c b/hardware/tools/libboard_sam3s-ek/source/board_cstartup_gnu.c new file mode 100644 index 000000000..702aa7b62 --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/source/board_cstartup_gnu.c @@ -0,0 +1,227 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2010, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "board.h" + +/*---------------------------------------------------------------------------- + * Exported variables + *----------------------------------------------------------------------------*/ + +/* Stack Configuration */ +#define STACK_SIZE 0x900 /** Stack size (in DWords) */ +__attribute__ ((aligned(8),section(".stack"))) +uint32_t pdwStack[STACK_SIZE] ; + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; + + +/*---------------------------------------------------------------------------- + * Prototypes + *----------------------------------------------------------------------------*/ + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +extern int main( void ) ; +/** \endcond */ +void Reset_Handler( void ) ; +extern void __libc_init_array( void ) ; + +/* Default empty handler */ +void Dummy_Handler( void ) ; + +/* Cortex-M3 core handlers */ +extern void NMI_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void HardFault_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void MemManage_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void BusFault_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void UsageFault_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void SVC_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void DebugMon_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void PendSV_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void SysTick_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; + +/* Peripherals handlers */ +extern void ACC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void ADC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void CRCCU_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void DAC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void EEFC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void MCI_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void PIOA_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void PIOB_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void PIOC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void PMC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void PWM_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void RSTC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void RTC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void RTT_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void SMC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void SPI_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void SSC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void SUPC_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void TC0_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void TC1_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void TC2_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void TC3_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void TC4_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void TC5_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void TWI0_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void TWI1_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void UART0_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void UART1_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void USART0_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void USART1_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void USBD_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +extern void WDT_IrqHandler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; + +/*------------------------------------------------------------------------------ + * Exception Table + *------------------------------------------------------------------------------*/ + +void* vector_table[] __attribute__ ((section(".vectors"))) = { + /* Configure Initial Stack Pointer, using linker-generated symbols */ + (IntFunc)(&pdwStack[STACK_SIZE-1]), + Reset_Handler, + + NMI_Handler, + HardFault_Handler, + MemManage_Handler, + BusFault_Handler, + UsageFault_Handler, + 0, 0, 0, 0, /* Reserved */ + SVC_Handler, + DebugMon_Handler, + 0, /* Reserved */ + PendSV_Handler, + SysTick_Handler, + + /* Configurable interrupts */ + SUPC_IrqHandler, /* 0 Supply Controller */ + RSTC_IrqHandler, /* 1 Reset Controller */ + RTC_IrqHandler, /* 2 Real Time Clock */ + RTT_IrqHandler, /* 3 Real Time Timer */ + WDT_IrqHandler, /* 4 Watchdog Timer */ + PMC_IrqHandler, /* 5 PMC */ + EEFC_IrqHandler, /* 6 EEFC */ + Dummy_Handler, /* 7 Reserved */ + UART0_IrqHandler, /* 8 UART0 */ + UART1_IrqHandler, /* 9 UART1 */ + SMC_IrqHandler, /* 10 SMC */ + PIOA_IrqHandler, /* 11 Parallel IO Controller A */ + PIOB_IrqHandler, /* 12 Parallel IO Controller B */ + PIOC_IrqHandler, /* 13 Parallel IO Controller C */ + USART0_IrqHandler, /* 14 USART 0 */ + USART1_IrqHandler, /* 15 USART 1 */ + Dummy_Handler, /* 16 Reserved */ + Dummy_Handler, /* 17 Reserved */ + MCI_IrqHandler, /* 18 MCI */ + TWI0_IrqHandler, /* 19 TWI 0 */ + TWI1_IrqHandler, /* 20 TWI 1 */ + SPI_IrqHandler, /* 21 SPI */ + SSC_IrqHandler, /* 22 SSC */ + TC0_IrqHandler, /* 23 Timer Counter 0 */ + TC1_IrqHandler, /* 24 Timer Counter 1 */ + TC2_IrqHandler, /* 25 Timer Counter 2 */ + TC3_IrqHandler, /* 26 Timer Counter 3 */ + TC4_IrqHandler, /* 27 Timer Counter 4 */ + TC5_IrqHandler, /* 28 Timer Counter 5 */ + ADC_IrqHandler, /* 29 ADC controller */ + DAC_IrqHandler, /* 30 DAC controller */ + PWM_IrqHandler, /* 31 PWM */ + CRCCU_IrqHandler, /* 32 CRC Calculation Unit */ + ACC_IrqHandler, /* 33 Analog Comparator */ + USBD_IrqHandler, /* 34 USB Device Port */ + Dummy_Handler /* 35 not used */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler( void ) +{ + uint32_t *pSrc, *pDest ; + + /* Low level Initialize */ + LowLevelInit() ; + + /* Initialize the relocate segment */ + pSrc = &_etext ; + pDest = &_srelocate ; + + if ( pSrc != pDest ) + { + for ( ; pDest < &_erelocate ; ) + { + *pDest++ = *pSrc++ ; + } + } + + /* Clear the zero segment */ + for ( pDest = &_szero ; pDest < &_ezero ; ) + { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *)&_sfixed; + SCB->VTOR = ( (uint32_t)pSrc & SCB_VTOR_TBLOFF_Msk ) ; + + if ( ((uint32_t)pSrc >= IRAM_ADDR) && ((uint32_t)pSrc < IRAM_ADDR+IRAM_SIZE) ) + { + SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos ; + } + + /* Initialize the C library */ + __libc_init_array() ; + + /* Branch to main function */ + main() ; + + /* Infinite loop */ + while ( 1 ) ; +} + +/** + * \brief Default interrupt handler for not used irq. + */ +void Dummy_Handler( void ) +{ + while ( 1 ) ; +} diff --git a/hardware/tools/libboard_sam3s-ek/source/board_lowlevel.c b/hardware/tools/libboard_sam3s-ek/source/board_lowlevel.c new file mode 100644 index 000000000..e5e15e5f4 --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/source/board_lowlevel.c @@ -0,0 +1,111 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * Provides the low-level initialization function that called on chip startup. + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "board.h" + +/*---------------------------------------------------------------------------- + * Local definitions + *----------------------------------------------------------------------------*/ + +/* Clock settings at 48MHz */ +#if (BOARD_MCK == 48000000) +#define BOARD_OSCOUNT (CKGR_MOR_MOSCXTST(0x8)) +#define BOARD_PLLAR (CKGR_PLLAR_STUCKTO1 \ + | CKGR_PLLAR_MULA(0x7) \ + | CKGR_PLLAR_PLLACOUNT(0x1) \ + | CKGR_PLLAR_DIVA(0x1)) +#define BOARD_MCKR (PMC_MCKR_PRES_CLK_2 | PMC_MCKR_CSS_PLLA_CLK) + +/* Clock settings at 64MHz */ +#elif (BOARD_MCK == 64000000) +#define BOARD_OSCOUNT (CKGR_MOR_MOSCXTST(0x8)) +#define BOARD_PLLAR (CKGR_PLLAR_STUCKTO1 \ + | CKGR_PLLAR_MULA(0x0f) \ + | CKGR_PLLAR_PLLACOUNT(0x1) \ + | CKGR_PLLAR_DIVA(0x3)) +#define BOARD_MCKR (PMC_MCKR_PRES_CLK | PMC_MCKR_CSS_PLLA_CLK) + +#else + #error "No settings for current BOARD_MCK." +#endif + +/* Define clock timeout */ +#define CLOCK_TIMEOUT 0xFFFFFFFF + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Performs the low-level initialization of the chip. + * This includes EFC and master clock configuration. + * It also enable a low level on the pin NRST triggers a user reset. + */ +extern WEAK void LowLevelInit( void ) +{ + uint32_t dwTimeOut = 0 ; + + /* Set 3 FWS for Embedded Flash Access @ 64MHz, we are now at 4MHz on Internal FastRC */ + EFC->EEFC_FMR = EEFC_FMR_FWS( 3 ) ; + + /* Initialize main oscillator */ + if ( !(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) ) + { + PMC->CKGR_MOR = CKGR_MOR_KEY(0x37) | BOARD_OSCOUNT | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN; + for ( dwTimeOut = 0 ; !(PMC->PMC_SR & PMC_SR_MOSCXTS) && (dwTimeOut++ < CLOCK_TIMEOUT) ; ) ; + } + + /* Switch to 3-20MHz Xtal oscillator */ + PMC->CKGR_MOR = CKGR_MOR_KEY(0x37) | BOARD_OSCOUNT | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCSEL; + for ( dwTimeOut = 0 ; !(PMC->PMC_SR & PMC_SR_MOSCSELS) && (dwTimeOut++ < CLOCK_TIMEOUT) ; ) ; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK; + for ( dwTimeOut = 0 ; !(PMC->PMC_SR & PMC_SR_MCKRDY) && (dwTimeOut++ < CLOCK_TIMEOUT) ; ) ; + + /* Initialize PLLA */ + PMC->CKGR_PLLAR = BOARD_PLLAR ; + for ( dwTimeOut = 0 ; !(PMC->PMC_SR & PMC_SR_LOCKA) && (dwTimeOut++ < CLOCK_TIMEOUT) ; ) ; + + /* Switch to main clock */ + PMC->PMC_MCKR = (BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK; + for ( dwTimeOut = 0 ; !(PMC->PMC_SR & PMC_SR_MCKRDY) && (dwTimeOut++ < CLOCK_TIMEOUT) ; ) ; + + PMC->PMC_MCKR = BOARD_MCKR ; + for ( dwTimeOut = 0 ; !(PMC->PMC_SR & PMC_SR_MCKRDY) && (dwTimeOut++ < CLOCK_TIMEOUT) ; ) ; +} diff --git a/hardware/tools/libboard_sam3s-ek/source/syscalls.c b/hardware/tools/libboard_sam3s-ek/source/syscalls.c new file mode 100644 index 000000000..c6a9f22c9 --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/source/syscalls.c @@ -0,0 +1,141 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +/** + * \file syscalls.c + * + * Implementation of newlib syscall. + * + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + + +#include "board.h" + +#include +#include +#include +#include + +/*---------------------------------------------------------------------------- + * Exported variables + *----------------------------------------------------------------------------*/ + +#undef errno +extern int errno ; +extern int _end ; + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ +extern void _exit( int status ) ; +extern void _kill( int pid, int sig ) ; +extern int _getpid ( void ) ; + +extern caddr_t _sbrk ( int incr ) +{ + static unsigned char *heap = NULL ; + unsigned char *prev_heap ; + + if ( heap == NULL ) + { + heap = (unsigned char *)&_end ; + } + prev_heap = heap; + + heap += incr ; + + return (caddr_t) prev_heap ; +} + +extern int link( char *old, char *new ) +{ + return -1 ; +} + +extern int _close( int file ) +{ + return -1 ; +} + +extern int _fstat( int file, struct stat *st ) +{ + st->st_mode = S_IFCHR ; + + return 0 ; +} + +extern int _isatty( int file ) +{ + return 1 ; +} + +extern int _lseek( int file, int ptr, int dir ) +{ + return 0 ; +} + +extern int _read(int file, char *ptr, int len) +{ + return 0 ; +} + +extern int _write( int file, char *ptr, int len ) +{ + int iIndex ; + + +// for ( ; *ptr != 0 ; ptr++ ) + for ( iIndex=0 ; iIndex < len ; iIndex++, ptr++ ) + { +// UART_PutChar( *ptr ) ; + } + + return iIndex ; +} + +extern void _exit( int status ) +{ + printf( "Exiting with status %d.\n", status ) ; + + for ( ; ; ) ; +} + +extern void _kill( int pid, int sig ) +{ + return ; +} + +extern int _getpid ( void ) +{ + return -1 ; +} diff --git a/hardware/tools/libboard_sam3s-ek/source/timetick.c b/hardware/tools/libboard_sam3s-ek/source/timetick.c new file mode 100644 index 000000000..013292abe --- /dev/null +++ b/hardware/tools/libboard_sam3s-ek/source/timetick.c @@ -0,0 +1,118 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * Implement simple system tick usage. + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "board.h" + +/*---------------------------------------------------------------------------- + * Local variables + *----------------------------------------------------------------------------*/ + +/** Tick Counter united by ms */ +static volatile uint32_t _dwTickCount=0 ; + +/*---------------------------------------------------------------------------- + * Exported Functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Handler for Sytem Tick interrupt. + */ +extern void TimeTick_Increment( void ) +{ + _dwTickCount++ ; +} + +/** + * \brief Configures the SAM3 SysTick & reset tickCount. + * Systick interrupt handler will generates 1ms interrupt and increase a + * tickCount. + * \param dwNew_MCK Current master clock. + */ +extern uint32_t TimeTick_Configure( uint32_t dwNew_MCK ) +{ + _dwTickCount = 0 ; + + return SysTick_Config( dwNew_MCK/1000 ) ; +} + +/** + * \brief Get current Tick Count, in ms. + */ +extern uint32_t GetTickCount( void ) +{ + return _dwTickCount ; +} + +/** + * \brief Sync Wait for several ms + */ +extern void Wait( volatile uint32_t dwMs ) +{ + uint32_t dwStart ; + uint32_t dwCurrent ; + + dwStart = _dwTickCount ; + do + { + dwCurrent = _dwTickCount ; + } while ( dwCurrent - dwStart < dwMs ) ; +} + +/** + * \brief Sync Sleep for several ms + */ +extern void Sleep( volatile uint32_t dwMs ) +{ + uint32_t dwStart ; + uint32_t dwCurrent ; + + dwStart = _dwTickCount ; + + do + { + dwCurrent = _dwTickCount ; + + if ( dwCurrent - dwStart > dwMs ) + { + break ; + } + + __WFI() ; + } while( 1 ) ; +} +