From a518425419eb3d17b7ec15d0230ccb4748805998 Mon Sep 17 00:00:00 2001 From: Bingzheng Feng <b26feng@uwaterloo.ca> Date: Sat, 5 May 2018 20:54:20 -0400 Subject: [PATCH] Need to correctly set/read the timer register --- include/error.h | 1 + include/mycanvas.h | 6 +++ include/mycanvas.h~ | 6 +++ include/myclock.h | 10 ++++ include/myclock.h~ | 11 ++++ lib/libbwio.a | Bin 0 -> 5592 bytes lib/libmycanvas.a | Bin 0 -> 1550 bytes lib/libmyclock.a | Bin 0 -> 1540 bytes src/Makefile | 18 +++---- src/first.map | 117 ++++++++++++++++++++++++++++++++++++++++++ src/libsrc/Makefile | 32 +++++++++--- src/libsrc/mycanvas.c | 14 +++++ src/libsrc/myclock.c | 29 +++++++++++ src/startup.c | 30 +++++++++++ src/upload | 3 ++ 15 files changed, 262 insertions(+), 15 deletions(-) create mode 100644 include/error.h create mode 100644 include/mycanvas.h create mode 100644 include/mycanvas.h~ create mode 100644 include/myclock.h create mode 100644 include/myclock.h~ create mode 100644 lib/libbwio.a create mode 100644 lib/libmycanvas.a create mode 100644 lib/libmyclock.a create mode 100644 src/first.map create mode 100644 src/libsrc/mycanvas.c create mode 100644 src/libsrc/myclock.c create mode 100644 src/startup.c create mode 100755 src/upload diff --git a/include/error.h b/include/error.h new file mode 100644 index 0000000..d8719f0 --- /dev/null +++ b/include/error.h @@ -0,0 +1 @@ +#define ERR_INIT_IO 0xDEAD0000 diff --git a/include/mycanvas.h b/include/mycanvas.h new file mode 100644 index 0000000..3fd60cf --- /dev/null +++ b/include/mycanvas.h @@ -0,0 +1,6 @@ +#ifndef __CANVAS_H__ +#define __CANVAS_H__ + +void DrawClock(int* ClockCount); + +#endif diff --git a/include/mycanvas.h~ b/include/mycanvas.h~ new file mode 100644 index 0000000..956253e --- /dev/null +++ b/include/mycanvas.h~ @@ -0,0 +1,6 @@ +#ifndef __CANVAS_H__ +#define __CANVAS_H__ + +void DrawClock(); + +#endif diff --git a/include/myclock.h b/include/myclock.h new file mode 100644 index 0000000..ce312c3 --- /dev/null +++ b/include/myclock.h @@ -0,0 +1,10 @@ +#ifndef __MY_CLOCK_H__ +#define __MY_CLOCK_H__ + +#define CLOCK_LOAD_VALUE 50800 + +// initialize the global time to 0 +void InitClockCount(int *ClockCount, int* LastTimerValue); +// update the time count from start of the program +void UpdateClock(int* ClockCount, int* LastTimerValue); +#endif diff --git a/include/myclock.h~ b/include/myclock.h~ new file mode 100644 index 0000000..81ba61e --- /dev/null +++ b/include/myclock.h~ @@ -0,0 +1,11 @@ +#ifndef __MY_CLOCK_H__ +#define __MY_CLOCK_H__ + +#define CLOCK_LOAD_VALUE 50800 + +volatile static unsigned int ClockCount; +// initialize the global time to 0 +void InitClockCount(int *ClockCount, int* LastTimerValue); +// update the time count from start of the program +void UpdateClock(int* ClockCount, int* LastTimerValue); +#endif diff --git a/lib/libbwio.a b/lib/libbwio.a new file mode 100644 index 0000000000000000000000000000000000000000..f0b7e8795a5224c162a70a76c357db8aaa79d034 GIT binary patch literal 5592 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 literal 0 HcmV?d00001 diff --git a/lib/libmycanvas.a b/lib/libmycanvas.a new file mode 100644 index 0000000000000000000000000000000000000000..ec1d78d3816baec0a50398511b01153e4f879a1f GIT binary patch literal 1550 zcma)6%}*0S6o1=oMT=-9#MHEjLt0FYx=!0|K|(Z8`ADpApc-yv>4z9;OWIZBWVD`4 zj1ta<HC{Y;@St~%S4=p1@UV+)qVeQEAilTVfh8XFr8~d(`Fn46X4^laHA{<^gBRIB zNoG=+Om=W^Fv}QsLf)0J<dDdp4+4OM&&{h%Z6&wVDBXeDYDuf#(^^WS!|P>BWz}?= zWwOaMvT&YNRYaBJN-`gOFrJ@~BuPU?M<hr%^ujLqI-2T00)o&5Js%7UzFzp@f1BTq zZe8CVdAVT+jb|o<ZkzFl4Q$<(!1$I(ZrCz^V#*=I`n|jR(}{)F?LPFc#Xgz2e#82B z#jt#=WF}a*oxoZ-X;=vsv3<O4wz*+RA&iAOu_*6$c)##{-YDkoar1RsW`-3-9v{}d z!@RXv+l-|RD~`2s;>DhE>cbwHzLa6fe8FsEPwErLK98{`9*Q`1uh1WMdoFu=hP^#; zKY6DQ?kDE%hnLJgtfM)AKXqnSJ@tK9AI2EX9oo9K4R2n2AEGlwxmB%J3Ew}Qj(pzS z+$5c3@3hY|=g@PFyLFunl!HA7VueawUv%Bxn%PRJQ7^lJf%35Pqgt5E<%U^ea{9(u zrYc-X0Vu82nyxJ%>dg)=3awdLQuNAw9h9=BYoIK&TA(x=9i!B!)v&!Y?td+(F^jf+ z$jzoZrn~QfTz=OdK|JE>1Zn_a3h^*Llumi154g6BNb=glMYb@{p-%b#%HwX0`w2LF zbLbNy<{LtX;C5nI&?}NWu@k6^o)qrIyirnI5gde~Cxv#X2%Yo}=*XyV2p_V&d^;GJ zL7x!8Cv1UUzaM_>3O}KIa3^ScJ5XHgx>F@X0FHVI(58Jx_k003iF)V%gPZ}N^URa# zNC23t5%{ow46)!2Dg8CiAvoja(_QJsIGvLadM}rRfk^iLA7lxXe2&wSq$Nd58sZwn z%llsoEUYXyZ`buI6esgDW25=v%*4d(c%fJr9m|gwJ9~*719*<qgnpcZaLPrR{nT-Q WIm9qt?s>v4fF(k_c*}%%cz*yHyAxIb literal 0 HcmV?d00001 diff --git a/lib/libmyclock.a b/lib/libmyclock.a new file mode 100644 index 0000000000000000000000000000000000000000..2edf7b1e64c442c5825dae9e8b2187218b0e836a GIT binary patch literal 1540 zcma)6%}*0i5T9j>AFXIbVrppOGbsrwuCL#Q5Cb$6i7O;pj0cmlv^5Z0O4=pDNkmUx zB;l%I4<0@E2YBG*!Fb^4!2>PX#E+AABhKu;hYw?dlf0ez&G+n^-3vojqcnFtc$FQb zcsh|zXR_IBhB5A$)F)#pAEIR@2ml>;s&pn6=IvayUV50TFD=+Gy;!#Fil+dmt(3@O z)I~A1Mk13+CRsWYPcjzgJd;WxPi7N-S2MxKV`g5{Gz)8Zq(MJu5+EO-4v<pbvmb(R z6uP#Y7JR<)HSpGKhqrIFmz_;F=)Bm8Lda#|kQ-&aE^ucT_?pX5zRx!iuetY-M|j9B zAn!pQLEEsf^`N{eVxk=5*@nxAZ*905IJ+_Q)A{oqJ?ykjaHsWaZ|{3}`(_*7y!v8e zZ;S5%R^iF2gNIr@tjDV8B|<g$hS!f*59@mMMco_!s4M+?Fjj}#tvtX7iV5(i?I_Mg zGn0*GR(o6*z3t!S0Q+;Ltgk%4Osi=Z=4+M4U8}lO8AM&M3)IV2U8<JvqGlQNBk%=` z=W>Ire|&QKB1;+ENB|hkm6~nMBDWhppOaFfQZ?+#vJD2Vl?BFZvk69{?t@ajR;%F7 z{WqOQPuig)B7$~jSXruo(Dx!gE@Wb{PJnC3kKrMA@*}xVU>!M;t>hvs;boM`|1du; zV#I2D`O2u1B>SUYWNxy3LeMRp6x(T(Wlb`FL%$Ic1j!u4Wlb`@!=NxK=^fxTd-H~o z6ISzm#D=C(CrRd$SaMY#fFFBOPh3AR31PJYVL7!Qr9&r#)C7pBH%T3s?+k)<q0kVY zMVa2MPrm<afuw&*G)ev{>9{Sl4@4BxjrL0(@*h+?`4^r*OujGikpKRVumpyg;}EkT zRwgkH`=6Zu`<#8W*qC3iA3$;3oEjZ5i&Odhov}i(FfwY671a-pN<PEWd(xlv+$jJD YaRit9r_j?KYIw0U8`+1DNAMDV1Hl#zHUIzs literal 0 HcmV?d00001 diff --git a/src/Makefile b/src/Makefile index bc6e65b..f20846a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -19,17 +19,17 @@ ARFLAGS = rcs LDFLAGS = -init main -Map first.map -N -T orex.ld -L/u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2 -L../lib -all: first.elf +all: startup.elf #first.elf -first.s: first.c - $(XCC) -S $(CFLAGS) first.c +startup.s: startup.c + $(XCC) -S $(CFLAGS) startup.c -first.o: first.s - $(AS) $(ASFLAGS) -o first.o first.s +startup.o: startup.s + $(AS) $(ASFLAGS) -o startup.o startup.s -first.elf: first.o - $(LD) $(LDFLAGS) -o $@ first.o -lbwio -lgcc +startup.elf: startup.o + $(LD) $(LDFLAGS) -o $@ startup.o -lmycanvas -lmyclock -lbwio -lgcc clean: - -rm -f first.elf *.s *.o first.map *.a ../lib/*.a - + -rm -f first.elf *.s *.o startup.map *.a *~ + diff --git a/src/first.map b/src/first.map new file mode 100644 index 0000000..3ea6cb0 --- /dev/null +++ b/src/first.map @@ -0,0 +1,117 @@ +Archive member included because of file (symbol) + +../lib/libmycanvas.a(mycanvas.o) + startup.o (DrawClock) +../lib/libmyclock.a(myclock.o) + startup.o (InitClockCount) +../lib/libbwio.a(bwio.o) startup.o (bwsetfifo) +/u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o) + ../lib/libbwio.a(bwio.o) (__udivsi3) +/u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o) + ../lib/libbwio.a(bwio.o) (__umodsi3) +/u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o) + /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o) (__div0) + +Memory Configuration + +Name Origin Length Attributes +ram 0x0000000000000000 0x0000000002000000 +rom 0x0000000060000000 0x0000000000800000 +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +data 0x0000000000000000 0x0 + 0x0000000000000000 _DataStart = . + *(.data) + 0x0000000000000000 _DataEnd = . + +bss 0x0000000000000000 0x0 + 0x0000000000000000 _BssStart = . + *(.bss) + 0x0000000000000000 _BssEnd = . + +text 0x0000000000000000 0x133c + *(.text) + .text 0x0000000000000000 0x17c startup.o + 0x000000000000010c main + 0x0000000000000000 initialize + 0x00000000000000b0 runloop + .text 0x000000000000017c 0x174 ../lib/libmycanvas.a(mycanvas.o) + 0x000000000000017c DrawClock + .text 0x00000000000002f0 0x140 ../lib/libmyclock.a(myclock.o) + 0x00000000000002f0 InitClockCount + 0x0000000000000394 UpdateClock + .text 0x0000000000000430 0xc54 ../lib/libbwio.a(bwio.o) + 0x00000000000007a8 bwputr + 0x0000000000000d14 bwi2a + 0x0000000000000430 bwsetfifo + 0x0000000000000604 bwputc + 0x0000000000000a64 bwa2d + 0x00000000000004f8 bwsetspeed + 0x00000000000006c8 c2x + 0x0000000000000b0c bwa2i + 0x00000000000009ac bwgetc + 0x0000000000000bd0 bwui2a + 0x0000000000000d78 bwformat + 0x00000000000008a4 bwputw + 0x000000000000104c bwprintf + 0x0000000000000728 bwputx + 0x0000000000000828 bwputstr + .text 0x0000000000001084 0x110 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o) + 0x0000000000001084 __udivsi3 + 0x000000000000117c __aeabi_uidivmod + .text 0x0000000000001194 0xcc /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o) + 0x0000000000001194 __umodsi3 + .text 0x0000000000001260 0x4 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o) + 0x0000000000001260 __aeabi_ldiv0 + 0x0000000000001260 __div0 + 0x0000000000001260 __aeabi_idiv0 + *(.got) + *(.got.plt) + .got.plt 0x0000000000001264 0xc startup.o + 0x0000000000001264 _GLOBAL_OFFSET_TABLE_ + *(.rodata) + .rodata 0x0000000000001270 0x10 startup.o + .rodata 0x0000000000001280 0x58 ../lib/libmycanvas.a(mycanvas.o) + .rodata 0x00000000000012d8 0x64 ../lib/libmyclock.a(myclock.o) + *(.glue_7) + *(.glue_7t) + +.rel.dyn +LOAD startup.o +LOAD ../lib/libmycanvas.a +LOAD ../lib/libmyclock.a +LOAD ../lib/libbwio.a +LOAD /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a +OUTPUT(startup.elf elf32-littlearm) + +.comment 0x0000000000000000 0x48 + .comment 0x0000000000000000 0x12 startup.o + .comment 0x0000000000000012 0x12 ../lib/libmycanvas.a(mycanvas.o) + .comment 0x0000000000000024 0x12 ../lib/libmyclock.a(myclock.o) + .comment 0x0000000000000036 0x12 ../lib/libbwio.a(bwio.o) + +.debug_line 0x0000000000000000 0x14f + .debug_line 0x0000000000000000 0x86 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o) + .debug_line 0x0000000000000086 0x6f /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o) + .debug_line 0x00000000000000f5 0x5a /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o) + +.debug_info 0x0000000000000000 0x153 + .debug_info 0x0000000000000000 0x71 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o) + .debug_info 0x0000000000000071 0x71 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o) + .debug_info 0x00000000000000e2 0x71 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o) + +.debug_abbrev 0x0000000000000000 0x3c + .debug_abbrev 0x0000000000000000 0x14 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o) + .debug_abbrev 0x0000000000000014 0x14 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o) + .debug_abbrev 0x0000000000000028 0x14 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o) + +.debug_aranges 0x0000000000000000 0x60 + .debug_aranges + 0x0000000000000000 0x20 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o) + .debug_aranges + 0x0000000000000020 0x20 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o) + .debug_aranges + 0x0000000000000040 0x20 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o) diff --git a/src/libsrc/Makefile b/src/libsrc/Makefile index d371038..a932d94 100644 --- a/src/libsrc/Makefile +++ b/src/libsrc/Makefile @@ -16,20 +16,40 @@ ASFLAGS = -mcpu=arm920t -mapcs-32 ARFLAGS = rcs -all: bwio.a - +all: bwio.a + bwio.s: bwio.c $(XCC) -S $(CFLAGS) bwio.c +mycanvas.s: mycanvas.c + $(XCC) -S $(CFLAGS) mycanvas.c + +myclock.s: myclock.c + $(XCC) -S $(CFLAGS) myclock.c + + bwio.o: bwio.s $(AS) $(ASFLAGS) -o bwio.o bwio.s +mycanvas.o: mycanvas.s + $(AS) $(ASFLAGS) -o mycanvas.o mycanvas.s + +myclock.o: myclock.s + $(AS) $(ASFLAGS) -o myclock.o myclock.s + bwio.a: bwio.o $(AR) $(ARFLAGS) $@ bwio.o -install: bwio.a - mv bwio.a ../../lib/libbwio.a +mycanvas.a: mycanvas.o + $(AR) $(ARFLAGS) $@ mycanvas.o + +myclock.a: myclock.o + $(AR) $(ARFLAGS) $@ myclock.o + +install: bwio.a mycanvas.a myclock.a + mv bwio.a ../../lib/libbwio.a + mv mycanvas.a ../../lib/libmycanvas.a + mv myclock.a ../../lib/libmyclock.a clean: - -rm -f *.s *.o *.a - + -rm -f *.s *.o *.a *~ ../../lib/*.a diff --git a/src/libsrc/mycanvas.c b/src/libsrc/mycanvas.c new file mode 100644 index 0000000..1f92bd4 --- /dev/null +++ b/src/libsrc/mycanvas.c @@ -0,0 +1,14 @@ +#include <bwio.h> +#include <mycanvas.h> +#include <myclock.h> + +void DrawClock(int* ClockCount) +{ + bwprintf(COM2,"DrawClock, ClockCount %d\n\r", *ClockCount); + unsigned int TenthSecond = (*ClockCount) % 10; + bwprintf(COM2,"DrawClock, Tenth %d\n\r", TenthSecond); + unsigned int Second = ((*ClockCount - TenthSecond) % 600)/10; + bwprintf(COM2,"DrawClock, Second %d\n\r", Second); + unsigned int Minute = (*ClockCount)/600; + bwprintf(COM2,"%d:%d:%d\n\r",Minute,Second,TenthSecond); +} diff --git a/src/libsrc/myclock.c b/src/libsrc/myclock.c new file mode 100644 index 0000000..b76cdeb --- /dev/null +++ b/src/libsrc/myclock.c @@ -0,0 +1,29 @@ +#include <bwio.h> +#include <myclock.h> +#include <ts7200.h> + + +void InitClockCount(int* ClockCount, int* LastTimerValue) +{ + *ClockCount = 0; + *LastTimerValue = CLOCK_LOAD_VALUE; + int* Clock3LoadRegister = (int *) TIMER3_BASE; + int* Clock3ControlRegister = (int *) TIMER3_BASE + CRTL_OFFSET; + // int ClearMode = MODE_MASK | CLKSEL_MASK; + // clear clock + // *Clock3ControlRegister = ClearMode; + // set interval + *Clock3LoadRegister = CLOCK_LOAD_VALUE; + // enable clock + *Clock3ControlRegister = ENABLE_MASK; + bwprintf(COM2,"InitClock, ClockCount %d, LastTimerValue: %d\n\r",*ClockCount, *LastTimerValue); +} + +void UpdateClock(int* ClockCount, int* LastTimerValue) +{ + int* TimerValueRegister = (int *) TIMER3_BASE + VAL_OFFSET; + int CurrentTimerValue = *TimerValueRegister; + bwprintf(COM2, "UpdateClock, LastTimerVlaue: %d, ClockCount:%d\n\r",*LastTimerValue,*ClockCount); + if(CurrentTimerValue >= *LastTimerValue) ClockCount++; + *LastTimerValue = CurrentTimerValue; +} diff --git a/src/startup.c b/src/startup.c new file mode 100644 index 0000000..aa42206 --- /dev/null +++ b/src/startup.c @@ -0,0 +1,30 @@ +#include <bwio.h> +#include <error.h> +#include <mycanvas.h> +#include <myclock.h> + +int initialize(int* ClockCount, int* LastTimerValue) +{ + if(bwsetfifo(COM2, OFF)) return ERR_INIT_IO; + if(bwsetspeed(COM1, 2400)) return ERR_INIT_IO; + if(bwsetspeed(COM2, 115200)) return ERR_INIT_IO; + InitClockCount(ClockCount, LastTimerValue); + return 0; +} + +int runloop(int* ClockCount, int* LastTimerValue) +{ + while(1){ + UpdateClock(ClockCount, LastTimerValue); + bwprintf(COM2, "ClockCount %d\n\r", *ClockCount); + DrawClock(ClockCount); + } + return 0; +} + +int main(){ + unsigned int ClockCount, LastTimerValue; + unsigned int InitCode = initialize(&ClockCount, &LastTimerValue); + if(InitCode) return InitCode; + return runloop(&ClockCount, &LastTimerValue); +} diff --git a/src/upload b/src/upload new file mode 100755 index 0000000..5ff7c25 --- /dev/null +++ b/src/upload @@ -0,0 +1,3 @@ +#! /bin/bash + +mv $1 /u/cs452/tftp/ARM/b26feng/ -- GitLab