Add lab files

This commit is contained in:
Michael Hayes
2013-09-02 21:23:07 +12:00
parent be4e83bad5
commit d1383b45bc
84 changed files with 2886 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
# File: Makefile
# Author: M. P. Hayes, UCECE
# Date: 12 Sep 2010
# Descr: Makefile for lab1-ex3
# Definitions.
CC = avr-gcc
CFLAGS = -mmcu=atmega32u2 -Os -Wall -Wstrict-prototypes -Wextra -g -I. -I../../drivers/avr
OBJCOPY = avr-objcopy
SIZE = avr-size
DEL = rm
# Default target.
all: lab1-ex3.out
# Compile: create object files from C source files.
lab1-ex3.o: lab1-ex3.c ../../drivers/avr/system.h button.h led.h
$(CC) -c $(CFLAGS) $< -o $@
system.o: ../../drivers/avr/system.c ../../drivers/avr/system.h
$(CC) -c $(CFLAGS) $< -o $@
button.o: button.c button.h
$(CC) -c $(CFLAGS) $< -o $@
led.o: led.c led.h
$(CC) -c $(CFLAGS) $< -o $@
# Link: create ELF output file from object files.
lab1-ex3.out: lab1-ex3.o system.o button.o led.o
$(CC) $(CFLAGS) $^ -o $@ -lm
$(SIZE) $@
# Target: clean project.
.PHONY: clean
clean:
-$(DEL) *.o *.out *.hex
# Target: program project.
.PHONY: program
program: lab1-ex3.out
$(OBJCOPY) -O ihex lab1-ex3.out lab1-ex3.hex
dfu-programmer atmega32u2 erase; dfu-programmer atmega32u2 flash lab1-ex3.hex; dfu-programmer atmega32u2 start
+46
View File
@@ -0,0 +1,46 @@
# File: Makefile
# Author: M. P. Hayes, UCECE
# Date: 11 Sep 2010
# Descr: Makefile for lab1-lab1-ex3
CC = gcc
CFLAGS = -Wall -Wstrict-prototypes -Wlab1-extra -g -I. -I../../drivers/test
DEL = rm
# Default target.
all: lab1-lab1-ex3
# Compile: create object files from C source files.
lab1-lab1-ex3-test.o: lab1-lab1-ex3.c ../../drivers/test/system.h io.h
$(CC) -c $(CFLAGS) $< -o $@
mgetkey-test.o: ../../drivers/test/mgetkey.c ../../drivers/test/mgetkey.h
$(CC) -c $(CFLAGS) $< -o $@
pio-test.o: ../../drivers/test/pio.c ../../drivers/test/avrtest.h ../../drivers/test/pio.h ../../drivers/test/system.h
$(CC) -c $(CFLAGS) $< -o $@
system-test.o: ../../drivers/test/system.c ../../drivers/test/avrtest.h ../../drivers/test/mgetkey.h ../../drivers/test/pio.h ../../drivers/test/system.h
$(CC) -c $(CFLAGS) $< -o $@
io-test.o: io.c io.h
$(CC) -c $(CFLAGS) $< -o $@
# Link: create lab1-executable file from object files.
lab1-lab1-ex3: lab1-lab1-ex3-test.o mgetkey-test.o pio-test.o system-test.o io-test.o
$(CC) $(CFLAGS) $^ -o $@ -lrt
# Clean: delete derived files.
.PHONY: clean
clean:
-$(DEL) lab1-lab1-ex3 lab1-lab1-ex3-test.o mgetkey-test.o pio-test.o system-test.o io-test.o
+17
View File
@@ -0,0 +1,17 @@
#include <avr/io.h>
#include "button.h"
/** Return non-zero if button pressed. */
int button_pressed_p (void)
{
/* TODO. */
}
/** Initialise button1. */
void button_init (void)
{
/* TODO. */
}
+11
View File
@@ -0,0 +1,11 @@
#ifndef BUTTON_H
#define BUTTON_H
/** Return non-zero if button pressed. */
int button_pressed_p (void);
/** Initialise button1. */
void button_init (void);
#endif
+42
View File
@@ -0,0 +1,42 @@
# File: Makefile
# Author: M. P. Hayes, UCECE
# Date: 11 Sep 2010
# Descr: Makefile for ex3 docs
DEL = rm
all: file_dependencies.pdf module_dependencies.pdf makefile_dependencies.pdf build_dependencies.pdf callgraph.pdf
file_dependencies.pdf: files.d
../../../etc/graphdeps.py $< --out $@
module_dependencies.pdf: modules.d
../../../etc/graphdeps.py $< --modules --out $@
makefile_dependencies.pdf: ../Makefile
../../../etc/graphdeps.py $< --out $@
build_dependencies.pdf: ../Makefile
../../../etc/graphdeps.py $< --out $@ --showops
callgraph.pdf: callgraph.d
../../../etc/graphdeps.py --calls --modules $< --out $@ --showops
files.d: ../Makefile
(cd ..; ../../etc/makemake.py --relpath --files . . ../../drivers ../../drivers/avr ../../utils ../../extra --exclude system.h > doc/files.d)
modules.d: ../Makefile
(cd ..; ../../etc/makemake.py --relpath --modules . . ../../drivers ../../drivers/avr ../../utils ../../extra --exclude system > doc/modules.d)
callgraph.d: ../Makefile
(cd ..; ../../etc/makemake.py --cc="avr-gcc" --cflags="-Os -mmcu=atmega32u2" --relpath --calls . . ../../drivers ../../drivers/avr ../../utils ../../extra --exclude system.h > doc/callgraph.d)
# Clean: delete derived files.
.PHONY: clean
clean:
-$(DEL) *.d *.pdf
+16
View File
@@ -0,0 +1,16 @@
Running make in this directory will generate a number of PDF graphs.
In the callgraph, the arrows means "calls". In the dependency graphs,
the arrows means "requires" (or "depends upon").
callgraph.pdf This shows the callgraph, i.e., what functions each
function in the program calls.
module_dependencies.pdf This shows the dependencies between the modules.
file_dependencies.pdf This shows the dependencies between the files.
makefile_dependencies.pdf This shows the dependencies required by make when
building the program.
build_dependencies.pdf This is like makefile_dependencies.pdf but shows
the operations performed to generate the new file.
callgraph.d This shows the callgraph in text format.
files.d This shows the file dependencies in text format.
modules.d This shows the module dependencies in text format.
+24
View File
@@ -0,0 +1,24 @@
#include "button.h"
#include "led.h"
#include "system.h"
int main (void)
{
system_init ();
led_init ();
button_init ();
while (1)
{
if (button_pressed_p ())
{
led_on ();
}
else
{
led_off ();
}
}
}
+23
View File
@@ -0,0 +1,23 @@
#include <avr/io.h>
#include "led.h"
/** Turn LED1 on. */
void led_on (void)
{
/* TODO! */
}
/** Turn LED1 off. */
void led_off (void)
{
/* TODO! */
}
/** Initialise LED1. */
void led_init (void)
{
/* TODO! */
}
+14
View File
@@ -0,0 +1,14 @@
#ifndef LED_H
#define LED_H
/** Turn LED1 on. */
void led_on (void);
/** Turn LED1 off. */
void led_off (void);
/** Initialise LED1. */
void led_init (void);
#endif