From 38a4e075d521713f4f323393c6402c26ce1f7919 Mon Sep 17 00:00:00 2001 From: Bingzheng Feng <b26feng@uwaterloo.ca> Date: Sun, 6 May 2018 18:39:57 -0400 Subject: [PATCH] clock does not work with q at the same time --- include/bwio.h | 4 ++ include/cmd.h | 6 +++ include/mycanvas.h | 20 +++++++++- include/mycanvas.h~ | 6 --- include/myclock.h | 12 +++++- include/myclock.h~ | 11 ----- src/Makefile | 25 ++++++++++-- src/clocktest.c | 19 +++++++++ src/first.map | 91 +++++++++++++++++------------------------- src/getc.c | 14 +++++++ src/libsrc/Makefile | 15 +++++-- src/libsrc/cmd.c | 15 +++++++ src/libsrc/mycanvas.c | 58 ++++++++++++++++++++++----- src/libsrc/myclock.c | 37 ++++++++--------- src/libsrc/test | Bin 0 -> 8728 bytes src/libsrc/test.c | 52 ++++++++++++++++++++++++ src/startup.c | 21 +++++----- src/upload | 2 +- 18 files changed, 290 insertions(+), 118 deletions(-) create mode 100644 include/cmd.h delete mode 100644 include/mycanvas.h~ delete mode 100644 include/myclock.h~ create mode 100644 src/clocktest.c create mode 100644 src/getc.c create mode 100644 src/libsrc/cmd.c create mode 100755 src/libsrc/test create mode 100644 src/libsrc/test.c diff --git a/include/bwio.h b/include/bwio.h index 8319f86..f435f04 100644 --- a/include/bwio.h +++ b/include/bwio.h @@ -1,5 +1,8 @@ +#ifndef __BWIO_H__ +#define __BWIO_H__ /* * bwio.h + * Copied from Bill Cowan /u/wbcowan/cs452/io/include/bwio.h */ typedef char *va_list; @@ -37,3 +40,4 @@ int bwputr( int channel, unsigned int reg ); void bwputw( int channel, int n, char fc, char *bf ); void bwprintf( int channel, char *format, ... ); +#endif diff --git a/include/cmd.h b/include/cmd.h new file mode 100644 index 0000000..089a981 --- /dev/null +++ b/include/cmd.h @@ -0,0 +1,6 @@ +#ifndef __CMD_H__ +#define __CMD_H__ + +#define CMD_HALT 0 +int ListenCommand(); +#endif diff --git a/include/mycanvas.h b/include/mycanvas.h index 3fd60cf..fd609fc 100644 --- a/include/mycanvas.h +++ b/include/mycanvas.h @@ -1,6 +1,24 @@ #ifndef __CANVAS_H__ #define __CANVAS_H__ +#include <bwio.h> +#include <myclock.h> +/* + * The Cursor Addressing Macro is provided by + * courseweb.stthomas.edu/tpsturm/private/notes/qm300/ANSI.html + */ -void DrawClock(int* ClockCount); +#define ESC_CANVAS 27 +#define CLEAR_SCREEN bwprintf(COM2, "%c[2J", ESC_CANVAS) + +#define MOVE_UP(Num) bwprintf(COM2, "%c[%dA", ESC_CANVAS) +#define MOVE_DOWN(Num) bwprintf(COM2, "%c[%dB", ESC_CANVAS) +#define MOVE_LEFT(Num) bwprintf(COM2, "%c[%dD", ESC_CANVAS,Num) +#define MOVE_RIGHT(Num) bwprintf(COM2, "%c[%dC", ESC_CANVAS,Num) +#define CURSOR_POS(Row, Col) bwprintf(COM2, "%c[%d;%dH",ESC_CANVAS, Row, Col) + +void DrawLine_H(const char Element, const int Length); +void DrawLine_V(const char Element, const int Length); +void DrawPanel(); +void DrawClock(Clock* MyClock); #endif diff --git a/include/mycanvas.h~ b/include/mycanvas.h~ deleted file mode 100644 index 956253e..0000000 --- a/include/mycanvas.h~ +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __CANVAS_H__ -#define __CANVAS_H__ - -void DrawClock(); - -#endif diff --git a/include/myclock.h b/include/myclock.h index ce312c3..35d3a9a 100644 --- a/include/myclock.h +++ b/include/myclock.h @@ -3,8 +3,16 @@ #define CLOCK_LOAD_VALUE 50800 +typedef struct +{ + unsigned int ClockCount; + unsigned int LastTimerValue; + char bChanged; +} Clock; + + // initialize the global time to 0 -void InitClockCount(int *ClockCount, int* LastTimerValue); +void InitClockCount(Clock* MyClock); // update the time count from start of the program -void UpdateClock(int* ClockCount, int* LastTimerValue); +void UpdateClock(Clock* MyClock); #endif diff --git a/include/myclock.h~ b/include/myclock.h~ deleted file mode 100644 index 81ba61e..0000000 --- a/include/myclock.h~ +++ /dev/null @@ -1,11 +0,0 @@ -#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/src/Makefile b/src/Makefile index f20846a..38247bf 100644 --- a/src/Makefile +++ b/src/Makefile @@ -19,7 +19,7 @@ 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: startup.elf #first.elf +all: startup.elf clocktest.elf startup.s: startup.c $(XCC) -S $(CFLAGS) startup.c @@ -28,8 +28,27 @@ startup.o: startup.s $(AS) $(ASFLAGS) -o startup.o startup.s startup.elf: startup.o - $(LD) $(LDFLAGS) -o $@ startup.o -lmycanvas -lmyclock -lbwio -lgcc + $(LD) $(LDFLAGS) -o $@ startup.o -lmycanvas -lmyclock -lcmd -lbwio -lgcc + +clocktest.s: clocktest.c + $(XCC) -S $(CFLAGS) clocktest.c + +clocktest.o: clocktest.s + $(AS) $(ASFLAGS) -o clocktest.o clocktest.s + +clocktest.elf: clocktest.o + $(LD) $(LDFLAGS) -o $@ clocktest.o -lbwio -lgcc + + +getc.s: getc.c + $(XCC) -S $(CFLAGS) getc.c + +getc.o: getc.s + $(AS) $(ASFLAGS) -o getc.o getc.s + +getc.elf: getc.o + $(LD) $(LDFLAGS) -o $@ getc.o -lbwio -lgcc clean: - -rm -f first.elf *.s *.o startup.map *.a *~ + -rm -f *.elf *.s *.o startup.map *.a *~ diff --git a/src/clocktest.c b/src/clocktest.c new file mode 100644 index 0000000..6cf1c36 --- /dev/null +++ b/src/clocktest.c @@ -0,0 +1,19 @@ +#include <bwio.h> +#include <ts7200.h> + +int main(){ + bwsetfifo(COM2,OFF); + bwsetspeed(COM2, 115200); + volatile unsigned int Count; + unsigned int * load= (unsigned int *) (TIMER3_BASE + LDR_OFFSET); + unsigned int * control= (unsigned int *) (TIMER3_BASE + CRTL_OFFSET); + unsigned int * read = (unsigned int *) (TIMER3_BASE + VAL_OFFSET); + *load = 508000; + *control = ENABLE_MASK | (MODE_MASK | CLKSEL_MASK); + while(1){ + Count = *read; + //bwprintf(COM2,"LOAD: %d\n\r", *load); + bwprintf(COM2,"VAL: %d\n\r", Count); + } + return 0; +} diff --git a/src/first.map b/src/first.map index 3ea6cb0..90c606a 100644 --- a/src/first.map +++ b/src/first.map @@ -1,10 +1,6 @@ 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) +../lib/libbwio.a(bwio.o) clocktest.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) @@ -32,66 +28,53 @@ bss 0x0000000000000000 0x0 *(.bss) 0x0000000000000000 _BssEnd = . -text 0x0000000000000000 0x133c +text 0x0000000000000000 0xef0 *(.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 + .text 0x0000000000000000 0xa4 clocktest.o + 0x0000000000000000 main + .text 0x00000000000000a4 0xc54 ../lib/libbwio.a(bwio.o) + 0x000000000000041c bwputr + 0x0000000000000988 bwi2a + 0x00000000000000a4 bwsetfifo + 0x0000000000000278 bwputc + 0x00000000000006d8 bwa2d + 0x000000000000016c bwsetspeed + 0x000000000000033c c2x + 0x0000000000000780 bwa2i + 0x0000000000000620 bwgetc + 0x0000000000000844 bwui2a + 0x00000000000009ec bwformat + 0x0000000000000518 bwputw + 0x0000000000000cc0 bwprintf + 0x000000000000039c bwputx + 0x000000000000049c bwputstr + .text 0x0000000000000cf8 0x110 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o) + 0x0000000000000cf8 __udivsi3 + 0x0000000000000df0 __aeabi_uidivmod + .text 0x0000000000000e08 0xcc /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o) + 0x0000000000000e08 __umodsi3 + .text 0x0000000000000ed4 0x4 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o) + 0x0000000000000ed4 __aeabi_ldiv0 + 0x0000000000000ed4 __div0 + 0x0000000000000ed4 __aeabi_idiv0 *(.got) *(.got.plt) - .got.plt 0x0000000000001264 0xc startup.o - 0x0000000000001264 _GLOBAL_OFFSET_TABLE_ + .got.plt 0x0000000000000ed8 0xc clocktest.o + 0x0000000000000ed8 _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) + .rodata 0x0000000000000ee4 0xc clocktest.o *(.glue_7) *(.glue_7t) .rel.dyn -LOAD startup.o -LOAD ../lib/libmycanvas.a -LOAD ../lib/libmyclock.a +LOAD clocktest.o 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) +OUTPUT(clocktest.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) +.comment 0x0000000000000000 0x24 + .comment 0x0000000000000000 0x12 clocktest.o + .comment 0x0000000000000012 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) diff --git a/src/getc.c b/src/getc.c new file mode 100644 index 0000000..a595620 --- /dev/null +++ b/src/getc.c @@ -0,0 +1,14 @@ +#include <bwio.h> +#include <mycanvas.h> +int main() +{ + bwsetfifo(COM2, OFF); + bwsetspeed(COM2, 115200); + int i = 0; + char display; + for(;i<10;i++){ + display=bwgetc(COM2); + bwputc(COM2, display); + MOVE_RIGHT(1); + } +} diff --git a/src/libsrc/Makefile b/src/libsrc/Makefile index a932d94..774204d 100644 --- a/src/libsrc/Makefile +++ b/src/libsrc/Makefile @@ -1,4 +1,3 @@ -# # Makefile for busy-wait IO tests # XCC = /u/wbcowan/gnuarm-4.0.2/arm-elf/bin/gcc @@ -16,11 +15,14 @@ ASFLAGS = -mcpu=arm920t -mapcs-32 ARFLAGS = rcs -all: bwio.a +all: bwio.a bwio.s: bwio.c $(XCC) -S $(CFLAGS) bwio.c +cmd.s: cmd.c + $(XCC) -S $(CFLAGS) cmd.c + mycanvas.s: mycanvas.c $(XCC) -S $(CFLAGS) mycanvas.c @@ -31,6 +33,9 @@ myclock.s: myclock.c bwio.o: bwio.s $(AS) $(ASFLAGS) -o bwio.o bwio.s +cmd.o: cmd.s + $(AS) $(ASFLAGS) -o cmd.o cmd.s + mycanvas.o: mycanvas.s $(AS) $(ASFLAGS) -o mycanvas.o mycanvas.s @@ -40,14 +45,18 @@ myclock.o: myclock.s bwio.a: bwio.o $(AR) $(ARFLAGS) $@ bwio.o +cmd.a: cmd.o + $(AR) $(ARFLAGS) $@ cmd.o + mycanvas.a: mycanvas.o $(AR) $(ARFLAGS) $@ mycanvas.o myclock.a: myclock.o $(AR) $(ARFLAGS) $@ myclock.o -install: bwio.a mycanvas.a myclock.a +install: bwio.a mycanvas.a myclock.a cmd.a mv bwio.a ../../lib/libbwio.a + mv cmd.a ../../lib/libcmd.a mv mycanvas.a ../../lib/libmycanvas.a mv myclock.a ../../lib/libmyclock.a diff --git a/src/libsrc/cmd.c b/src/libsrc/cmd.c new file mode 100644 index 0000000..22ade43 --- /dev/null +++ b/src/libsrc/cmd.c @@ -0,0 +1,15 @@ +#include <bwio.h> +#include <cmd.h> +#include <mycanvas.h> + +int ListenCommand() +{ + CURSOR_POS(20,1); + char FirstChar = bwgetc(COM2); + switch(FirstChar){ + case 'q': + return CMD_HALT; + default: + break; + } +} diff --git a/src/libsrc/mycanvas.c b/src/libsrc/mycanvas.c index 1f92bd4..dda800d 100644 --- a/src/libsrc/mycanvas.c +++ b/src/libsrc/mycanvas.c @@ -1,14 +1,52 @@ -#include <bwio.h> #include <mycanvas.h> -#include <myclock.h> -void DrawClock(int* ClockCount) +void DrawLine_H(const char Element, const int Length) { - 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); + int i = 0; + for(; i<Length; i++){ + bwputc(COM2,Element); + } +} + +void DrawLine_V(const char Element, const int Length) +{ + int i = 0; + for(; i<Length; i++){ + bwputc(COM2,Element); + MOVE_LEFT(1); + MOVE_DOWN(1); + } +} + +void DrawClock(Clock *MyClock){ + if(MyClock->bChanged !=0){ + unsigned int Count = MyClock->ClockCount; + unsigned int Tenth = Count % 10; + unsigned int Seconds = (Count % 100 )/ 10; + unsigned int Tens = (Count % 600) /100; + unsigned int Minute = Count/600; + CURSOR_POS(10, 66); + bwprintf(COM2,"%d:%d%d:%d\n\r",Minute,Tens,Seconds,Tenth); + } +} + +void DrawPanel() +{ + CURSOR_POS(1,1); + //DrawLine_H('#',80); + CURSOR_POS(2,60); + DrawLine_V('|', 20); + CURSOR_POS(32,1); + //DrawLine_H('#', 79); + CURSOR_POS(2,80); + DrawLine_V('#', 25); + CURSOR_POS(2,1); + DrawLine_V('#', 25); + CURSOR_POS(23,3); + DrawLine_V('>', 3); + CURSOR_POS(23,4); + DrawLine_V('>', 3); + CURSOR_POS(26,1); + //DrawLine_H('#', 79); + } diff --git a/src/libsrc/myclock.c b/src/libsrc/myclock.c index b76cdeb..47bdf58 100644 --- a/src/libsrc/myclock.c +++ b/src/libsrc/myclock.c @@ -1,29 +1,30 @@ -#include <bwio.h> #include <myclock.h> #include <ts7200.h> - -void InitClockCount(int* ClockCount, int* LastTimerValue) +void InitClockCount(Clock *MyClock) { - *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; + MyClock->ClockCount = 0; + MyClock->LastTimerValue = CLOCK_LOAD_VALUE; + unsigned int* Clock3LoadRegister = (unsigned int *) (TIMER3_BASE + LDR_OFFSET); + unsigned int* Clock3ControlRegister = (unsigned int *) (TIMER3_BASE + CRTL_OFFSET); + unsigned int ClockConfig = MODE_MASK | CLKSEL_MASK; // set interval *Clock3LoadRegister = CLOCK_LOAD_VALUE; // enable clock - *Clock3ControlRegister = ENABLE_MASK; - bwprintf(COM2,"InitClock, ClockCount %d, LastTimerValue: %d\n\r",*ClockCount, *LastTimerValue); + *Clock3ControlRegister = ENABLE_MASK | ClockConfig; } -void UpdateClock(int* ClockCount, int* LastTimerValue) +void UpdateClock(Clock *MyClock) { - 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; + unsigned int* TimerValueRegister = (unsigned int *) (TIMER3_BASE + VAL_OFFSET); + unsigned int CurrentTimerValue = *TimerValueRegister; + + if(CurrentTimerValue > MyClock->LastTimerValue){ + MyClock->ClockCount = MyClock->ClockCount + 1; + MyClock->bChanged = 1; + } else { + MyClock->bChanged = 0; + } + + MyClock->LastTimerValue = CurrentTimerValue; } diff --git a/src/libsrc/test b/src/libsrc/test new file mode 100755 index 0000000000000000000000000000000000000000..aaa0251e30ba4f7c5d80991c798999c6c55dc6b5 GIT binary patch literal 8728 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 TI6t}V`FJN?WbLpRx7Pn}Vo(tp literal 0 HcmV?d00001 diff --git a/src/libsrc/test.c b/src/libsrc/test.c new file mode 100644 index 0000000..6374727 --- /dev/null +++ b/src/libsrc/test.c @@ -0,0 +1,52 @@ +#include <stdio.h> + +#define ESC 27 +#define CSI_LEFT printf("%c[1D",27) +#define CLEAR_SCREEN printf("%c[2J",27) +#define pos(row,col) printf("%c[%d;%dH",ESC,row,col) + +void DrawLine(char elem, int len) +{ + for(int i = 0; i<len; i++){ + printf("%c",elem); + } +} + +void DrawLine_V(char elem, int len) +{ + for(int i = 0; i<len; i++){ + printf("%c",elem); + printf("%c[1B",ESC); + CSI_LEFT; + } +} + + +int main() +{ + CLEAR_SCREEN; + pos(1,1); + DrawLine('#',80); + pos(2,60); + DrawLine_V('|', 30); + pos(32,1); + DrawLine('#', 79); + pos(2,80); + DrawLine_V('#', 35); + pos(2,1); + DrawLine_V('#', 35); + pos(33,3); + DrawLine_V('>', 3); + pos(33,4); + DrawLine_V('>', 3); + pos(36,1); + DrawLine('#', 79); + printf("\n"); + + + while(1){ + pos(10, 66); + printf("00:00:0"); + } + return 0; +} diff --git a/src/startup.c b/src/startup.c index aa42206..313ba42 100644 --- a/src/startup.c +++ b/src/startup.c @@ -1,30 +1,33 @@ #include <bwio.h> +#include <cmd.h> #include <error.h> #include <mycanvas.h> #include <myclock.h> -int initialize(int* ClockCount, int* LastTimerValue) +int initialize(Clock* MyClock) { 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); + InitClockCount(MyClock); return 0; } -int runloop(int* ClockCount, int* LastTimerValue) +int runloop(Clock* MyClock) { while(1){ - UpdateClock(ClockCount, LastTimerValue); - bwprintf(COM2, "ClockCount %d\n\r", *ClockCount); - DrawClock(ClockCount); + UpdateClock(MyClock); + DrawClock(MyClock); + if(ListenCommand() == CMD_HALT) break; } return 0; } int main(){ - unsigned int ClockCount, LastTimerValue; - unsigned int InitCode = initialize(&ClockCount, &LastTimerValue); + volatile Clock MyClock = {0,0,0}; + unsigned int InitCode = initialize(&MyClock); if(InitCode) return InitCode; - return runloop(&ClockCount, &LastTimerValue); + CLEAR_SCREEN; + // DrawPanel(); + return runloop(&MyClock); } diff --git a/src/upload b/src/upload index 5ff7c25..0563148 100755 --- a/src/upload +++ b/src/upload @@ -1,3 +1,3 @@ #! /bin/bash -mv $1 /u/cs452/tftp/ARM/b26feng/ +cp $1 /u/cs452/tftp/ARM/b26feng/ -- GitLab